質問

Bart Kiersとの非常に組み込みの議論に続いて ANTLRでノイズの多いデータストリームを解析する, 、私は別の問題になります...

目的はまだ同じです。次の文法で有用な情報を抽出するだけです。

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

これは完璧であり、私が望むことを正確にやっています。大きな文から、私は自分のために感覚を持っていた言葉だけを抽出しています。しかし、次のエラーを見つけました。テキストのどこかに、トークンのように始まる単語を紹介している場合、私は MismathedTokenException またはa noViableException

    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 トークンの一部でもあります SUBJECT そしてレクサーは失われます...どうすれば定義せずにこれを避けることができますか DOGGY 特別なトークンとして...私はパーサーに理解したいと思います DOGGY 単語自体として。

役に立ちましたか?

解決

まあ、これを追加しているようです ANY2 :'A'..'Z'+ {skip();}; 私の問題を解決します!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top