我想知道我们是否可以使用ANTLR版本4构建AST。我找不到使用Antlr4构建它的任何参考。一个答案说,使用Antlr4很容易产生解析树,但我的问题是效率?
它迫使我们爬出整个解析树,而不是抽象的语法树,这不是浏览整个树并使用访客执行任务的有效方法。
我想首先指出两个关键项目:
-
效率不仅仅是简单的执行速度。它也可以应用于内存开销,可维护性以及团队使用一件软件的长期开发策略的有效性。
-
您在争论中挥舞着解析树比AST慢。多年来,我一直在测试Antlr 3和Antlr 4的性能,这一点毫无疑问,Antlr 4的解析树 domberate ASTS在Antlr 3中的性能。
也就是说,在Antlr 4中使用分析树的决定是基于观察到的,即实际分离的解析器和树木的可维护性,而AST在Antlr 3中的ASTS不符合预期可维护性,因此降低了总体效率,以至于它们不再是建议的做法。
此外,ANTLR 4中的自动解析树构造使我能够实现声明规则版本,然后我将其应用于整个Antlrworks 2.这使我能够迅速纠正大型代码库的每个部分,以依靠解析的形状树,没有在最终产品中引入回归错误。