2

ANTLR パーサーとツリー文法が正常に動作しています。ユーザーに JTextarea に文法を入力してもらいたい (GUI 開発に Java swing を使用している)。文法が JTextarea に入ったら、ユーザーがボタンを押す (実行) と、文法の結果 (アクション) が別のテキスト領域に表示されます。

簡単にするために、最も単純な HelloWorld ANTLR 文法 (パーサーとツリー文法) を使用して、Java Swing gui の JTextarea から ANTLR 文法を実行する方法を示すことができます。

ANTLR を JavaSwing GUI に関連付けるものや、Java Swing GUI の JTextArea から ANTLR Grammar を実行する方法を示すものは見つかりませんでした。

考え/提案/簡単な例/デモンストレーションはありますか?
EDIT-Solution
以下は、シミュレート ボタンを処理する 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: ご協力ありがとうございます。

ありがとうございました

4

1 に答える 1

3

コマンド ラインProcessBuilderと同じようにANTLR を呼び出すことができます。ここに関連する例があります。のメソッドを使用して、 の結果を表示できます。append()JTextAreastdout

于 2012-11-01T00:46:19.903 に答える