噪声数据流上的ANTLR第2部分

时间:2010-12-01 13:51:10

标签: antlr grammar noise-words

在与Bart Kiers on parsing a noisy datastream with 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

这是完美的,它正是我想做的......从一个大句子,我只提取对我有意义的词......但是,我发现了以下错误。如果在文本的某个地方,我正在引入一个与令牌完全相同的单词,那么我最终会得到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的一部分而且词法分析器丢失了...如果不定义{{1}我怎么能避免这种情况作为一个特殊的令牌......我希望解析器能够将DOGGY理解为一个单词。

1 个答案:

答案 0 :(得分:1)

好吧,似乎添加此ANY2 :'A'..'Z'+ {skip();};解决了我的问题!

相关问题