2010-12-01 49 views
1

在與巴特煮布鍋on parsing a noisy datastream with ANTLR,我結束了另外一個問題非常interesing討論...ANTLR在嘈雜的數據流,第2部分

的目標仍然是相同的:只與以下提取有用信息語法,

VERB   : 'SLEEPING' | 'WALKING'; 
SUBJECT   : 'CAT'|'DOG'|'BIRD'; 
INDIRECT_OBJECT : 'CAR'| 'SOFA'; 
ANY    : . {skip();}; 

parse 
    : sentenceParts+ EOF 
    ; 

sentenceParts 
    : SUBJECT VERB INDIRECT_OBJECT 
    ;  

it's 10PM and the Lazy CAT is currently SLEEPING heavily on the SOFA in front of the TV.一句話會產生以下

alt text

這是完美的,它正在做我想要的東西..從一個大句子,我只提取對我有意義的詞......但是,我創建了以下錯誤。如果某處文字我介紹的是開始酷似令牌的話,我結束了一個MismathedTokenExceptionnoViableException

 

    it's 10PM and the Lazy CAT is currently SLEEPING heavily, 
    with a DOGGY bag, on the SOFA in front of the TV. 

產生一個錯誤:

alt text

DOGGY被解釋爲DOG的開始,這也是TOKEN SUBJECT的一部分,並且詞法分析器丟失了......如果沒有將DOGGY定義爲特殊標記,我該如何避免這種情況...我希望解析器能夠在下面tand DOGGY本身就是一個詞。

回答

1

好吧,似乎加入這ANY2 :'A'..'Z'+ {skip();};解決了我的問題!