3

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

lexer grammar HTMLLexer;
import XMLLexer;

编译时,我收到一个错误,即未定义与模式名称对应的变量。

作为一个具体的例子,我在 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

我可以通过使用附加标记重新定义顶级词法分析器中的模式来克服此错误,但是作为默认模式,其他模式中的导入标记无法识别。

如果我在主词法分析器定义中内联导入的部分,则解析器可以工作,但我想使用导入功能进行干净的分离。(不适用于 xml/html 示例,但在另一种情况下。)

是否可以使用导入使其工作,还是 antlr4 的限制?

4

1 回答 1

4

ANTLR 4 尚不支持导入多模式词法分析器语法。以下问题将跟踪此功能的进度:

支持导入多模式词法分析

于 2013-02-19T16:45:23.293 回答