当前位置: 首页 > 知识库问答 >
问题:

antlr4无法将Hello作为lexer或解析器加载

芮念
2023-03-14

我最近不得不使用解析器来做一个项目。我下载了ANTLR4,并按照《最终ANTLR4Reference》一书中描述的步骤进行操作。以下是我在命令行中键入的步骤:

 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

所有事情都很好,它生成我需要的java文件。但是,在我输入之后

 5. grun Hello r -tokens

它报告说

无法将Hello作为lexer或分析器加载。

我谷歌了一些信息,但仍然不知道发生了什么。

共有3个答案

松安民
2023-03-14

在完成所有*之后。java文件已经生成,您的*。类文件已经生成,并且您的%CLASSPATH%

如果您的%CLASSPATH%环境变量中没有“antlr-runtime-4.4.jar”并从书中运行“grun”代码,那么当您根据提供的语法运行生成的解析器时,您将收到此错误。

%CLASSPATH%应该是:

C:\libraries\antlr-4.4-complete.jar;C:\libraries\antlr-runtime-4.4.jar;

输入此命令后输入输入。如书中示例中的“hello parrt”。然后输入CTRL Z(在Windows中)以结束输入,或CTRL D(在Unix上)。

隗轶
2023-03-14

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

< code > Java-CP " C:\ ANTLR \ ANTLR-4.4-complete . jar " org . ANTLR . v4 . runtime . misc . test rig % *

原来我所有编译的< code>Hello*。class文件位于当前文件夹中,我忘记在< code>-cp中包含< code >当前文件夹。我换到下面之后。它工作了。请注意< code>-cp中的前导点。

爪哇 -cp “.;C:\ANTLR\antlr-4.4-complete.jar“ org.antlr.v4.runtime.misc.TestRig %*

谢誉
2023-03-14

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

 类似资料:
  • 运行命令时,出现错误 运行上述命令时会创建以下文件:- 运行grun工具:我尝试了不同的解析器规则,但得到了相同的错误。

  • 问题内容: 我最近不得不使用解析器来做一个项目。我下载ANTLR4并按照书中描述的步骤进行操作The Definitive ANTLR4 Reference。以下是我在命令行中键入的步骤: 一切正常,它生成我需要的java文件。但是,当我进入 它报告 无法将Hello加载为词法分析器或解析器。 我在Google上搜索了一些信息,但仍然无法确定发生了什么。 问题答案: 您通过在语法上运行ANTLR生

  • 在ANTLR4中,我有一个lexer规则,说我可以使用任何字符得到任何单词,但空格和换行符除外。其定义如下: 我还有一个lexer规则(定义在than WORD之前),用于进入EVAL模式: 我考虑的另一个选择是将“word”定义为${and}包围的文本以外的任何东西。但我不知道如何创建这样的lexer规则。 我该怎么解决?要区分评价和词?

  • 可能在内部使用的代码将在规则之后被取消,如下所示: ANTLR4就是这样做事的吗?

  • 问题内容: 我知道很多人都遇到了这个问题,并且我已经搜索了Google / Stack Overflow,但我仍然不知道自己在做什么错。 我尝试搜索不必要的语句,以及构建/清理/刷新/等,但似乎无法弄清楚。也许我安装SDK的方式有问题?我不认为有,但是我对此很陌生,所以很可能我在某个地方犯了错误。 另外,我收到此错误: 谁能帮我?谢谢! 编辑: 我的XML文件: 问题答案: 在清单中 ( 标记 的

  • 问题内容: 我知道很多人都遇到了这个问题,并且我已经搜索了Google / Stack Overflow,但我仍然不知道自己在做什么错。 我尝试搜索不必要的语句,以及构建/清理/刷新/等,但似乎无法弄清楚。也许我安装SDK的方式有问题?我不认为有,但是我对此很陌生,所以很可能我在某个地方犯了错误。 另外,我收到此错误: 谁能帮我?谢谢! 编辑: 我的XML文件: 问题答案: 在清单中 ( 标记 的