无法将规则作为词法分析器或解析器加载-Antlr4

时间:2019-12-20 17:22:53

标签: python-3.x antlr antlr4

我遇到错误Can't load Chat as lexer or parser 运行命令grun Chat chat

我正在按照https://tomassetti.me/antlr-mega-tutorial/#setup-antlr

上的说明进行操作

在Mac OS上使用python,这是我的bash_profile详细信息:-

export CLASSPATH=".:/usr/local/lib/antlr-4.7.1-complete.jar:$CLASSPATH"
alias antlr4='java -Xmx500M -cp "/usr/local/lib/antlr-4.7.1-complete.jar:$CLASSPATH" org.antlr.v4.Tool'
alias grun='java -Xmx500M -cp "/usr/local/lib/antlr-4.7.1-complete.jar:$CLASSPATH" org.antlr.v4.gui.TestRig'

命令运行:- 要创建python文件,请执行以下操作:antlr4 -Dlanguage=Python3 Chat.g4

运行上述命令时将创建以下文件:-

chat.interp, chat.tokens, chatLexer.interp, ChatLexer.py, ChatLexer.tokens, ChatListener,py, ChatParse.py

要运行grun工具,请执行以下操作:grun Chat chat 我尝试了不同的解析器规则,但得到了相同的错误。

1 个答案:

答案 0 :(得分:0)

grun是一个Java工具,它希望词法分析器和解析器作为可以加载和实例化的Java类存在。因此,您需要先从语法生成Java代码,然后使用javac对其进行编译,然后才能使用grun

如果无法通过语法生成Java(例如,因为语法包含Python动作),则不能使用grun