Java 导入使用不同模式的ANTLR4 lexer语法

Java 导入使用不同模式的ANTLR4 lexer语法,java,antlr4,Java,Antlr4,我正在尝试将一个lexer语法导入另一个lexer语法。 导入的语法使用不同的模式(在XMLLexer示例模式INSIDE和PROC_INSTR中) 编译时,我得到一个错误,没有定义与模式名对应的变量 作为一个具体的例子,我在XMLLexer之上定义了一个HTMLLexer(摘自antlr4书籍) 并获取以下错误: C:\Users\<user>\AppData\Local\Temp\TestRigTask-1360839400637\HTMLLexer.java:143: e

我正在尝试将一个lexer语法导入另一个lexer语法。 导入的语法使用不同的模式(在XMLLexer示例模式INSIDE和PROC_INSTR中)

编译时,我得到一个错误,没有定义与模式名对应的变量

作为一个具体的例子,我在XMLLexer之上定义了一个HTMLLexer(摘自antlr4书籍) 并获取以下错误:

C:\Users\<user>\AppData\Local\Temp\TestRigTask-1360839400637\HTMLLexer.java:143: 
  error: cannot find symbol
  case 6: more(); pushMode(PROC_INSTR);  break;
                         ^
  symbol:   variable PROC_INSTR
  location: class HTMLLexer
1 error
C:\Users\\AppData\Local\Temp\testrigstask-1360839400637\htmlexer.java:143:
错误:找不到符号
案例6:更多();推送模式(过程仪表);打破
^
符号:可变过程仪表
位置:类HTMLLexer
1错误
我可以通过在顶级lexer中用额外的标记重新定义模式来克服这个错误,但是其他模式中导入的标记(作为默认标记)无法识别

如果我将导入的部分内联到主lexer定义中,解析器就可以工作,但是我希望使用导入功能来进行清晰的分离。(不是xml/html示例,而是另一个示例。)


是否可以使用导入使其工作,或者这是antlr4的一个限制?

在antlr4中还不支持导入多模式lexer语法。以下问题将跟踪此功能的进度:

C:\Users\<user>\AppData\Local\Temp\TestRigTask-1360839400637\HTMLLexer.java:143: 
  error: cannot find symbol
  case 6: more(); pushMode(PROC_INSTR);  break;
                         ^
  symbol:   variable PROC_INSTR
  location: class HTMLLexer
1 error