你知道任何可以指定上下文相关语法的吗?例如 * 符号指针/乘法歧义解析。我正在寻找能够解决这种歧义的正式语言。我正在寻找的语言应该被很好地指定。
编辑:我正在寻找类似 BNF 的东西,但应该是上下文相关的,实际上它应该能够解决Dangling else问题。
你知道任何可以指定上下文相关语法的吗?例如 * 符号指针/乘法歧义解析。我正在寻找能够解决这种歧义的正式语言。我正在寻找的语言应该被很好地指定。
编辑:我正在寻找类似 BNF 的东西,但应该是上下文相关的,实际上它应该能够解决Dangling else问题。
BNF 可以通过引入额外的规则来解决这种歧义。例如,在Java 语言规范中,您会发现:
IfThenStatement:
if ( Expression ) Statement
IfThenElseStatement:
if ( Expression ) StatementNoShortIf else Statement
StatementNoShortIf:
IfThenElseStatementNoShortIf
...
IfThenElseStatementNoShortIf:
if ( Expression ) StatementNoShortIf else StatementNoShortIf
...哪里StatementNoShortIf
是Statement
不能以没有“else”的“if”结尾的。因此,如果我正在解析if(a) if(b) c(); else d();
,那么唯一的选择就是if(b) c(); else d();
绑定到StatementNoShortIf
.