我有一个正常工作的ANTLR解析器和树语法。我希望用户在JTextarea中输入语法(我使用java swing进行gui开发)。一旦语法在JTextarea中,用户应按下按钮(运行),语法结果(动作)将显示在另一个文本区域中。
为简单起见,最简单的HelloWorld ANTLR语法(解析器和树语法)可用于演示如何从Java Swing gui的JTextarea运行ANTLR语法。
我没有发现任何与ANSR相关的内容与JavaSwing GUI或任何说明如何从Java Swing GUI的JTextArea运行ANTLR语法的内容。
任何想法/建议/简单示例/演示?
修改的溶液
下面是我的GUI类中的一部分代码,用于处理模拟按钮。用户在JTextarea中输入ANTLR语法。
private void addReRunButtonListener() {
btnReRun.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
//for Random Simulation
if(rdbtnRandomWithSeed.isSelected())
{
String line = "";
String nl ;
Process p = Runtime.getRuntime().exec("java org.antlr.Tool protocol.g protocolWalker.g");
p.waitFor();
p = Runtime.getRuntime().exec("javac protocolLexer.java protocolParser.java protocolWalker.java SimulatorRandom.java");
p.waitFor();
p = Runtime.getRuntime().exec("java RandomSimulator");
OutputStreamWriter stdin = new OutputStreamWriter(p.getOutputStream ());
stdin.write(simAlgoEdit.getText()+"\n");
stdin.close();
BufferedReader bri = new BufferedReader
(new InputStreamReader(p.getInputStream()));
nl = bri.readLine();
while (nl != null) {
line = line + nl + "\n";
nl = bri.readLine();
}
bri.close();
System.out.println("Done.");
simGraphicsArea.setText(line);
graphicsArea.setText(line);
}
上面的代码也抓取输出并将其插入我的GUI中的另一个JTextarea中。 @trashgod:非常感谢你的帮助。
谢谢
答案 0 :(得分:3)
您可以使用ProcessBuilder
唤起ANTLR,就像使用command line一样。有一个相关的例子here。您可以使用append()
的{{1}}方法显示JTextArea
的结果。