2

这是语法:

S' -> S
S-> aBc|bCc|aCd|bBd
B ->e
C ->e

我在 CLR 中解析然后减少/减少冲突出现。接下来做什么?我在下面附上了我解决的问题。

解析表

这是过程

4

1 回答 1

3

任何人请告诉我下一步该怎么做

呃……修复冲突?

当解析器在 e 之后遇到 c 或 d 时,即使仅从最后两个产生式也很清楚:

B -> e . {c, d}
C -> e . {c, d}

单次前瞻不足以确定上述条件是否应减少到 B 或 C。

解析器生成器通常有一个解决方案,即采用语法中第一个出现的那个,但这并不总是一个好的情况。在上述语法中,如果采用这种解决方案,由于 e 总是归约为 B,因此解析器将无法解析 bec 和 aed。

我建议更改语法,以免发生冲突。你知道整个语法只能产生 aec、bec、aed 和 bed。看看序列中什么是更好的,这些序列将被单独制作,这将独特地减少。

于 2016-02-20T11:10:31.273 回答