ANTRL4:无法获取Python ANTLR来生成分析树的图形
我有一个简单的HelloWorld.g4
语法(请参阅底部)。我能够.py
使用以下命令成功生成文件:
set CLASSPATH=.;antlr-complete.jar;%CLASSPATH%java org.antlr.v4.Tool -Dlanguage=Python2 HelloWorld.g4
现在,我想使用TestRig
带有-gui
标志的来生成解析树GUI。我已经安装了ANTRL
Python运行时(antlr4-python2-runtime-4.5.tar.gz
)。我可以打开Python解释器并输入:
import antlr4
然后解释器识别antlr4
模块。
当我这样运行时TestRig
:
set CLASSPATH=.;antlr-complete.jar;%CLASSPATH%java org.antlr.v4.gui.TestRig HelloWorld message -gui < input.txt
我收到此错误消息:
Can't load HelloWorld as lexer or parser
从我的调查中,我发现了几则帖子列出了相同的错误消息。但是,在这些情况下,他们忘记在类路径中包含句点(。)。但是正如您所看到的,我已经将其包含在类路径中。
我没有关于如何TestRig
开始工作的想法。注意:当目标语言是Java时,我可以TestRig
使用相同的HelloWorld
语法。
您能提供的任何帮助将不胜感激。
grammar HelloWorld;options { language=Python; }
message : GREETING NAME;
GREETING : 'Hello' ;
NAME : [a-zA-Z]+ ;
WS : [ \t\r\n]+ -> skip ;
回答:
今天也要考虑到这一点:问题在于testrig需要生成的Java源代码。但是,由于您使用的是Python,除非明确运行antlr4
两次,否则您将没有它:一次用于目标语言Python2(或3),一次用于-Dlanguage=java
。
请参阅此答案,该答案建议先运行language=java
目标。然后对问题本身进行注释以编译java文件。
并且为了完整性和在被遗忘之前:确保$CLASSPATH
已设置env变量,使其包含点'.'
和antlr*.jar
文件路径。例如在unix上:
export CLASSPATH=".:/<Mydirectory>/antlr-4.2.2-complete.jar:$CLASSPATH"
$CLASSPATH
正确设置后,我逐步介绍了以下步骤:
为Java编译:
> antlr4 -Dlanguage=java HelloWorld.g4# or: java org.antlr.v4.Tool -Dlanguage=java HelloWorld.g4
请注意,我的options { language=Python3
}语法文件中包含,并且-D
覆盖未按预期工作。因此,我删除了选项块,现在在命令行上指定语言目标。
然后将*.java
文件编译成*.class
文件:
> javac -g *.java
然后运行testrig:
> grun HelloWorld message# or: java org.antlr.v4.gui.TestRig HelloWorld message -gui < input.txt
以上是 ANTRL4:无法获取Python ANTLR来生成分析树的图形 的全部内容, 来源链接: utcz.com/qa/407799.html