编译原理期末复习

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

A.
如图所示自动机M,请问下 列哪个字符串不是M所能识 别的( D )。 A. bbaa B. abba C. abab D. Aabb
9
3.判断句子、画分析树、文法符号集、终结符
集、非终结符集
1) 设有文法:
S→aSbS|bSaS|c (1)判断符号串ababba是否为文法G(S)的句子, 如果是画出其分析树。 (2)给出G(S)的元语言符号集、文法符号集、 终结符集、非终结符集
10
3.判断句子、画分析树、文法符号集、终结符
集、非终结符集
1) 设有文法:
S→aSbS|bSaS|c (1)判断符号串ababba是否为文法G(S)的句子, 如果是画出其分析树。 (2)给出G(S)的元语言符号集、文法符号集、 终结符集、非终结符集
11
练习:
设有文法G(S)为
S→ABx|xSx
CH4 语法分析——自下而上分析
4.LL(1)分析 例: 已知文法G(E)为: E->TE’
i E E’ T T’ F F→i T →FT’ E→TE’ E’→+T E’ T →FT’ T’→ε T’→*FT ’ F→(E) T’→ε T’→ε + * ( E→TE’ E’→ε E’→ε ) #
E’->+TE’|ε
da;aoa# 移进 a;aoa# 移进 ;aoa# 用S →a 归约 ;aoa# 移进 aoa# 移进 oa # 用S →a 归约 oa # 用S →S;S 归约 oa # 移进 a# 移进 # 用S →a 归约 # 用S→dSoS 归约 36 # 接受
2
FIRSTVT 和LASTVT
(一)FIRSTVT
构造集合FIRSTVT(P)的算法。 按其定义,可用下面两条规则来构造集合
FIRSTVT(P):
1. 若有产生式P→a…或P→Ra…,
则a FIRSTVT(P); 2. 若a FIRSTVT(R),且有产生式P→R… , 则a FIRSTVT(P)。

