2012-06-10 28 views
3

我想有一個ANTLR語法UNICODE,但始終會導致錯誤(語法的片段):'\uFFFE' not expected ';'ANTLR charVocabulary錯誤

grammar Expression; 

options { 
    charVocabulary='\u000'..'\uFFFE'; 
} 

parse 
    : exp EOF 
; 

exp 
    : 'a' 
; 

它總是在結束了。如何編寫正確的UNICODE語法 - 什麼是正確的charVocabulary定義?

我正在使用ANTLR 3.2,但它在新版本中也會導致相同的錯誤。

回答

3

charVocabulary是ANTLR v2選項,不適用於ANTLR v3語法。從ANTLR v3語法生成的所有詞法分析器都接受\u0000..\uFFFF範圍內的字符(確保在創建ANTLRInputStream時使用正確的編碼!)。

使用ANTLRWorks,您可以通過定義規則,Any,匹配任何字符看到這一點:

Any : . ; 

,你會看到下面的圖顯示在ANTLRWorks下部:

enter image description here