为 XML 解析添加一些规则



添加一些规则来解析XML,但是当我尝试编译项目时它不起作用。我有下一个错误: 错误 2 未知属性引用"closeTag"在"$closeTag.text"D:\DevExpress\ControlEvaluation\RichEditControl\WindowsFormsRichEdit\WindowsFormsRichEdit\XMLParser.g4 40 29 WindowsFormsRichEdit 错误 1 未知属性引用 'openTag' in '$openTag.text' D:\DevExpress\ControlEvaluation\RichEditControl\WindowsFormsRichEdit\WindowsFormsRichEdit\XMLParser.g4 40 8 WindowsFormsRichEdit

element     :   '<' openTag=Name attribute* '>' content '<' '/' closeTag=Name '>'
|   {$openTag.text.equals($closeTag.text)}?
|   '<' Name attribute* '/>'
;

closeTag在第一个备选方案中定义,但在第二个备选方案中引用它。它在那里不存在。

不要在解析器中进行语义检查。打开和关闭标记名称的相等是一种语义强制。相反,在没有要在此处实现的约束的情况下解析输入,并在获得解析树后运行语义阶段。这也将允许您打印更好的错误消息(例如,"打开和关闭标签必须相同",而不是"没有可行的alt")。

对于此语义检查,请使用生成的解析树侦听器(或者更确切地说,是该类的派生)。

相关内容

  • 没有找到相关文章

最新更新