我是ANTLR的新手,并在ANTLRWorks1.4.3中尝试遵循语法。
grammar TextGra;
element : starttag (element)* endtag
;
starttag: '<' TAGNAME '>';
endtag : '</' TAGNAME '>';
TAGNAME : ('a'..'z')|('A'..'Z')|('0'..'9');
WS : (' '|'\r'|'\n')+ {skip();} ;
当试图像这样解析简单的xml片段时
<a><b><c></c></b></a>
丢失了最后两个endtag元素,如何处理这种情况?或者这是错误的方式? 在我的情况下,标签名称不能被限制与其他xml解析代码比较。 或者语法可以使用$ 0来引用先前匹配的令牌?(例如在regexp中)。 在这种情况下,通过上一个匹配的启动标签确定endtag中的标记名。 谢谢大家的回复!
答案 0 :(得分:1)
我猜你正在使用ANTLRWorks的解释器:不,它是错误的。始终使用ANTLRWorks中包含的调试器(按 CTRL + D 启动调试器)。
我没有改变你的语法或输入,这就是译员的作品:
调试器产生了这个: