导入使用不同模式的ANTLR4词法分析器语法

时间:2013-02-14 12:17:28

标签: java antlr4

我正在尝试将词法分析器语法导入另一个词法分析器语法。 导入的语法使用不同的模式(在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示例,而是针对另一种情况。)

是否可以使用import进行工作,还是antlr4的限制?

1 个答案:

答案 0 :(得分:4)

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

Support importing multi-mode lexer grammars