【发布时间】:2011-10-12 20:09:03
【问题描述】:
例如,假设我想使用单个标记元素(双星 **)解析大部分非结构化文本。这是我的 ANTLR 语法:
text : (plain | tag)+ ;
plain : ~(TAG) ;
tag : TAG tag_inner TAG ;
tag_inner : ~(TAG) ;
TAG : '**' ;
TEXT : ('a'..'z' | ' ' | '.')+ ;
如果我正在解析的文本在语法上是正确的,那么这个语法就可以正常工作,也就是说,对于每个开头**,都有一个结尾**。如果**s 的数量是奇数,ANTLR 会报错,并输出错误。
如何解决这个问题,以便 ANTLR 会提前寻找关闭的双星,如果没有人将那颗孤立的双星视为纯文本?我很确定 ANTLR 可以做到这一点,而句法/语义谓词就是答案,但是在我们阅读文档之后,我仍然无法解决。
【问题讨论】: