5
我使用
parser.addErrorListener(new DiagnosticErrorListener());
parser.getInterpreter().setPredictionMode(PredictionMode.LL_EXACT_AMBIG_DETECTION);
但是当我跑我的解析器我没有看到任何输出的影响“reportAmbiguity ......”作为ANTLR4书所示。我怎么能看到我的语法中的歧义?
龙版本:
的解析速度我目前正与ANTLR4获得约90KB/s的8核心至强2.67ghz机E5640上。 Lexin速度约为5mb/s,所以很好。在尝试优化解析器时,我发现了两个阶段解析,第一阶段使用PredictionMode.SLL解析,如果失败,则第二阶段使用PredictionMode.LL。使用这两种模式很有效,而且我看到一些输入在SLL中获得的成功时间比在LL所用的时间要少。
问题是我希望所有(或大多数)SLL成功。我想我需要从我的语法中删除含糊不清的词来实现这一点。我想ANTLR4告诉我任何含糊之处,以便我可以解决它们。
删除我的评论。它似乎没有足够小心。 – 2015-04-04 16:23:16
我想这个问题很难解决,没有一个混凝土语法,你有吗? – CoronA 2015-04-11 11:13:10