У меня есть парсер ANTLR и древовидная грамматика, которые работают нормально. Я хочу, чтобы пользователь вводил грамматику в JTextarea (я использую Java Swing для разработки графического интерфейса). Как только грамматика находится в JTextarea, пользователь должен нажать кнопку (выполнить), и результат грамматики (действия) должен быть показан в другой текстовой области.
Для простоты можно использовать простейшую грамматику HelloWorld ANTLR (парсер и древовидную грамматику), чтобы продемонстрировать, как мы можем запустить грамматику ANTLR из JTextarea графического интерфейса Java Swing.
Я не нашел ничего, что связывало бы ANTLR с графическим интерфейсом JavaSwing или что-либо, что говорило бы о том, как запускать грамматику ANTLR из JTextArea графического интерфейса Java Swing.
Есть мысли/предложения/простой пример/демонстрация?
РЕДАКТИРОВАТЬ-решение
Ниже приведен фрагмент кода из моего класса GUI, который имеет дело с кнопкой имитации. Пользователь вводит грамматику ANTLR в JTextarea.
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);
}
Приведенный выше код также захватывает вывод и вставляет его в другую область JTextarea в моем графическом интерфейсе. @trashgod: Большое спасибо за помощь.
Спасибо