在与 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
本身理解为一个词。