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

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

鞠修雅
2023-03-14

运行命令grun Chat Chat时,出现错误无法将Chat作为lexer或parser加载

我正在按照指示进行操作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文件:< code > antlr 4-d language = python 3 chat . G4

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

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

运行grun工具:grun聊天我尝试了不同的解析器规则,但得到了相同的错误。

共有1个答案

澹台阳秋
2023-03-14

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

如果你不能从你的语法生成Java(因为你的语法包含Python操作),你就不能使用grun

 类似资料:
  • 我最近不得不使用解析器来做一个项目。我下载了,并按照《最终ANTLR4Reference》一书中描述的步骤进行操作。以下是我在命令行中键入的步骤: 所有事情都很好,它生成我需要的java文件。但是,在我输入之后 它报告说 无法将Hello作为lexer或分析器加载。 我谷歌了一些信息,但仍然不知道发生了什么。

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

  • 我有Antlr4中的语法,用来解析和验证定制语言。在其他方面,我的语法应该认为以下是“有效的” //将字符串值赋给变量 //带有字符串参数的函数 //带有特定格式(日期)的函数 下面是我语法中的相关部分

  • 我正在使用antlr4 c语法作为我自己语法的灵感。我来了一件事,我真的不明白。为什么没有使用数据类型时会有Lexer规则?例如,规则从未使用过,但分析器规则(为了简化已删除其他数据类型)使用了好几个地方。解析器规则typeSpecifier没有使用lexer规则double有什么原因吗?

  • 我们在ANTLR中遇到的问题是,我们有这样一个语法: 请记住“鲍勃。”第一行是动态的,可以是任何东西。其中之一就是“鲍勃”。“Bob Offset”行不是动态的,它存在于我们正在解析的每一个类型的文件中。 理想的解决方案是,如果ANTLR有某种方法来指定上下文或解析器规则特定的lexer规则。这样,“Bob offset:”标记在语法中的其他地方就不会出错了。 对此问题的任何想法都将不胜感激。

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