首页 > TAG信息列表 > antlr3

使用Java遍历Antlr树

我对Antlr有疑问,我正在用它构建一个简单的解析器,但无法遍历树.我发现了许多在线教程,它们使用了getAst();. Parser类的功能.有人对这个有经验么?我感觉这样做的方式因版本而异. grammar SimpleCalc; options { output=AST; } tokens { PLUS = '+' ; MINUS

java-如何序列化antlr3 AST

我刚刚开始使用antlr3,正在尝试序列化.g语法的AST输出. 谢谢,勒赞解决方法:正如弗拉基米尔(Vladimir)所指出的,您可以使用具有内置序列化功能的自定义AST节点类.您也可以使用树适配器来创建所需的节点类型. 如果只需要序列化而不是反序列化,则可以执行以下操作: ast.toStringTree()

java-如何在ANTLR3 TreeParser中获取行号

我试图在ANTLR3树语法中获得行号(由ANTLR3生成的代码属于TreeParser类). google只找到了ANTLR2的解决方案,可惜在ANTLR3中不起作用.澄清一下,我正在尝试访问.g文件本身中的行号. 我想我必须覆盖一种方法或扩展一个类,我只是不知道哪个. 提前发送 编辑:我应该指出我正在使用Java API

java – 使用ANTLR的嵌套布尔表达式解析器

我正在尝试解析嵌套的布尔表达式并分别获取表达式中的各个条件.例如,如果输入字符串是: (A = a OR B = b OR C = c AND((D = d AND E = e)OR(F = f AND G = g))) 我想以正确的顺序获得条件.即, D = d和E = e 要么F = f AND G = g和A = a OR B = b OR C = c 我正在使用ANTLR 4来解析

java – 如何在ANTLR3树解析器@init动作中获取行号

在ANTLR版本3中,如何在高级树解析器规则的@init操作中获取行号? 例如,在下面的@init操作中,我想将行号与句子文本一起推送. sentence @init { myNodeVisitor.pushScriptContext( new MyScriptContext( $sentence.text )); } : assignCommand | actionCommand; fin

生成无效java异常的ANTLR会抛出代码

这些天我一直在使用ANTLRwork 1.5和antlr runtime 3.5.这是我发现的一个奇怪的事情: Antlr正在为我生成这种java代码: public final BLABLABLAParser.addExpression_return addExpression() throws { blablabla... } 请注意,此函数不会抛出任何内容,这在java中无效.所以我需

java – ANTLR – 语法和树语法之间的令牌枚举不匹配

背景 我正在尝试使用AntlrWorks编写一个简单的语法,用于测试指定元素存在(或缺少)的值集的布尔方程. 我创建了一个组合的词法分析器/解析器语法,可以产生所需的AST.我还编写了一个相似的树语法,似乎可行(通过AntlrWorks的调试功能). 问题 但是,当我尝试在一个测试程序(即同一程序中

如何使用python在ANTLR中执行自定义错误报告?

我正在为我的编译器类编写一个简单的解析器(只是一个概念证明,我可以让工具工作)并且正在使用带有python绑定的ANTLR.我已经得到了我们琐碎的语法来正确地标记和解析,但我也希望以自定义的方式处理错误.根据ANTLR文档(更具体地说:http://www.antlr.org/wiki/display/ANTLR3/Error+re