编译原理期末考试习题集与答案解析Word格式文档下载.docx
《编译原理期末考试习题集与答案解析Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《编译原理期末考试习题集与答案解析Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。
(E)==>
(E+T)==>
(E+F)==>
(E+i)==>
(T+i)==>
(T*F+i)
(2)语法树(2分)
(3)(4分)
短语:
(T*F+i),T*F+i,T*F,i
直接短语:
T*F,i
句柄:
T*F
三.证明文法G(S):
SSaS|ε是二义的。
(6分)
句子aaa对应的两颗语法树为:
因此,文法是二义文法
四.给定正规文法G(S):
(1)SSa|Ab|b
(2)ASa
请构造与之等价的DFA。
对应的NFA为:
(6分)
状态转换表:
a
b
{F}
Φ
{S}
{S,A}
五.构造识别正规语言b*a(bb*a)*b*最小的DFA(要求写出求解过程)。
(15分)
(1)对应的NFA(5分)
(2)将
(1)所得的NFA确定化:
(5分)
{0}
{1,3}
{1,3}
{2,3}
{2,3}
六.已知文法 G(S):
(1)S^|a|(T)
(2)TT,S|S
试:
(1)消除文法的左递归;
(2)构造相应的first和follow集合。
(1)消除文法的左递归后文法G’(S)为:
(1)S^|a|(T)
(2)TST’|S
(3)T’,ST’|ε(4分)
(2)(6分)
first
follow
S
a^(
#,)
T
)
T’
ε
七.已知文法 G(S):
(1)SSiA|A
(2)AA+B|B
(3)BA*|(
试构造非终止符的firstVT和lastVT集合。
(10分)
firstVT
lastVT
i,+,*,(
i,+,*,(
A
+,*,(
B
*,(
八.已知文法 G(S):
(1)SBB
(2)BaB
(3)Bb
的follow集合如表:
(1)给出该文法的LR(0)项目集规范族划分;
(2)填写相应的SLR
(1)的分析表。
(1)LR(0)项目集规范族划分(8分)
(2)SLR
(1)分析表(7分)
状态
Action
Goto
#
S3
S4
1
2
Acc
5
3
6
4
R3
R1
R2
九.设某语言的not-then-else语句的语法形式为:
SnotEthenS1
其语义解释为:
针对自上而下的语法分析器,
(1)分段产生式;
(3分)
(2)写出每个产生式对应的语义动作。
(7分)
(1)分段产生式(3分)及语义动作(7分)
(1)RnotEthen{Backpatch($2.FC,nxq);
$$.chain=$2.Tc}
(2)SRS1{Backpatch($2.chain,nxq)}
1.乔母斯基定义的2型文法(上下文无关文法)产生式形式Aβ,A∈Vn,β∈V+。
2.词法分析程序的输入是字符串,其输出是单词符号。
3算符有限分析方法每次都是对最左素短语进行规约。
型为BaB.的LR(0)项目被称为规约项目。
4、写出x:
=b*(d-e)/(c-d)+e的逆波兰式__xbde-*cd-/e+:
=__。
5、常用的两种动态存贮分配办法是__栈式存储分配和堆式存储__分配。
二.已知文法 G(S):
试:
(1)写出句型(a,(a,a))的最左推到并画出语法树。
(2)写出上述句子的短语,直接短语和句柄。
(1)最左推到(2分)
S==>
(T)==>
(T,S)==>
(S,S)==>
(a,S)==>
(a,(T))==>
(a,(T,S))==>
(a,(S,S))==>
(a,(a,S))==>
(a,(a,a))
(a,(a,a)),a,(a,a),(a,a),a,a,a
三.证明文法G(S):
SaSb|Sb|b是二义的。
句子aabbbb对应的两颗语法树为:
(1)SaA
(2)AaB|bA
(3)BaA|b
对应的DFA为:
(6分)
五.构造识别正规语言(ab*|a)*最小的DFA(要求写出求解过程)。
(1)对应的NFA(5分)
{1}
{1,2}
(5分)
(3)T’,ST’|ε
求first和follow集合,构造改文法的LL
(1)分析表。
文法相应的first和follow集合(5分)
其LL
(1)分析表如下:
非终止符的firstVT和lastVT集合如下:
试构造算符的优先关系表。
i
+
(
*
I
>
<
八已知文法 G(S):
(1)Sa|aAb|b|bBa
(2)A1A0|ε
(3)B1B0|ε
求:
该文法的LR(0)项目集规范族。
九.设某语言的DO-while语句的语法形式为:
SdoS1whileE
其语义解释为:
(1)分段产生式(3分)
G(S):
(1)Rdo
(2)URS1while
(3)SUE
(2)产生式对应的语义动作(7分)
(1)Rdo{$$.loop=nxq}
(2)URS1while{$$.loop=$1.loop}
(3)SUE{backpatch($2.FC,$1.loop);
Backpatch($2.TC,nxq)}