4

私は基本的な ECMAScript パーサーを動作させようとしており、ECMAScript 3の完全な ANTLR 文法を見つけました。これは正常にコンパイルされ、適切な Lexer/Parser/Walker Java ファイルを生成するように見えます。
( Eclipse 3.5 のANTLR IDE プラグイン内で実行)

ただし、実際に単純なテスト コード ( ANTLR wiki のガイドに従ってください) で使用しようとすると、パーサーを作成しようとするとハングします。

CharStream MyChars = new ANTLRFileStream(FileName); // FileName is valid
ES3Lexer MyLexer = new ES3Lexer(MyChars);
CommonTokenStream MyTokens = new CommonTokenStream(MyLexer);
MyTokens.setTokenSource(MyLexer);
ES3Parser MyParser = new ES3Parser( MyTokens ); // hangs here
ES3Parser.program_return MyReturn = MyParser.program();

問題をコンストラクター内で追跡しES3Parser、そこで関数を呼び出していますproxy.handshake()-この行の前では正常に実行できますSystem.out.println("text")が、その後は何も得られません。

では、ハングしている理由を見つけて停止するにはどうすればよいでしょうか。または、このセクションをバイパスすることもできます (デバッグを無効にすることはできますか?)。 .

4

2 に答える 2

4

Antlr には、リモート デバッグを可能にする追加コードを生成する -debug オプションがあります。コードが

dbg.Handshake();

リモートデバッガーが接続するのを待っています。AntlrWorks では、[実行] --> [リモート デバッグ] オプションを使用して接続し、コードをステップ実行できます。

リモート デバッグ機能を使用しない場合は、ANTLR オプション テキスト ボックスから -debug オプションを削除します。

ファイル --> 環境設定 --> 一般 --> ANTLR オプション

于 2010-03-23T02:57:06.697 に答える
2

ANTLR IDE プラグイン内でデバッグ コードの生成を無効にすることで、これを解決しました。

この設定は、Windows > Preferences > ANTLR > Code Generation の下にあります。

[全般] セクションを展開し、デバッグ オプションのチェックを外します。

https://www.bpsite.net/misc/eclipse-antlr-debug.png
(出典: bpsite.net )

于 2009-11-27T19:57:17.210 に答える