西南科技大学编译试卷_西南科技大学编译原理
西南科技大学编译试卷由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“西南科技大学编译原理”。
一.文法分析
G[S]:S::=SS+S::=SS-S::=SS*S::=SS/S::=iS::=j
1.写出文法中的终结符和非终结符。
2.写出ii+i/的最左推导。
3.ii+i/是句子吗,为什么?
4.画出iiS+*的语法数。
5.写出iiS+*的全部短语、简单短语、句柄(相同的短语要分别说明)
二.词法分析
1.画出a(a|b)*b的NFA(写出具体步骤,ε不能省略)
2.将1中NFA确定化(给出确定化过程,可以不画状态图)
3.求2中DFA的最简DFA(给出状态转换矩阵)
三.语法分析
1.G[E]:E::=aEbBc|adB::=Bbc|b
1).G[E]是否是LL(1)文法
2)将G[E]提取左公因子,消除左递归得文法G1[E]
3)求G1[E]中非终结符的FOLLOW集
4)文法G1[E]是否是LL(1)文法,为什么
5)构造G1[E]的LL(1)分析表
6)写出文法中有右递归的非终结符的递归下降程序
2.G[S]: S::=L*LS::=LL::=LBL::=BB::=0B::=1
1).拓广文法
2).求拓广后文法的项目集规范族
3).该文法是否是LR(0)文法,为什么
4)改文法是否是SLR(1)文法,为什么
四.综合题
int main()
{
inta,b=2,num1;
float c,d,e,num2,num3;
//略去d、c、e的赋值及其它运算
p=a+b
a=2+3;①
num1=a+b;②
num2=c+d+d;③
num3=c+d+e;④
return 0;
}
1).编译程序语法分析和词法分析分别能检查出以上C语言代码中的什么错误
2)在语义分析是能为符号表中变量写入哪些内容
3)将①——④化为四元式
4)化简3中四元式并写出化简后的四元式