一、 简答题(31分)
1、什么是编译程序?(3分)
2、编译前端由哪些部分组成?(3分)
3、编译过程各阶段分别完成什么任务?(各用一句话简短回答)(5分)
4、请回答句子、句型和语言的定义。(6分)
5、给出下面状态转换图的(S,?,?,s0,F)的具体组成(6分)
6、已知文法G[Z]: Z→aA A→bA|ab
写出文法对应的语言(4分)
7、请回答自上而下语法分析和自下而上语法分析有什么区别。(4分) 二、已知文法G: T→a|e|(F)P F→T+F|T
P→*P|T
①试给出式子(a+e)*a的最左推导及语法树(4分) ②试给出式子(a)*e的最右推导及语法树(4分) ③指出句型(a+T)*P的所有短语、直接短语和句柄。(5分)
三、文法 S→AB|bBa A→Aab|c B→dB|ε
①对文法G消除左递归(2分)
②对改写后的文法判断是否LL(1)文法,求相应FIRST和FOLLOW集合(7分) ③给出预测分析表(4分)
四、假设字母表是{a,b},若要求所有以字母a开始,b结尾的符号串,写出相应正规式,并构造与之相对应的最小DFA.(10分)