我在项目中使用antlr4 JavaScript运行时来解析自定义布尔查询语言。我注意到一些更复杂的查询解析速度相当慢,我四处寻找解决方案。
Java文档非常好,通常JavaScript运行时几乎完成了Java所做的一切,所以我找到了一个在这个github问题中看起来不错的解决方案:https://github.com/antlr/antlr4/issues/192
它建议采用两阶段解析策略,首先将错误策略设置为BailErrorStrategy
并使用PredictionMode.SLL
,如果出现错误,请回退到DefaultErrorStrategy
和PredictionMode.LL
我的问题是:如何使用JavaScript运行时设置PredictionMode?我从npm使用antlr4版本4.6.0,而ParserATNSimulater似乎没有像Java文档建议的setPredictionMode
方法。任何帮助将不胜感激!
答案 0 :(得分:0)
在源代码中查看ParserATNSimulator中有一个公共属性(this.predictionMode
,第272行)。应该这样做,对吗?