📄 compliersurface.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 + -