CAN本质上含糊不清的语言有决定性的上下文免费语法吗?

时间:2016-06-30 15:06:50

标签: context-free-grammar compiler-construction

DANGLING ELSE问题:

S-> iEtSS' / a

S' - >ε/ eS

E-&GT,B

是一种确定性的上下文无关语法,对于" iEtiEtSeS"

是不明确的

但是所有DCFG都是不受欢迎的。  所以"这个DCFG怎么可能含糊不清?"

1 个答案:

答案 0 :(得分:0)

  

是确定性上下文无关语法,对于“iEtiEtSeS”是不明确的

这就是问题所在。您假设您的语法是确定性上下文无关语法。但是,你也说它含糊不清。两者都不可能是真的,事实并非如此:你的语法不是一个确定性的上下文自由语法,而只是一个模糊的上下文无关语法。

实际上,已知悬挂的其他问题是编译器设计的问题,因为它不能仅使用无上下文语法来解决。它通常通过使用句法谓词来消除歧义。这告诉编译器更喜欢转换reduce操作,这会导致解析树,其中else部分附加到最内层if。然而,虽然这解决了问题,但它不是纯上下文自由语法的一部分。

最后,对这个问题给出一个清晰而简单的答案:不,不可能为固有的模糊语言指定一个确定性的上下文无关语法。