2012-08-12 78 views
0

根据wikipedias GLR description,他们“处理非确定性和模棱两可的语法”。 我可以想像一个模棱两可的语法,如dangling else problem,但什么是不确定性的非确定性CF语法?非确定性,不明智的语法?

+1

悬而未决的问题是一个模糊的GRAMMAR,而不是一个模棱两可的语言。在语法中解决歧义是微不足道的,给同一种语言提供了非模糊的语法。 – 2012-08-12 19:46:20

回答

2

几乎任何非LR(k)语法都是非确定性的,但不一定含糊不清。显而易见的例子是,当你有一些非常大的结构可以用两种方式解析,而且这是正确的取决于大型结构之后的某些东西。例如:

S ::= A x | B y 
A ::= A a | a 
B ::= B a | a 

然而,这种没有确定性的语法可以常常进行返工,以便确定的,如果解析大构建体的两种方法可以结合(如用S ::= A x | A y用于上述语法这是确定性分析同一种语言的方式。)

更有趣的是语言本质上是非确定性的 - 即语言没有确定性语法。为此,需要在任意大的构造内部有一些东西需要与之后的东西相匹配。例如:

S ::= X x | Y y 
X ::= a X a | x 
Y ::= a Y a | y