(二)LASTVT
LASTVT ( P) {a | P a,或P aQ, a VT 而Q VN }
A→xy|yAy|mn
B→xyA|m
(1)判断符号串ymnyxyxy是否为文法G(S)的
句子,如果是画出其分析树。
(2)给出G(S)的元语言符号集、文法符号集、
终结符集、非终结符集
12
5.有限自动机的表示
状态函数 、状态图、状态矩阵
例:
设有确定的有限自动机
M:({0,1,2,3},{a,b},δ ,0,{3})
5
acc
r4
S2 S7 r3 S2
r4
S3 S4 r3 S3
r4
6 r2 r3 8
r1
S4
r1
35
输入串da;aoa#的分析过程如下表:
步骤 1 2 3 4 5 6 7 8 9 10 11 12 状态栈 0 02 023 025 0254 02543 02546 025 0257 02573 02578 01 文法符号栈 # #d #da #dS #dS; #dS;a #dS;S #dS #dSo #dSoa #dSoS #S 剩余输入符号 动作
(4)设字符串ω =good,则ω 3=
CH2. 形式语言与自动机理论
(5)设有A,B两个符号串集合,其中A={a,abc},
B={xx,yy},则AB=( A )
A. B. C. D.
{axx,ayy,abcxx,abcyy} {axxyy,abcxxyy,abcyy,abcabc,xxxx,yyyy} {aabc,axx,} R1和R2代表不同正则集 则A 3= 。
a
6 b f
b
将M确定化,并画出确定化后的状态转换图(要求: 写出步骤)
16
给定非确定的有限自动机M如下图所示
将M确定化,并画出确定化后的状态转换图(要求: 写出步骤)
17
6 消除无关状态
5 a
a
6 b b
1
b
a
3 b 7 8
2
a
9
a
4
消除上图所示的DFA的无关状态(要求写出步骤)
18
7 有限自动机和正规式的转换
|T T→T*F | F F→P↑F | P P→(E) | i (1)计算该文法的FIRSTVT和LASTVT
(2)计算该文法的有限关系并产生优先关系表
39
(1)
FIRSTVT(E)={+,
*, ↑, i, ( } FIRSTVT(T)={ *, ↑, i, ( } FIRSTVT(F)={ ↑, i, ( } FIRSTVT(P)={ i, ( } LASTVT(E)={+, *, ↑, i, ) } LASTVT(T)={ *, ↑, i, ) } LASTVT(F)={ *, i, ) } LASTVT(P)={ i, ) }
子串(C
A.

B. abc C. xyab D. zab
xyz
CH2. 形式语言与自动机理论
(2)设字母表A={ab,x,y},字母表A上的符号串
ω =abxyabxy,则|ω |=

。 。 。
(3)设有字母表A={a,b,c,d,e},字母表A上的
符号串ω 1=add, ω 2=code,则ω 1ω 2=
δ (0,a)=1
δ (1,a)=3
δ (0,b)=2
δ (1,b)=2
δ (2,a)=1
δ (3,a)=3
δ (2,b)=3
δ (3,b)=3
13
画出其状态转换图和状态转换矩阵
练习:设有确定的有限自动机
M:({S,U,V,Q},{0,1},f,S,{Q})
f(S,0)=U f(S,b)=Q
f(U,0)=Q
47
48
49
50
语句(1)—语句(5)、(6)—(10)、语句(11)—
20-25
4-6 25-35 10-12
第7章 运行环境
第8章 代码优化
4-6
15-20
第9章 代码生成
6-8
3
CH2. 形式语言与自动机理论
主要题型:所有题型 1. 符号串、符号串集合的运算
符号串的长度、符号串的子串、符号串的连接、符
号串的方幂 符号串集合的乘积、符号串集合的方幂 例:
(1)设字符串ω=xyzabc,则下面哪个不是字符串ω的
40
1 + * ↑ i ( ) #
2
+
*Hale Waihona Puke Baidu

i
(
)
#
41
练习:
(1)计算该文法的FIRSTVT和LASTVT (2)计算该文法的有限关系并产生优先关系表
42
CH6 语义分析和中间代码生成
主要题型:所有题型
中间代码表示
写出表达式a:=b*c+b*d-e 的后缀表示、三元序
列、四元序列。
练习: 写出表达式A+B*(C-D)**N的后缀表示、三元序 列、四元序列。
E’->+TE’|ε
T ->FT’ T’->*FT’|ε F->(E)|i
其预测分析表为:
分析i+i+i*i是否为该文法的句子,写出分析过程
CH5 语法分析——自下而上分析
主要题型:所有题型 LR分析 实例:
CH5 语法分析——自下而上分析
文法G[M]及其LR分析表如下,请给出对串 dbba#的分析过程。 G[M]: 1) M →VbA 2) V →d
CH4 语法分析——自下而上分析 练习:
下列文法中
是LL(1)文法…………( B. S→aS|b D. S→aS|a

A. S→aSb|ab C. S→ab|Sab
CH4 语法分析——自下而上分析 2.First、Follow集 例:
E->E+T|T
T->TF|F
F->F*|a|b
求非终结符的FIRST集和FOLLOW集
练习:文法G[S]及其LR分析表如下,请
给出对输入串da;aoa#的分析过程。
G[S]:
0) S′→S
1) S→dSoS 2) S →dS 3) S →S;S 4) S →a
34
name 0 1 2 3 4 5 6 7 8
d S2 S2
o S3
ACTION ;
S4
a S3 S3
#
GOTO S 1
构造集合LASTVT(P)的算法。 按其定义,可用下面两条规则来构造集合

