考虑与上述问题相同的日期。 E1、E2 和 E3 的相应条目是
(一) A
(乙)乙
(C)丙
(四)丁答案: (C)
解释:
由于我们需要找到针对非终端 S 和 B 的条目 E1、E2 和 E3,所以我们将只处理那些在 LHS 上有 S 和 B 的产生式。
这里将解析表表示为 M[ X , Y ],其中 X 表示行(非终结符),Y 表示列(终结符)。
Rule 1: if P --> Q is a production, for each terminal
't' in FIRST(Q) add P-->Q to M [ P , t ]
Rule 2 : if epsilon is in FIRST(Q), add P --> Q to
M [ P , f ] for each f in FOLLOW(P).
对于产生式规则 S–> aAbB,它将被添加到解析表的位置 M[ S , FIRST( aAbB ) ],现在 FIRST(aAbB) = {a},因此将 S–> aAbB 添加到 M[ S , a ] 即 E1。
对于产生式规则 S–> bAaB,它将被添加到解析表的位置 M[ S , FIRST( bAaB ) ],现在 FIRST(bAaB) = {b},因此将 S–> bAaB 添加到 M[ S , b ] 即 E2
对于产生式规则 S–> epsilon ,它将被添加到解析表的 M[ S , FOLLOW(S) ] 位置,现在 FOLLOW(S) = { a , b , $ },因此将 S –> epsilon 添加到M[ S , a ] 和 M[ S , b ] 又分别是 E1 和 E2。
对于产生式规则 B –> S,它将被添加到解析表的 M[ B , FIRST( S ) ] 位置,现在 FIRST(S) 也包含 epsilon,因此将 B –> S 添加到 M[ S , FOLLOW (B) ],FOLLOW(B) 包含{$},即M[ S , $ ] 即E3。
epsilon 对应于空字符串。这个问题的测验