dja*_*min 4 antlr abstract-syntax-tree antlr4
我想知道我们是否可以使用Antlr版本4构建AST.我找不到使用antlr4构建它的任何参考.一个SO答案说,使用只生成解析树的antlr4很容易,但我的问题是效率如何呢?
它迫使我们抓取整个解析树而不是抽象语法树,这不是遍历整个树并使用访问者执行任务的有效方式.
Sam*_*ell 10
我想首先指出两个关键项目:
效率不仅仅包括简单的执行速度.它还可以应用于内存开销,可维护性以及团队创建和/或使用软件所使用的长期开发策略的有效性.
在你的论证中你正在挥手,解析树比AST慢.多年来我一直在测试ANTLR 3和ANTLR 4的性能,此时毫无疑问,ANTLR 4的解析树消除了ANTLR 3中AST的性能.
也就是说,在ANTLR 4中专门使用解析树的决定是基于以下观察:ANTLR 3中分离的解析器和树解析器与AST 的实际可维护性不符合预期的可维护性,因此降低了整体效率,不再是推荐的做法.
此外,ANTLR 4中的自动化解析树构造允许我实现声明性规则版本控制,然后我将其应用于整个ANTLRWorks 2中的代码.这使我能够快速纠正依赖于解析树形状的大型代码库的每个部分,而不会在最终产品中引入回归错误.