题
与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.
将产生以下
这是完美的,它正是我想要的。从一个大句子来看,我只提取对我有感觉的单词。...但是,我建立了以下错误。如果我在文字中的某个地方介绍了一个完全像令牌一样开始的单词,我最终要遇到 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.
产生错误:
DOGGY
被解释为 DOG
这也是令牌的一部分 SUBJECT
lexer丢了...我怎么能避免这种情况而不定义 DOGGY
作为一个特别的令牌...我希望解析器能理解 DOGGY
作为一个单词本身。
解决方案
好吧,似乎添加了这个 ANY2 :'A'..'Z'+ {skip();};
解决我的问题!
不隶属于 StackOverflow