📜  门| GATE-CS-2001 |问题18

📅  最后修改于: 2021-07-02 14:37:34             🧑  作者: Mango

下列哪个陈述是错误的?
(A)明确的语法具有相同的最左和最右派生
(B) LL(1)解析器是自上而下的解析器
(C) LALR比SLR更强大
(D)对于任何k,模棱两可的语法永远不会是LR(k)答案: (A)
说明: 1.如果存在一个字符串s,则该语法是模棱两可的,因此该语法具有多个s的最左派生。我们还可以提出一个字符串的多个最右边的派生词,以证明上述命题,但不能同时证明最右边和最左边的两个命题。明确的语法可以具有不同的最右和最左派生。

2. LL解析器本质上是自上而下的。从直觉上讲,最左端的派生是时尚的扩展或自上而下,因此是这样的约定。另一方面,最右边的推导似乎是一种压缩或自下而上的事情。

3.即使两者都具有相同的LR(0)状态,LALR也比SLR更强大,这是由于SLR在构造其解析表后通过从语法中查看FIRST和FOLLOW来检查超前行为,另一方面, LALR在构造解析表时会根据LR(0)状态计算超前时间,这是一种更好的方法。

4.对于任何k,模棱两可的文法永远不会是LR(k),因为LR(k)算法并非旨在处理模棱两可的文法。如果将其应用于模棱两可的语法,则无论常数k有多大,它都会陷入不确定性问题中。

参考:http://stackoverflow.com/questions/2676144/what-is-the-difference-between-lr-slr-and-lalr-parsers/16575211#16575211
请参阅https://www.geeksforgeeks.org/compilers-set-1/的问题3

此解决方案由Vineet Purswani提供。
这个问题的测验