山东大学 编译原理期末考题 回忆版 (2021.12)
2021SC@SDUSC
一、25分
1.正规式的概念
2.语言和文法的概念
3.简述基本块的划分规则
4.一个编译系统还有静态分配存储方式和动态的堆和栈的存储方式,请简述C语言的内存分配方式
5.现有一个词法分析方法GetToken(),和ACTION和GOTO的LR(0)预测分析表,请用伪代码完成自底向上的语法分析
二、15分
有下列文法G(S)
S->ABc
A->a
A->ϵ
B->b
B->ϵ
请判断它是否为LL(0)文法,如果是请构造出分析表。使用自顶向下的方法分析ac语句。
三、15分
1)请构造正规集为Σ={a,b},以ab开头的ab字符串的正规式
2)画出DFA分析图
3)进行DFA的标准化和最小化
四、15分
有下列文法G(E)
E->T|E //“|”为终结符
E->T
T->TF
T->F
F->P
F->P* //“*”为终结符
p->a
p->b
p->(E)
判断是否为STR(1)文法,如果是,请构造STR(1)分析表
五、15分
while (c<=100) do c:=c+1
进行上述语句的中间代码翻译(语法制导、四元式)
六、15分
T1=A+B
T2=5
M=T2*4
N=C-D
L=T1+N
给一串运算式,做DAG优化,并写出对应的代码。(寄存器可用L0、L1,L、M、N活跃)(PS:公式记不清了,自己编的)