我理解理论上把parsing器规则和词法分析规则分开的理论,但是ANTLR这两个陈述之间的实际区别是什么: my_rule: … ; MY_RULE: … ; 他们是否导致不同的AST树? 不同的performance? 潜在的歧义?
我正在为一个学校项目创build一个简单的编程语言。 我使用ANTLR 4从我的语法生成一个词法分析器和一个parsing器。 到目前为止,我一直使用ANTLR的监听模式来应用编程语言的实际function。 现在我想实现if / else语句,但是我不确定这些实际上是否可以在使用监听器模式时实现,因为ANTLR在使用监听器时决定以何种顺序来遍历分析树,我想象一下if /否则语句将需要根据语句中的哪个条件满足而在parsing树周围跳转。 任何人都可以告诉我是否可以使用ANTLR来实现if / else语句,还是必须自己实现访问者模式? 另外,任何人都可以给出一个非常简单的例子来执行这个语句吗?
我一直在寻找一个关于这一点,我找不到有用的东西,真的帮助我build立一个AST。 我已经知道ANTLR4并不像ANTLR3那样build立AST。 每个人都说:“嗨,使用游客!”,但我怎么能做到这一点,我找不到任何例子或更详细的解释… 我有一个语法必须像C,但用葡萄牙语(葡萄牙语编程语言)写的每个命令。 我可以使用ANTLR4轻松生成分析树。 我的问题是:我现在需要做什么来创build一个AST? 顺便说一句,我正在使用Java和IntelliJ … 编辑1:我能得到的最接近的是使用这个话题的答案: 是否有一个简单的例子,使用antlr4从java源代码创build一个AST并提取方法,variables和注释? 但它只打印访问方法的名称.. 由于第一次尝试不适合我,因为我期望,我试图从ANTLR3使用本教程 ,但我不知道如何使用StringTamplate,而不是ST … 阅读这本书The Definitive ANTLR 4 Reference我也找不到任何与AST有关的东西。 编辑2:现在我有一个类来创buildDOT文件,我只需要弄清楚如何正确使用访问者
我正在为C做一个静态分析器。我使用ANTLR来完成词法分析器和分析器,其中生成Java代码。 ANTLR是否通过options {output=AST;}自动为我们构buildAST? 还是我必须自己做树? 如果是这样,那么如何吐出AST上的节点呢? 我目前认为AST上的节点将用于制作SSA,然后是数据stream分析,以便制作静态分析器。 我在正确的道路上?
我想开始使用ANTLR,但花了几个小时在antlr.org网站上查看示例之后,我仍然无法清楚地理解Java过程的语法。 有没有一个简单的例子,像ANTLR通过parsing器定义和Java源代码一起实现的一个四操作计算器?
什么是ANTLR中的语义谓词 ?