【发布时间】:2011-09-18 23:06:52
【问题描述】:
我了解两者之间的区别,歧义如何意味着至少有一个字符串具有 2 个不同的解析树,而一棵明确的树中只有一个。但我似乎无法将一个转换为另一个。
如何将以下歧义语法转换为明确语法?
S -> aSb
S -> abS
S -> lambda
编辑:好的,我的尝试是这样的
S -> aSb | lambda
b -> abS | lambda
有什么想法吗?
【问题讨论】:
-
第一次编辑不起作用,因为你有 b 作为非终端
-
那我可以从 b 中取出 lambda 吗?
-
不,你的意思可能是
S->aSb|lambda, B->aBS|lambda, B->b。您只需要确保只有 LHS 上有非终端。也就是说,如果你应该坚持使用上下文无关语法。 -
顺便说一句,我注意到你在这个问题上没有接受者。您应该将其发布到 cstheory.stackexchange.com,因为 SO 是针对编码问题的。
-
在第一步aSb之后,你无处可去进行第二步。除非你的意思是 S->aSB?
标签: grammar context-free-grammar parse-tree