实现Firstvt 算法
时间: 2023-09-24 17:02:49 浏览: 65
一个求first的算法
Firstvt 算法是编译原理中的一个算法,用于求文法中每个非终结符的 Firstvt 集合。下面给出 Firstvt 算法的实现步骤:
1. 对于文法中的每个终结符 a,将 a 加入到 Firstvt(a) 中。
2. 对于文法中的每个非终结符 A,对于文法中每个形如 A → α 的产生式,将 Firstvt(α) 中的所有符号加入到 Firstvt(A) 中。
3. 重复执行步骤 2 直到 Firstvt 集合不再发生变化为止。
下面是一个示例文法及其 Firstvt 集合的求解过程:
文法 G:
S → ABc
A → a
A → ε
B → b
对于终结符 a、b、c,将它们加入到 Firstvt(a)、Firstvt(b)、Firstvt(c) 中。
对于非终结符 A、B,根据产生式 A → a 和 A → ε 可得 Firstvt(A) = {a},根据产生式 B → b 可得 Firstvt(B) = {b}。
对于产生式 S → ABc,根据 Firstvt(ABc) = {a, b},将 a、b 加入到 Firstvt(S) 中。
重复执行步骤 2,得到 Firstvt(S) = {a, b},Firstvt(A) = {a},Firstvt(B) = {b},Firstvt(c) = {c}。最终得到文法 G 的每个非终结符的 Firstvt 集合。
阅读全文