Antlr - 多个词法分析器导入

时间:2014-10-28 11:50:01

标签: antlr3

我正在尝试构建一个具有多个词法分析器导入的组合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' ;

这个问题有解决方法吗?

1 个答案:

答案 0 :(得分:0)

任何解析器文件中都不允许使用多个词法分析器。这是在antlr 3.5中的退缩。尝试在L中导入LSub,然后在P1中导入L.你可能会得到。