python的语法在antlr站点上给出,但是使用它来生成AST给出错误。我正在使用与生成AST的java语法相同的过程。
错误:
> C:\testpython>java -cp antlr-3.2.jar org.antlr.Tool Python.g
error(10):内部错误:: java.lang.Error:解析时出错 Python.g:'class'不期望'语法' org.antlr.tool.GrammarSpelunker.match(GrammarSpelunker.java:74) org.antlr.tool.GrammarSpelunker.grammarHeader(GrammarSpelunker.java:112) org.antlr.tool.GrammarSpelunker.parse(GrammarSpelunker.java:84) org.antlr.Tool.sortGrammarFiles(Tool.java:552) org.antlr.Tool.process(Tool.java:408) org.antlr.Tool.main(Tool.java:91)错误(100):Python.g:56:1:语法 错误:antlr:Python.g:56:1:意外令牌:类错误(8):文件 Python.g包含语法PythonParser;名称必须相同 error(100):Python.g:56:20:语法错误:antlr:Python.g:56:20: 期待SEMI,发现'extends'错误(100):语法错误:无效 char literal:'\ 014'错误(150):语法文件Python.g没有规则 error(100):Python.g:0:0:语法错误:assign.types :: 0:0: 意外结束子树错误(100):Python.g:0:0:语法错误: define :: 0:0:子树的意外结束
任何帮助?
答案 0 :(得分:1)
您正在尝试使用为ANTLR v2编写的语法生成带有ANTLR v3的解析器。要么找到v3的语法,要么保留语法并使用ANTLR v2:http://www.antlr2.org/download.html
这样开始的语法是v2的目标:
class FooParser extends Parser;
这对于v3:
grammar FooParser;