Parsing ANTLR解析器在proxy.handshake调用时挂起

Parsing ANTLR解析器在proxy.handshake调用时挂起,parsing,antlr,antlr3,parser-generator,ecma262,Parsing,Antlr,Antlr3,Parser Generator,Ecma262,我正在尝试使用一个基本的ECMAScript解析器,并找到了一个完整的ANTLR语法,它似乎编译正常,并生成相应的Lexer/parser/Walker Java文件。 (在Eclipse 3.5内部运行) 但是,当实际尝试将其用于一些简单的测试代码(如下所示)时,它只是在尝试创建解析器时挂起: CharStream MyChars = new ANTLRFileStream(FileName); // FileName is valid ES3Lexer MyLexer = new ES3Le

我正在尝试使用一个基本的ECMAScript解析器,并找到了一个完整的ANTLR语法,它似乎编译正常,并生成相应的Lexer/parser/Walker Java文件。
(在Eclipse 3.5内部运行)

但是,当实际尝试将其用于一些简单的测试代码(如下所示)时,它只是在尝试创建解析器时挂起:

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”)
,但在这一行之后,我什么也得不到


那么,我该如何找出它挂起的原因,并停止它——或者甚至绕过这一部分(我可以/应该禁用调试吗?),只要它可以工作并允许我继续做有用的事情。

我通过在ANTLR IDE插件中禁用调试代码的生成来解决这个问题

此设置在Windows>首选项>ANTLR>代码生成下

展开“常规”部分并取消选中“调试”选项:



(来源:)

在Antlr中有一个-debug选项,它会生成额外的代码,从而允许远程调试。当代码暂停在

dbg.Handshake();
调用时,它正在等待远程调试器连接到它。在AntlWorks中,您可以使用“运行-->远程调试”选项连接到它并逐步完成代码

如果不希望使用远程调试功能,请从ANTLR选项文本框中删除-debug选项

文件-->首选项-->常规-->ANTLR选项