我正在尝试构建一个包含多个lexer导入的组合Antlr语法。但是,这不管用。我在合并语法文件中导入了两个lexer文件。但是我得到了这个错误: error (103):解析器规则a在lexer中是不允许的。
lexer grammar LSub ;
SPACE : ' ' ;
lexer grammar L ;
LETTER : 'a'..'z' ;
// SPACE : ' ' ;
NUMBER : '0'..'9' ;
parser grammar P1 ;
letter : LETTER ;
spaces : SPACE+ ;
grammar C ;
import L, LSub, P1 ;
stuff : ( letters spaces )+ ;
LETTER : 'a'..'z' ;此外,如果我尝试它,那么两个级别的lexer导入,即假设我有两个L1和L2,& L2导入L1,在组合语法中,如果我导入了L2。然后,在Test类中,我得到了nullpointerexception。
lexer grammar LSub ;
SPACE : ' ' ;
lexer grammar L ;
import LSub;
LETTER : 'a'..'z' ;
// SPACE : ' ' ;
NUMBER : '0'..'9' ;
parser grammar P1 ;
letter : LETTER ;
spaces : SPACE+ ;
parser grammar P2 ;
import P1 ;
letters : letter+ ;
grammar C ;
import L, P2 ;
stuff : ( letters spaces )+ ;
LETTER : 'a'..'z' ;这个问题有解决办法吗?
发布于 2014-11-14 07:03:08
在任何解析器文件中都不允许使用多个lexer。这是反3.5中的一个平局。尝试在L中导入LSub,然后在P1中导入L。你可能会得到。
https://stackoverflow.com/questions/26607624
复制相似问题