2014-10-28 93 views
0

我正在嘗試構建具有多個詞法分析器導入的組合Antlr語法。但是,這不起作用。 我有兩個詞法分析器文件被導入到組合語法文件中。但我得到這個錯誤:錯誤(103):語法分析器規則不允許在詞法分析器中。Antlr - 多個詞法分析器導入

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 &進口L1,並在合併語法,如果我有進口L2。然後,在測試類中,我得到了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

你可以發佈一些代碼是[SSCCE](http://sscce.org/) – 2014-10-28 12:10:15

回答

0

任何解析器文件都不允許使用多個詞法分析器。這是antlr 3.5的縮寫。嘗試在L中導入LSub,然後在P1中導入L.你可能會得到。

相關問題