【问题标题】:ANTLR on a noisy data stream Part 2噪声数据流上的 ANTLR 第 2 部分
【发布时间】:2010-12-01 13:51:10
【问题描述】:

在与 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. 这样的句子将产生以下内容

这是完美的,它正在做我想要的。从一个大句子中,我只提取对我有意义的词。但是,我发现了以下错误。如果我在文中某处引入了一个与标记完全一样的词,我会以 MismathedTokenExceptionnoViableException 结尾

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

产生错误:

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

【问题讨论】:

    标签: antlr grammar noise-words


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2019-04-29
      • 2019-03-06
      • 1970-01-01
      • 1970-01-01
      • 2021-06-30
      • 2011-06-20
      • 2013-06-04
      • 1970-01-01
      • 2021-10-29
      相关资源
      最近更新 更多