《编译原理》设计性实验二:
算符优先分析
实验目的:掌握 FirstVT 和 LastVT 集的算法,算符优先分析表的构造算法及其分析过程。
实验要求:在 6 学时内完成整个内容,要求以表格或图形的方式实现。
实验内容:分为如下 3 个部分完成:
2.1 FirstVT 集和 LastVT 集生成算法模拟
【
【
问
问
题
题
描
描
述
述
】
】
给定一个上下文无关文法,根据算法设计一个程序,求文法中每个非终结符的 FirstVT 集和
LastVT 集,并能给出算法的单步动态模拟过程。
【
【
算
算
法
法
描
描
述
述
】
】
/*求 FirstVT 集的算法*/
PROCEDURE insert(P,a);
IF not F[P,a] then
begin
f[p,a] = true; (P,a)进栈
end;
Procedure FirstVT;
Begin
for 对每个非终结符 P 和终结符 a do
F[P,a] = false
for 对每个形如 P→a…或 P→Qa…的产生式 do
Insert(P,a)
while stack 非空
begin
栈顶项出栈,记为(Q,a)
for 对每条形如 P→Q…的产生式 do
insert(P,a)
end;
end.
【
【
基
基
本
本
要
要
求
求
】
】
动态模拟算法的基本功能是: