【问题标题】:antlr parse xml lost token match or duplicated matchantlr 解析 xml 丢失令牌匹配或重复匹配
【发布时间】:2012-10-30 13:44:51
【问题描述】:

我是 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 来引用以前匹配的标记吗?(如在正则表达式中)。 在这种情况下,通过前一个匹配的开始标签来决定结束标签中的标签名。 谢谢大家的回复!

【问题讨论】:

    标签: xml antlr antlrworks


    【解决方案1】:

    我猜你正在使用 ANTLRWorks 的解释器:不要,它有问题。始终使用 ANTLRWorks 中包含的调试器(按 CTRL+D 启动调试器)。

    我没有改变你的语法或输入,这是解释器产生的:

    调试器产生了这个:

    【讨论】:

    • 非常感谢!我发现 antlrworks 调试是唯一正确的方法。 eclipse的antlr插件也有bug!
    • @hotstong,该插件也使用了 ANTLRWorks 的解释器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-07
    相关资源
    最近更新 更多