私は基本的な 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")
が、その後は何も得られません。
では、ハングしている理由を見つけて停止するにはどうすればよいでしょうか。または、このセクションをバイパスすることもできます (デバッグを無効にすることはできますか?)。 .