编译原理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2011春课程情况
(1)考试题目来自教材的例题和习题、教材的辅助程序、实验内容几个方面;(2)题型:填空(20%)、简单作答(10%),文法题(10%)、词法分析(20%)、语法分析(20%)、代码优化10%、Lex/yacc程序10%。
(3)重点在计算题上,即形式语言、词法分析、语法分析和代码优化,将占60-70%。主要有
形式语言(根据语言描述写上下文无关文法)(10分),
词法分析(自动机、正则式、正则文法之间相互转化,自动机应用)(20分);
语法分析部分是给出文法和待分析的串,按照某个分析方法构建分析表列分析过程(20分),
可能出现的分析方法有LL(1)、算符优先分析、LR(0)分析
左递归的消除、公共因子提取对文法进行改造
代码优化(10分)。给定一段程序(可能是中间代码形式的),进行优化或找出循环之类的题目。
Lex或Yacc程序简单设计(10)
(4)共有题目7道,时间100min;
(5)具体考试时间、地点待后通知。
1、给出如图所示NFA(非确定自动机)等价的DFA
2、构造正规式1(1|0)*101相应的DFA.
3、为正规式(ab)*a(a|b)构造NFA、DFA。
4、(1)考虑正规表达式1(1|0)*101,构造可以生成语言L(r)的一个正规文法。
(2)考虑如图所示的NFA N,构造可以生成语言L(N)的一个正规文法.
5、考虑如下文法G:
S-->1S|0S|1A
A-->0B|1B
B-->e (空串)
(1) 试构造语言为L(G)的一个正规表达式。
(2) 试构造语言为L(G)的一个有限自动机。
6、构造产生如下语言的上下文无关文法:
(1){a n b n|n>0}
(2){wcw R|w由a,b组成的任意串}
(3){ww R|w由a,b组成的任意串}
(4){w|w由a,b组成的任意串且w与其逆串相等}
(5) {w|w由a,b组成的任意串且w中a的个数是b个数的2倍}
7、考虑下面的文法:
S-->aS|aSbS|e e是空串的意思
这个文法是二义的,试给出串a a b的两个不同的:
(1)分析树。
(2)最左推导。
(3)最右推导。
8、已知文法G[S]:
S-->MH|a
H-->LS|e e是空串的意思
M-->K|MBL
K-->dML
L-->bHf
判断G是否是LL(1)文法,如果是,构造LL(1)分析表。
9、已知文法G[S]:
S-->MBf
M-->BbS|a
B-->dMg|e e是空串的意思
判断G是否是LL(1)文法,如果是,构造LL(1)分析表。
10、
对于文法G[V]:
V-->N|N[E]
E-->V|V+E
N-->i
(1) 构造G[V]的优先关系表,判断G[V]是否为算符优先文法。
(2) 分析输入串i[i+i+i]是否是G[V]的句子。
11、某语言的文法G(E)为:
E-->aTd|e e是空串的意思
T-->Eb|ac|e
(1)请证明G(E)不是LR(0)文法而是SLR(1)文法,请给出该文法的分析表。
(2)给出输入串aabdbd#的分析过程,并说明是否是G(E)的句子。
12、对于文法G[S]:
S-->a|^|(T)
T-->T,S| S
构造文法G[S]的算法优先关系矩阵,并判断该文法是否是算符优先文法。
13、划分下列程序的所有基本块,画出程序的流图。
(1) read x
(2) read y
(3) r:=x mod y
(4) if r=0 goto (8)
(5) x:=y
(6) y:=r
(7) goto (3)
(8) write y
(9) halt
14、已知四元式的代码序列如下:
(1) read a
(2) read b
(3) h:=1
(4) f:=1
(5) if f>3 goto (18)
(6) g::=1
(7) c:=a
(8) d:=b
(9) if g>2 goto (14)
(10) c:=c*c
(11) d:=d*d
(12) g::=g+1
(13) goto (9)
(14) f:=f+1
(15) e:=c+d
(16) h:=h*e
(17) goto (5)
(18) write h
(19) halt
完成一下任务:
(1)划分为基本块并画出其流程图。
(2)求每个每个结点的必经结点集。
(3)求流图的回边。
(4)找出流图中的循环。
15、已知四元式的代码序列如下:
(1) j:=1
(2) write j
(3) writeln
(4) R[j]:=1
(5) i:=1
(6) if i>12 goto (22)
(7) i:=i+1
(8) k:=1
(9) if k>4 goto (18)
(10)k:=k+1
(11)j:=j+1
(12)if j14 goto (14)
(13)j:=j+1
(14)if R[j] 1 goto (9)
(15)j:=j+1
(16)if j14 goto (14)
(17)goto (13)
(18)write j
(19)writeln
(20)R[j]:=1
(21)Goto (6)
(22)Halt
1、划分的基本块并画出其流图;
2、求每个结点的必经结点集;
3、求流图中的回边;
4、找出流图中的所有循环。
16、根据定义计算下列表达式文法的算符优先关系表。
(1)
E-->E+T|T
(2) T-->T*F|F
(3) F-->P^F|P
(4) P-->(E)|i
17、给出文法:
(1)求出该文法对应的全部LR(0)的项目;
(2)构造识别该文法所有活前缀的DFA;
(3)该文法是否是LR(0)的,若是,构造LR(0)分析表。18:对于下面的基本块,构造它的DAG表示。
(1)T0=3.14
(2)
T1=2*T0
(3)T0=R+r
(4) A=T1*T2
(5)B=A
(6) T4=R+r
(7)T5=T3*T4