[英]How to handle arithmetic operator < and > in antlr grammar that removes html tags
以下是我的antlr 3语法。 我想剥离html标记内的内容。 当标签内有算术运算符< >
时,就会出现问题。 如何处理?
grammar T;
options {
output=AST;
}
tokens {
ROOT;
}
parse
: text+ ;
text
: (tag)=> tag !
| SPACE !
| outsidetag
;
SPACE
: (' ' | '\t' | '\r' | '\n')+ ;
tag
: OPEN INSIDETAG CLOSE ;
CLOSE : '>' ;
OPEN : '<' ;
INSIDETAG
: ~(CLOSE|OPEN)+ ;
outsidetag
: ~(SPACE) ;
首先,您不需要在INSIDETAG规则中检查OPEN,因为在此处跳过它没有害处。 实际上,您想要那样。 另外,将tag和INSIDETAG组合在一起,使其变得贪婪,以便它尝试消耗任何东西直到最后一个CLOSE TOKEN,然后跳过,以便跳过任何中间的东西:
tag: options { greedy = true; }: OPEN ~CLOSE* CLOSE;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.