LASTVT(P):
1. 若有产生式P→… a或P→ … aQ,则a LASTVT(P); 2. 若a LASTVT(Q),且有产生式P→… Q , 则a LASTVT(P)。
38
设有文法G(E)如下:
E→E+T
f(V,0)=S
f(U,1)=V
f(V,1)=Q
f(Q,1)=V
画出其状态转换图
14
5. NFA转换为DFA (1) 给定非确定的有限自动机M如下图所示
将M确定化,并画出确定化后的状态转换图(要求
15
5. NFA转换为DFA 练习: 给定非确定的有限自动机M如下图所示
a
i 1 2 b 4 b a 3 a 5
例 练习
19
CH3 词法分析
主要题型: 填空、选择、判断
CH4 语法分析——自下而上分析
1判断文法是否是LL(1)文法
任何LL(1)文法是无二义性的 LL(1)文法不含左递归
下列文法中 A. C.
是LL(1)文法…………( B. S→xy|xSy

S→Sx|xy
S→xx|yxx
D. S→Sy|x
CH7 运行环境
主要题型:
填空、选择、判断
CH8 代码优化
主要题型: 填空、选择、判断、分析
基本块和控制流图 将下面程序划分成基本块并作出其程序控 制流图
46
(1) Read(A,B) (2) F=1 (3) C=A*A (4) D=B*B (5) If C<D goto L1 (6) E=A*A (7) F=F+1 (8) E=E+F (9) Write (E) (10)Halt (11)L1: E=B* (12)F=F+2 (13)E=E+F (14)Write (E) (15)If E>100 goto L2 (16)halt (17)L2:F=F-1 (18)goto L1
课程复习
题型: 填空 20分,10个空
选择 20分,10小题 判断 10分,10小题
简答题 20分,4小题
分析题 30分,3小题
2
编译原理复习纲要
第1章 编译引论 2-4
第2章 形式语言与自动机理论
第3章 词法分析 第4章 语法分析——自上而下分析 第5章 语法分析——自下而上分析 第6章 语义分析和中间代码生成
T ->FT’ T’->*FT’|ε F->(E)|i
其预测分析表为:
分析i*i+i*i是否为该文法的句子,写出分析过程
27
步骤 1 2 3
分析栈 #E
余留输入串 所用产生式 i*i+i*i#
4
5
6
7 8 9
练习:
4.LL(1)分析 例: 已知文法G(E)为: E->TE’
i E E’ T T’ F F→i T →FT’ E→TE’ E’→+T E’ T →FT’ T’→ε T’→*FT ’ F→(E) T’→ε T’→ε + * ( E→TE’ E’→ε E’→ε ) #
状态栈 0 03 02 024 0246 02467 024678 0246 01
文法符号 剩余输 栈 入符号
# #d #V #Vb #VbA #VbAb #VbAba #VbA #M dbba# bba# bba# ba# ba# a# # # #
动作 移进 用V →d归约 移进 用A →ε归约 移进 移进 用A →Aba 归约 用M →VbA 归约 接受 33
3) V →ε
4) A →a 5) A →Aba 6) A →ε
name 0 1 2 3 4 5 6 7 8
b r3 S4 r2 r6 r4 S7
ACTION d a S3

M 1
GOTO A
V 2
acc
S5
r6 r4 r1
6
S8
r5
r5
32
对串dbba#的分析过程如下表
步 骤
1 2 3 4 5 6 7 8 9
CH4 语法分析——自下而上分析
练习:
文法G[S]为: S→AB|bC A→b|aA B→ aD |bD C→AD|b D→aS|c 求非终结符的FIRST集和FOLLOW集
CH4 语法分析——自下而上分析
3. 消除直接左递归 例 消除下列文法的直接左递归 E->E+T T->T*F|F F->(E)|id|F(id) 答案: E->E’ E’->+TE’|ε T->FT’ T’->*FT’|ε F->(E)F’|idF’ F’->(id)F’|ε
(6)设有A={a,abc}
CH2. 形式语言与自动机理论
2. 句子的判断:判断一个句子是不是合法的句 子 (1)根据文法 (2)根据自动机
CH2. 形式语言与自动机理论
实例: 给定文法A→bA|cc,则符号串①cc
②bcbc ③
bcbcc ④bccbcc ⑤bbbcc中,是该文法句子的是 ( D ) ① B. ③④⑤ C. ②④ D. ①⑤
相关文档
最新文档