LL(1)语法,用于类XML语言

时间:2013-01-13 14:40:43

标签: xml parsing

考虑XML的子集的LL(1)语法,让它成为没有属性的XML。 我想出了类似的东西:

S -> BLOCK
BLOCK -> PART1 PART2
PART1 -> <NAME
PART2 -> >BODY</NAME> | />
BODY -> BLOCK BODY | EPS

非终结NAME是非空字符串。 这里的问题是语法不是LL(1),因为在非终结PART2的第一次制作中存在歧义:在解析'&gt;'之后性格,你无法确定是否'&lt;'字符派生自PART2本身(这意味着BODY是空字符串EPS)或来自非终结PART1(因此BODY是BLOCKBODY并且'&lt;'是从新块获得的)。 其余的语法都可以,很明显,如果我可以使用不同的字符来表达'&lt;'用于打开新标签或关闭现有标签,这样做可以解决问题。坏消息是我无法做到这一点。 我的问题是:我正在寻找的LL(1)语法是否真的存在? 如果是的话,我需要做出哪些改变的想法? 非常感谢。

0 个答案:

没有答案