Antlr4语法操作在丢弃的解析上运行

时间:2014-05-27 19:56:07

标签: parsing antlr

我通过向语法添加动作来构建我自己的AST数据结构(就像我在很久以前使用yacc一样 - 但这一次,使用Antlr4)。虽然生成的解析器构建正确的AST,但它是一个可怕的内存耗尽。一点点仪器显示,由我的动作构造并由语法规则返回的高达95%的对象被丢弃,并且不会在最终树中结束。我怀疑这是由于生成的解析器使用回溯策略而不是仅依赖于前瞻。有没有办法禁用回溯,所以我可以测试这个假设?我在Visual Studio下使用antlr-csharp-4.0.1系统。

1 个答案:

答案 0 :(得分:0)

ANTLR 4在任何情况下都不使用回溯或推测执行操作。操作仅在实际解析的路径上执行。请注意,如果您有语义谓词,则可以在预测期间执行这些谓词,并且可以多次执行。

您的ANTLR 4版本已过时。可以在此页面上找到最新版本的C#目标:

https://github.com/tunnelvisionlabs/antlr4cs/releases/latest

相关问题