DANGLING ELSE问题:
S-> iEtSS' / a
S' - >ε/ eS
E-&GT,B
是一种确定性的上下文无关语法,对于" iEtiEtSeS"
是不明确的但是所有DCFG都是不受欢迎的。 所以"这个DCFG怎么可能含糊不清?"
答案 0 :(得分:0)
是确定性上下文无关语法,对于“iEtiEtSeS”是不明确的
这就是问题所在。您假设您的语法是确定性上下文无关语法。但是,你也说它含糊不清。两者都不可能是真的,事实并非如此:你的语法不是一个确定性的上下文自由语法,而只是一个模糊的上下文无关语法。
实际上,已知悬挂的其他问题是编译器设计的问题,因为它不能仅使用无上下文语法来解决。它通常通过使用句法谓词来消除歧义。这告诉编译器更喜欢转换reduce操作,这会导致解析树,其中else部分附加到最内层if。然而,虽然这解决了问题,但它不是纯上下文自由语法的一部分。
最后,对这个问题给出一个清晰而简单的答案:不,不可能为固有的模糊语言指定一个确定性的上下文无关语法。