2

antlr 网站上给出了 python 的语法,但在使用它生成 AST 时给出了错误。我正在使用与生成 AST 的 java 语法相同的过程。

错误:

> C:\testpython>java -cp antlr-3.2.jar org.antlr.Tool Python.g

错误(10):内部错误::java.lang.Error:解析Python.g时出错:'class'不是预期的'grammar' 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;名称必须相同错误(100):Python.g:56:20:语法错误:antlr:Python.g:56:20:期待SEMI,发现'扩展'错误(100):语法错误:无效的字符文字:' \014' 错误(150):语法文件 Python.g 没有规则错误(100):

有什么帮助吗?

4

1 回答 1

1

您正在尝试使用为 ANTLR v2 编写的语法生成具有 ANTLR v3 的解析器。要么找到 v3 的语法,要么保留语法并使用 ANTLR v2:http ://www.antlr2.org/download.html

像这样开头的语法是针对 v2 的:

class FooParser extends Parser;

这对于 v3:

grammar FooParser;
于 2013-06-10T06:39:21.683 回答