帮我用java写一个带GUI界面的词法分析器,需要判断每行的每个字段,并且可以区分同一行不同的字段
时间: 2023-07-16 13:13:07 浏览: 45
好的,以下是一个简单的带GUI界面的词法分析器示例,可以区分同一行不同的字段:
```java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Lexer extends JFrame {
private JTextArea inputArea, outputArea;
private JButton analyzeButton;
public Lexer() {
setTitle("词法分析器");
setSize(600, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
inputArea = new JTextArea();
outputArea = new JTextArea();
outputArea.setEditable(false);
JScrollPane scrollPane1 = new JScrollPane(inputArea);
scrollPane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
scrollPane1.setPreferredSize(new Dimension(300, 300));
JScrollPane scrollPane2 = new JScrollPane(outputArea);
scrollPane2.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
scrollPane2.setPreferredSize(new Dimension(300, 300));
analyzeButton = new JButton("分析");
analyzeButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
String input = inputArea.getText();
String[] lines = input.split("\\n");
outputArea.setText("");
for (int i = 0; i < lines.length; i++) {
String[] tokens = lines[i].split("\\s+");
outputArea.append("第" + (i+1) + "行:\n");
for (int j = 0; j < tokens.length; j++) {
outputArea.append(" 字段" + (j+1) + ":" + tokens[j] + "\n");
}
}
}
});
panel.add(scrollPane1, BorderLayout.WEST);
panel.add(scrollPane2, BorderLayout.EAST);
panel.add(analyzeButton, BorderLayout.SOUTH);
setContentPane(panel);
setVisible(true);
}
public static void main(String[] args) {
new Lexer();
}
}
```
这个例子使用了Java Swing库来创建GUI界面。通过输入框输入需要分析的文本,然后点击“分析”按钮进行分析。每行的字段使用空格进行分割,可以根据需要修改分隔符。
运行该程序后,会弹出一个窗口,用户可以在左侧输入需要分析的文本,在右侧查看分析结果。