编译原理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档