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