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

Parsing Antlr4语法操作在丢弃的解析上运行,parsing,antlr,Parsing,Antlr,我正在通过向语法中添加操作来构建自己的AST数据结构(就像我很久以前对yacc所做的一样——但这次使用的是Antlr4)。虽然生成的解析器构建了正确的AST,但它占用了大量内存。一点插装表明,由我的操作构造并由语法规则返回的对象中,多达95%被丢弃,并且不会最终进入最终的树。我怀疑这是由于生成的解析器使用了回溯策略,而不是仅仅依赖于前瞻。有没有办法禁用回溯,这样我就可以验证这个假设?我正在使用VisualStudio下的antlr-csharp-4.0.1系统 ANTLR 4在任何场景中都不使用

我正在通过向语法中添加操作来构建自己的AST数据结构(就像我很久以前对yacc所做的一样——但这次使用的是Antlr4)。虽然生成的解析器构建了正确的AST,但它占用了大量内存。一点插装表明,由我的操作构造并由语法规则返回的对象中,多达95%被丢弃,并且不会最终进入最终的树。我怀疑这是由于生成的解析器使用了回溯策略,而不是仅仅依赖于前瞻。有没有办法禁用回溯,这样我就可以验证这个假设?我正在使用VisualStudio下的antlr-csharp-4.0.1系统

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

您的ANTLR 4版本已明显过时。最新版本的C#target可在此页面上找到: