上机实验内容
实验一编译程序的分析与验证
实验二算术表达式的扩充
实验三添加新的程序语句(一)
实验四添加新的程序语句(二)
1. 实验目的
了解编译程序中LR分析表的作用以及语义加工程序的功能。
2. 实验要求
PILER的运行,检验编译程序输出结果的正确性。
实验一编译程序的分析与验证
3. 实验内容
(1) 验证下述程序输出结果的正确性:
begin
i:=1;
while i<=N do
begin
i:=i+1;
if B=1 then
begin
j:=2;
while i*j<=N do
begin
B:=0;
j:=j+1
end
end
end
end#~
(2) 自行设计一程序进行正确性验证, 给出二元式序列的注释及状态栈STACK加工分析对应的符号栈内容。
实验二算术表达式的扩充
1. 实验目的
掌握LR分析表的设计方法和语义加工程序的扩充。
2. 实验要求
参照算术表达式LR分析表的设计方法,设计扩充后的算术表达式LR分析表,并对原语义加工程序进行修改,加入新添加的内容。
3. 实验内容
算术表达式文法扩充如下:
E→E+E∣E-E∣E*E∣E/E∣(E)∣i
试根据该文法重新设计LR分析表,并修改语义加工程序,最后验证修改的结果。
实验三添加新的程序语句(一)
1. 实验目的
通过添加新的程序语句,全面了解一个语句的编译程序设计过程。
2. 实验要求
对添加的语句设计LR分析表及相应的处理程序,并将其添加到程序语义处理程序中。
3. 实验内容
将计数循环for语句的功能添加到编译程序中。for语句的文法及每个产生式相应的语义子程序如下:
F1→for i:=E(1) {GEN(:=,E(1).PLACE,_,ENTRY(i);
:=ENTRY(i);
:=NXQ;
GEN(j,_,_,0);
F1·QUAD:=NXQ}
F2→F1 step E(2) {:=;
:=;
GEN(+,,E(2).PLACE,);
BACKPATCH(,NXQ)}
F3→F2 until E(3) {:=;
q:=NXQ;
GEN(j≤,,E(3).PLACE,q+2);
:=NXQ;
GEN(j,_,_,0)}
胡元义上机实验内容 来自淘豆网m.daumloan.com转载请标明出处.