Antlrworks中使用复合语法的Antlr未定义导入
我尝试将复合语法与AntlR3.1和Antlrworks 1.4.2结合使用。当我把import语句放进去时,它说“undefined import”。我尝试了很多不同的lexer语法和parser语法的组合,但都无法生成代码。我错过了什么明显的东西吗?下面是一个例子Antlrworks中使用复合语法的Antlr未定义导入,antlr,Antlr,我尝试将复合语法与AntlR3.1和Antlrworks 1.4.2结合使用。当我把import语句放进去时,它说“undefined import”。我尝试了很多不同的lexer语法和parser语法的组合,但都无法生成代码。我错过了什么明显的东西吗?下面是一个例子 grammar Tokens; TOKEN : 'token'; 我正在引用 感谢在分离词法语法和语法分析器语法时,您需要明确定义它是什么类型的语法 尝试: 以及: 请注意,从组合语法文件Foo.g,lexer和p
grammar Tokens;
TOKEN : 'token';
我正在引用
感谢在分离词法语法和语法分析器语法时,您需要明确定义它是什么类型的语法 尝试: 以及: 请注意,从组合语法文件
Foo.g
,lexer和parser在默认情况下分别获得parser
和lexer
前缀:footexer.java
和FooParser.java
。但是在“显式”语法中,.java
文件的名称是语法本身的名称:Parser.java
和Tokens.java
。您可能需要注意调用类解析器
,因为这是ANTLR的基本解析器类的名称:
还要注意将
import
语句放在options{…}
部分的下面,但是放在您可能定义的任何tokens{…}
之前,否则可能会出现奇怪的错误 啊,那是件愚蠢的事。Antlrworks将在导入下面加下划线,并将所有标记作为未定义的语法错误突出显示,但如果您尝试,仍然允许您生成代码
第一次不起作用的原因是,根据巴特的建议,进口超出了选项范围 :)是的,ANTLRWorks是一个很好的工具,但只适用于相当小的组合语法。Richard,请注意,这些部分的顺序可能会在AntlRv4中消失(不过可能还需要一些时间才能出来……)。
grammar Parser;
import Tokens;//gives undefined import error
rule : TOKEN+;
parser grammar Parser;
import Tokens;//gives undefined import error
rule : TOKEN+;
lexer grammar Tokens;
TOKEN : 'token';