1

在与 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.将产生以下内容

替代文字

这是完美的,它正在做我想要的......从一个大句子中,我只提取对我有意义的单词......但是,我发现了以下错误。如果在文中某处我要介绍一个词的开头与记号完全一样,我会以 aMismathedTokenException或 a结尾noViableException

    现在是晚上 10 点,懒猫正在沉睡,
    带着DOGGY包,放在电视机前的沙发上。

产生错误:

替代文字

DOGGY被解释为开头,DOG它也是 TOKEN 的一部分SUBJECT并且词法分析器丢失了......如果不定义为特殊标记,我怎么能避免这种情况DOGGY......我希望解析器DOGGY本身理解为一个词。

4

1 回答 1

1

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

于 2010-12-01T16:35:40.320 回答