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

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文件: 问题答案: 在清单中 ( 标记 的