你知道任何可以指定上下文相关语法的吗?例如 * 符号指针/乘法歧义解析。我正在寻找能够解决此类歧义的正式语言。我正在寻找的语言应该被很好地指定。

编辑:我正在寻找像 BNF 这样的东西,但应该是上下文敏感的,实际上它应该能够解决 Dangling else 问题。

最佳答案

BNF 可以通过引入附加规则来解决此类歧义。例如,在 Java language spec 中你会发现:

IfThenStatement:
  if ( Expression ) Statement
IfThenElseStatement:
  if ( Expression ) StatementNoShortIf else Statement
StatementNoShortIf:
  IfThenElseStatementNoShortIf
  ...
IfThenElseStatementNoShortIf:
  if ( Expression ) StatementNoShortIf else StatementNoShortIf

...其中 StatementNoShortIf 是一个不能以没有 'else' 的 'if' 结尾的 Statement。因此,如果我正在解析 if(a) if(b) c(); else d(); ,那么唯一的选择是将 if(b) c(); else d(); 绑定(bind)到 StatementNoShortIf

关于formal-languages - 上下文敏感和图灵完备的形式语言,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23252141/

10-10 23:12