⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 compliersurface.java

📁 C语言实现的SIMPLE语言词法分析器
💻 JAVA
字号:
package complier.java;

import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;


public class ComplierSurface extends JFrame implements ActionListener
{
    JButton jbLookHead = new JButton();
    JButton jbLookSource = new JButton();
    JButton jbTocken = new JButton();
    JTextArea jtaSource = new JTextArea();
    JTextArea jtaDisplay = new JTextArea();
    JButton jbSyntax = new JButton();
    JButton jbDestCode = new JButton();
    JButton jbRun = new JButton();
    JButton jbExit = new JButton();

    public  ComplierSurface()
    {
        initSurface();
        initSourceFile();
    }
    public void initSurface() 
    {
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setTitle("编译器示例程序");
        
        jbLookHead.setBounds(new Rectangle(30, 25, 115, 40));
        jbLookHead.setEnabled(true);
        jbLookHead.setFont(new java.awt.Font("Dialog", 0, 15));
        jbLookHead.setSelectedIcon(null);
        jbLookHead.setText("查看头文件");
        this.getContentPane().setLayout(null);
        jbLookSource.setBounds(new Rectangle(30, 90, 115 ,40));
        jbLookSource.setFont(new java.awt.Font("Dialog", 0, 15));
        jbLookSource.setText("源代码");
        jbTocken.setBounds(new Rectangle(30, 155, 115, 40));
        jbTocken.setFont(new java.awt.Font("Dialog", 0, 15));
        jbTocken.setText("词法分析");
        jtaSource.setText("");
        jtaSource.setBounds(new Rectangle(184, 15, 479, 76));
        JScrollPane jspSource=new JScrollPane(jtaSource);
        jspSource.setBounds(new Rectangle(184, 15, 479, 76));
        jtaDisplay.setText("");
        jtaDisplay.setBounds(new Rectangle(184, 116, 483, 349));
        JScrollPane jspDisplay=new JScrollPane(jtaDisplay);
        jspDisplay.setBounds(new Rectangle(184, 116, 483, 349));
        jbSyntax.setBounds(new Rectangle(30, 220, 115, 39));
        jbSyntax.setFont(new java.awt.Font("Dialog", 0, 15));
        jbSyntax.setText("语法分析");
        jbDestCode.setBounds(new Rectangle(30, 285, 115, 40));
        jbDestCode.setFont(new java.awt.Font("Dialog", 0, 13));
        jbDestCode.setText("目标代码生成");
        jbRun.setBounds(new Rectangle(30, 350, 115, 40));
        jbRun.setFont(new java.awt.Font("Dialog", 0, 15));
        jbRun.setMaximumSize(new Dimension(55, 25));
        jbRun.setMinimumSize(new Dimension(55, 25));
        jbRun.setText("运行程序");
        jbExit.setBounds(new Rectangle(30, 415, 115, 40));
        jbExit.setFont(new java.awt.Font("Dialog", 0, 15));
        jbExit.setText("退出");
        
        this.jbLookHead.addActionListener(this);
        this.jbLookSource.addActionListener(this);
        this.jbTocken.addActionListener(this);
        this.jbSyntax.addActionListener(this);
        this.jbDestCode.addActionListener(this);
        this.jbRun.addActionListener(this);
        this.jbExit.addActionListener(this);
        
        this.jtaDisplay.setEditable(false);
        
        this.getContentPane().add(jspSource, null);
        this.getContentPane().add(jspDisplay, null);
        this.getContentPane().add(jbLookHead, null);
        this.getContentPane().add(jbRun, null);
        this.getContentPane().add(jbExit, null);
        this.getContentPane().add(jbLookSource, null);
        this.getContentPane().add(jbTocken, null);
        this.getContentPane().add(jbSyntax, null);
        this.getContentPane().add(jbDestCode, null);
        this.setSize(700,520);
        this.setVisible(true);
    }
    private void initSourceFile()
    {
        new Display(this.jtaSource,"input.txt");
    }
    public static void main(String s[])
    {
        new ComplierSurface();
    }
    public void actionPerformed(ActionEvent e)
    {
        if(e.getSource()==this.jbLookHead)
        {
            new Display(this.jtaDisplay,"tocken.h");
        }else if(e.getSource()==this.jbLookSource)
        {
            new Display(this.jtaDisplay,"tocken.cpp");
        }else if(e.getSource()==this.jbTocken)
        {
            tocken();
        }else if(e.getSource()==this.jbSyntax)
        {
            info("暂时不能进行语法分析");
        }else if(e.getSource()==this.jbDestCode)
        {
            info("暂时不能生成目标代码");
        }else if(e.getSource()==this.jbRun)
        {
            info("暂时不能运行完整的编译器");
        }else if(e.getSource()==this.jbExit)
        {
            System.exit(0);
        }else 
        {}
    }
    private void tocken()
    {
        try
        {
            Runtime run = Runtime.getRuntime();
            run.exec("D:\\java\\work\\complier\\complier\\c\\TOCKEN.exe");
            run.exec("C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE D:\\java\\work\\complier\\complier\\c\\tocken.xml");
           
            new Display(this.jtaDisplay,"tocken.txt");
        }
        catch(Exception e)
        {
            e.printStackTrace();
            info("错误:"+e.getMessage());
        }
    }
    private void info(String info)
    {
        JOptionPane.showMessageDialog(this,info);
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -