我有运行良好的 ANTLR 解析器和树语法。我希望用户在 JTextarea 中输入语法(我正在使用 java swing 进行 gui 开发)。一旦语法在 JTextarea 中,用户应按下按钮(运行),语法的结果(动作)将显示在另一个文本区域中。
为了简单起见,可以使用最简单的 HelloWorld ANTLR 语法(解析器和树语法)来演示我们如何从 Java Swing gui 的 JTextarea 运行 ANTLR 语法。
我还没有找到任何将 ANTLR 与 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:非常感谢您的帮助。
谢谢