求firstvt和lastvt集合的算法思路
时间: 2023-11-22 09:05:56 浏览: 96
FirstVT集和LastVT集生成算法模拟(编译原理课设).doc
求一个文法的 FirstVT 和 LastVT 集合,可以采用如下算法思路:
1. 对每个非终结符号,初始化其 FirstVT 集合为空集,初始化其 LastVT 集合为空集。
2. 对于每个产生式 A → α,将 First(α) 中所有非空终结符号加入 A 的 FirstVT 集合。若 α 可以推导出 ε,则将 A 的 FollowVT 集合加入 A 的 FirstVT 集合。
3. 对于每个产生式 A → α,将 Last(α) 中所有非空终结符号加入 A 的 LastVT 集合。若 α 可以推导出 ε,则将 A 的 FollowVT 集合加入 A 的 LastVT 集合。
4. 重复执行步骤 2 和 3,直到没有新的终结符号可以加入 FirstVT 或 LastVT 集合为止。
5. 对于每个产生式 A → α,若存在一个非终结符号 B,使得 α 可以写作 γB,则将 B 的 FirstVT 集合加入 A 的 FollowVT 集合。
6. 对于每个产生式 A → α,若存在一个非终结符号 B,使得 α 可以写作 Bγ,则将 B 的 LastVT 集合加入 A 的 FollowVT 集合。
7. 重复执行步骤 5 和 6,直到没有新的非终结符号可以加入 FollowVT 集合为止。
8. 对于每个非终结符号 A,其 FirstVT 和 LastVT 集合即为步骤 2 和 3 最终计算得到的结果。
以上就是求 FirstVT 和 LastVT 集合的算法思路。
阅读全文