1

据我对 SLR 解析器本身的理解通过使用句柄和可行的前缀等解决了移位减少冲突。那么为什么移位减少冲突会困扰我呢?

4

2 回答 2

2

冲突意味着生成的解析器可能不接受语法描述的整个语言,而是接受该语言的子集。如果您不关心不解析一些根据语法合法的构造,那么您可以忽略 shift/reduce 和 reduce/reduce 冲突。

现在,有时冲突是由于语法中的歧义造成的,这意味着解析同一事物有多种方式,有时在这种情况下,可以忽略冲突,因为解析器仍然会解析整个语言。但并非总是如此(实际上它是例外而不是规则),因此通常您需要查看语法为什么会发生冲突以及对解析器有什么影响。

于 2012-10-17T17:02:13.017 回答
0

你不必担心一个,如果它是 else/if 冲突。您当然应该担心的其他任何事情,并且确实很难调试。幸运的是,您正在做简单的语法,并且有足够多的简单示例,您只需要比较和对比。

于 2012-10-19T05:55:36.287 回答