我正在尝试构建一个具有多个词法分析器导入的组合Antlr语法。但是,这不起作用。 我有两个lexer文件正在组合的语法文件中导入。但我得到这个错误:错误(103):词法分析器中不允许解析器规则。
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' ;
另外,如果我尝试两个级别的词法分析器导入,即假设我有两个词法分析器L1和L2,&如果我导入了L2,则L2导入L1和组合语法。然后,在测试类中我得到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' ;
这个问题有解决方法吗?
答案 0 :(得分:0)
任何解析器文件中都不允许使用多个词法分析器。这是在antlr 3.5中的退缩。尝试在L中导入LSub,然后在P1中导入L.你可能会得到。