antlr4-无法加载Hello作为词法分析器或解析器

use*_*707 46 antlr4

我最近不得不使用解析器来做项目.我下载ANTLR4并按照本书中描述的步骤操作The Definitive ANTLR4 Reference.以下是我在命令行中键入的步骤:

 1. export CLASSPATH=".:/<Mydirectory>/antlr-4.2.2-complete.jar:$CLASSPATH"
 2. alias antlr4='java -jar /<My directory>/antlr-4.2.2-complete.jar'
 3. alias grun='java org.antlr.v4.runtime.misc.TestRig'
 4. antlr4 Hello.g4
Run Code Online (Sandbox Code Playgroud)

所有的工作都很好,它生成我需要的java文件.但是,在我进入之后

 5. grun Hello r -tokens
Run Code Online (Sandbox Code Playgroud)

它报道

无法加载Hello作为词法分析器或解析器.

我谷歌一些信息,但仍然无法弄清楚发生了什么.

Sam*_*ell 35

您通过在语法上运行ANTLR来生成Java源文件,但TestRig正在查找已编译的.class文件.在使用TestRig之前,需要在源文件上运行Java编译器.

  • 我忘了在调用`TestRig`时在类路径中添加`.`即当前目录,即我的`.class`文件所在的目录. (2认同)

smw*_*dia 23

我在Windows上遇到了完全相同的错误.我的批次最初设置如下:

java -cp "C:\ANTLR\antlr-4.4-complete.jar" org.antlr.v4.runtime.misc.TestRig %*

事实证明我所有编译的Hello*.class文件都位于当前文件夹中,我忘了将其包含current folder-cp.我改成以下后.有用.注意中的前导点-cp.

java -cp ".;C:\ANTLR\antlr-4.4-complete.jar" org.antlr.v4.runtime.misc.TestRig %*

  • 这对我来说是解决方案 - 包括CLASSPATH变量的前导点和分号.谢谢! (3认同)
  • 救了我的一天.我的CLASSPATH看起来像.; C:\ Programs\ANTLRv4\antlr-4.7-complete.jar和我的grun bat文件看起来像java org.antlr.v4.gui.TestRig%* (2认同)