编程语言
首页 > 编程语言> > java-导入使用不同模式的ANTLR4 lexer语法

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

作者:互联网

我正在尝试将词法分析器语法导入另一个词法分析器语法.
导入的语法使用不同的模式(在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的限制?

解决方法:

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

Support importing multi-mode lexer grammars

标签:java,antlr4
来源: https://codeday.me/bug/20191031/1974393.html