这是我在课堂测验中遇到的一些问题,只是想验证它们的正确性。语法:

S -> ABC
A -> df | epsilon
B -> f | epsilon
C -> g | epsilon

1.) B 的跟随集包含 g 和 epsilon (T/F)?答:F。Follow 集合中没有 epsilon,对吗?(仅 $ 又名输入结束)

2.) 第一组 S 包含 d、f、g 和 epsilon (T/F)?答:T。我之所以说假,是因为我认为 First(S) = First(A),而 g 不属于其中。谁是正确的?

有帮助吗?

解决方案

  1. 你是对的。如果涉及 epsilon,它将被计入 First 集合,而不是 Follow 集合。如果产生式可以结束字符串,则 $ 进入 Follow 集合,而不是 epsilon。
  2. 测验是正确的。产生式 S 确实可以以 d、f 和 g 中的任何一个开始,也可以以空字符串开始。考虑输入字符串 g。和S很配吧?A由空串满足,B由空串满足,C由g满足。由于A、B、C都满足,所以S也满足。S 消耗的第一个字符是 g,因此 g 必须位于 First(S) 中。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top