搜档网
当前位置:搜档网 › 合肥工业大学编译原理期末复习

合肥工业大学编译原理期末复习

合肥工业大学编译原理期末复习
合肥工业大学编译原理期末复习

编译原理基础题

一、选择题

1、在使用高级语言编程时,首先可通过编译程序发现源程序的全部( A)错误和部分语义错误。

A、语法

B、语义

C、语用

D、运行

2、编译过程中,语法分析器的任务是( B)。

(1)分析单词是怎样构成的; (2)分析单词串是如何构成语句和说明的;

(3)分析语句和说明是如何构成程序的;(4)分析程序的结构

A、(2)(3)

B、(2)(3)(4)

C、(1)(2)(3)

D、(1)(2)(3)(4)

3.生成能被5整除的正整数的文法G[Z]是_ C____。

A. G[Z]: Z→AC,A→BA|B,B→0|1|2|…|9,C→0|5

B. G[Z]: Z→AC,A→BA|ε,B→0|1|2|…|9,C→0|5

C. G[Z]:Z→DA0|A5,A→BA|ε,B→0|D,D→1|2|…|9

D. G[Z]:Z→AC|C,A→BA|B,B→0|1|2|…|9,C→0|5

4、编译程序中的语法分析器接受以( C)为单位的输入,并产生有关信息供以后各阶段使用。

A、表达式

B、产生式

C、单词

D、语句

5、算符优先分析法每次都是对( D)进行归约。

A、直接短语

B、句柄

C、素短语

D、最左素短语

6、过程调用时,参数的传递方法通常有( C )。

(1)传值;(2)传地址;(3)传结果;(4)传名

A、(1)(2)

B、(1)(2)(3)

C、(1)(2)(4)

D、(1)(2)(3)(4)

7、在编译方法中,动态存储分配的含义是( A )。

A、在运行阶段对源程序中的量进行分配

B、在编译阶段对源程序中的量进行分配

C、在编译阶段对源程序中的量进行分配,在运行时这些量的地址可以根据需要改变

D、以上都不对

8、a:= a+b*c↑(d/e)/f的逆波兰记号表示是()。

A、aabc*+↑de/f/:=

B、aabcde↑/*f/:=

C、aabcde/↑*f/+:=

D、以上都不对。

9.算符文法是指 A 的文法。

①没有形如U→...VW...的规则(U,V,W VN)

②VT中任意两个符号之间至多存在一种算符优先关系

③没有相同右部的规则

④没有形如U→ε的规则

A. ①

B. ①和②

C. ①、②和③

D. ①、②、③和④

10、编译程序绝大多数时间花在D上。

a.出错处理b.词法分析

c.目标代码生成d.管理表格

11.下述语句类中,_____A_ _____在编译阶段通常不产生可执行代码。

A. 变量说明语句

B. 流程控制语句

C. 输入输出语句

D. 赋值语句

12、词法分析器的输入是B。

a.单词符号串b.源程序

c.语法单位d.目标程序

13.在编译程序采用的优化方法中,D是在循环语句范围内进行的。

①合并已知常量②删除多余运算③删除归纳变量④运算强度削弱⑤代码外提

A. ①④

B. ①⑤

C. ①④⑤

D. ③④⑤

14.程序的基本块是指__ D____。

A. 不含无条件转移语句的程序段

B. 不含条件转移语句的程序段

C. 不含停机的语句程序段

D. 仅含有一个入口语句和一个出口语句的顺序程序段

15、文法G描述的语言L(G)是指A。

a. L(G)={α|S+ ?α , α∈V T*}

b. L(G)={α|S*?α, α∈V T*}

c. L(G)={α|S*?α,α∈(V T∪V N*)}

d. L(G)={α|S+ ?α, α∈(V T∪V N*)}

16、如果文法G是无二义的,则它的任何句子α A 。

a. 最左推导和最右推导对应的语法树必定相同

b. 最左推导和最右推导对应的语法树可能不同

c. 最左推导和最右推导必定相同

d. 可能存在两个不同的最左推导,但它们对应的语法树相同

17、文法G:E→E+T|T

T→T*P|P

P→(E)|I

则句型P+T+i的句柄和最左素短语为B 。

a.P+T和i

b. P和P+T

c. i和P+T+i

d.P和T

18、产生正规语言的文法为D。

a. 0型

b. 1型

c. 2型

d. 3型

19、有文法G:E→E*T|T

T→T+i|i

句子1+2*8+6按该文法G归约,其值为 B 。

a. 23 B. 42 c. 30 d. 17

20、若a为终结符,则A→α·aβ为B项目

a.归约

b.移进

c.接受

d.待约

21、就文法的描述能力来说,有C 。

a. SLR(1)?LR(0)

b. LR(1)?LR(0)

c. SLR(1)?LR(1)

d.无二义文法?LR(1)

22、一个A指明了在分析过程中的某时刻所能看到产生式多大一部分。

a.活前缀

b.前缀

c.项目

d.项目集

23、四元式之间的联系是通过 B 实现的。

a.指示器

b.临时变量

c.符号表

d.程序变量

24、表达式(┓A∨B)∧(C∨D)的逆波兰表示为 B 。

a. ┓AB∨∧CD∨

b. A┓B∨CD∨∧

c. AB∨┓CD∨∧

d. A┓B∨∧CD∨

25、终结符具有 D 属性。

a.传递

b.继承

c.抽象

d.综合

26、在编译方法中,动态存储分配的含义是 A 。

a. 在运行阶段对源程序中的数组、变量、参数等进行分配

b. 在编译阶段对源程序中的数组、变量、参数进行分配

c. 在编译阶段对源程序中的数组、变量、参数等进行分配,在运行时这些数组、变

量、参数的地址可根据需要改变

d. 以上都不正确

27、栈式动态分配与管理在过程返回时应做的工作有。

a. 保护SP

b. 恢复SP

c.保护TOP

d. 恢复TOP

28、下列 C 优化方法不是针对循优化进行的。

a.强度削弱b.删除归纳变量c.删除多余运算d.代码外提

29、对一个基本块来说, A 是正确的。

a.只有一个入口语句和一个出口语句b.有一个入口语句和多个出口语句c.有多个入口语句和一个出口语句d.有多个入口语句和多个出口语句

二、填空题

1、编译方式与解释方式的根本区别在于(是否生成目标代码)。

2、自顶向下语法分析方法会遇到的主要问题有(回溯)和(左递归带来的无限循环)。

3、自上而下语法分析方法的基本思想是:从(识别符号或开始符号)出发,不断建立(直接推导),试图构造一个推导序列,最终由它推导出与输入符号相同的(符号串)。

4、表达式a+b*(c+d/e)的逆波兰表示为(abcde/+*+ )。

5、文法符号的属性有(继承属性)和(综合属性)两种。

6.已知文法G[A]:A→(B)| a |ε,B→B,A | A,该文法的开始符号是_A__ ,非终结符号

集合为___{A,B}___,终结符号集合为__{(,),a}_____。

7.已知文法G[S]:S→AB,A→ aAb | c,B→ aBb| d,则对于非终结符A,FOLLOW(A)=__ {a,b,d}____。

8、Chomsky定义的四种形式语言文法分别为: 0型文法--又称短语文法,1型文法--又称上下文有关文法,2型文法--又称(上下文无关)文法,3型文法--又称(正规)文法。

9、在PASCAL中,由于允许用户动态申请与释放内存空间,所以必须采用(堆)存储分配方式。

10、局部优化是局限于一个(基本块)范围内的一种优化。

11、编译程序的工作过程还会伴有(表格处理)和(出错处理)。

12.有这样一个推导过程,其每一步推导都是对符号串中最右的非终结符进行替换,我们把这种推导过程称为__最右推导(或规范推导)_______ 。

三、判断题

1、一个有限状态自动机中,有且仅有一个唯一终态。( F)

2、自动机M和M′的状态数不同,则二者必不等价。( F )

3、对任意一个右线性文法G,都存在一个NFA M,满足L(G)=L(M)。(T)

4、对任何正规表达式e,都存在一个NFA M,满足L(G)=L(e)。( T)

5.在形式语言中,最右推导的逆过程称为规范归约。( T )

6.句型的每个直接短语都是某规则的右部。( T )

7.任何正规文法都是上下文无关文法。( T )

8. 计算机高级语言翻译成低级语言只有解释一种方式。( F )

9.自底而上语法分析方法的主要问题是候选式的选择。( F )10.“用高级语言写的源程序都必须通过编译, 产生目标代码后才能投入运行”这种说法。( F) 11.一个句型的句柄一定是文法某产生式的右部。( T )

12.在中间代码优化中循环上的优化主要有不变表达式外提和削减运算强度。( ) 13.对于数据空间的存贮分配,FORTRAN采用动态贮存分配策略。( )

14.综合属性是用于“ 自上而下” 传递信息。( F )

15.使用语法制导翻译方法的编译程序能同时进行语法分析和语义分析。( T )

16. 终结符既可以有综合属性,又可以有继承属性。( F )

17. 逆波兰表示法表示表达式时无须使用括号。( T )

18. 由于C语言的函数允许递归调用,因此对C程序中的所有变量的单元分配一律采用动态分配方式。( F )

19. DISPLAY表用来记录每层过程的最新活动记录地址,因此它的大小运行时确定。()

20. 最左素短语一定是短语。( T )

21. LR分析中的活前缀一定包含某句型的句柄的一部分或全部。( T )

22. 自下而上分析的“下”指的是被分析的源程序串。( T )

23. 文法G若是LALR(1)文法,则文法G必定是LR(1)文法。( T )

24. 语法分析必须在语义分析之前完成。( F )

25. 文法若存在左递归,则在自上而下语法分析过程中会因为假匹配造成算法的回溯。(T )

26. 在C语言中有一个语句 int int1;词法分析后识别出int、int、1和;四个单词。( F )

27. 一个有限自动机识别的语言是一个无限集合,则该有限自动机的状态图一定含有回路。( T )

28. 正规文法、正规式、NFA和DFA在接受语言的能力上是相互等价的。( T )

28. 文法G的一个句子对应于多个推导,则G是二义的。( T )

30. 编译程序是应用软件。( F )

编译原理试题及答案(期末复习版).pdf

<编译原理>历年试题及答案 一.(每项选择 2 分,共 20 分)选择题 1.将编译程序分成若干个“遍”是为了_b__。 a.提高程序的执行效率 b.使程序的结构更加清 晰 c.利用有限的机器内存并提高机器的执行效 率 d.利用有限的机器内存但降低了机器的执行 效率 2.构造编译程序应掌握__d__。 a.源程序 b.目标语言 c.编译 方法 d.以上三项都是 3.变 量应当 c_。 a.持有左值 b.持有右值 c.既持有左值又持有右值 d. 既不持有左值也不持有右值 4.编译程序绝大多数时间 花在_d___上。 a.出错处理 b.词法分析 c.目标代 码生成 d.管理表格 5.词法分析器 的输出结果是_c___。 a.单词的种别编码 b.单词在符号表中的位置 c. 单词的种别编码和自身值 d.单词自身值 6.正规式 MI 和 M2 等价是指__c__。 a. MI 和 M2 的状态数相等 b.Ml 和 M2 的有向弧条数相等。 C.M1 和 M2 所识别的语言集相等d. Ml 和 M2 状态数和有向弧条数相等 7.中间代码生成时所依据的是—c。 a.语法规则 b.词法规则c.语义规则 d.等价变换规则8.后缀式 ab+cd+/可用表达式__b_来表示。 a. a+b/c+d b. (a+b)/(c+d) c. a+b/(c+d) d. a+b+c/d 9.程序所需的数据空间在程序运行前就可确定,称为____c__管理技术。 a.动态存储 b.栈式存储 c.静态存储 d.堆式存储 10. 堆式动态分配申请和释放存储空间遵守___d_____原则。 a.先请先放 b.先请后放 c.后请先放 d.任意 二(每小题 10 分,共 80 分)简答题 1.画出编译程序 的总体结构图,简述各部分的主要功能。 2. 已知文法 G[E]: E→ET+|T T→TF* | F F→F^ | a 试证:FF^^*是文法的句型,指出该句型的短语、简单短语和句柄. 3.为正规式(a|b) *a(a|b)构造一个确定的有限自动机。 4.设文法 G(S):

唐益明的简介(合肥工业大学副研究员)_2015年6月

唐益明 合肥工业大学副研究员,博士,硕士生导师,CCF会员、IEEE会员. 学术兼职: 中国计算机学会多值逻辑与模糊逻辑专业委员会委员 中国计算机学会协同计算专业委员会委员 中国人工智能学会粗糙集与软计算专业委员会委员 Associate Editor: Journal of Mathematics and Informatics 审稿人:1) IEEE Transactions on Fuzzy Systems (SCI) 2) Information Sciences (SCI) 3) ISPRS Journal of Photogrammetry and Remote Sensing (SCI) 4) International Journal of Electrical Power & Energy Systems (SCI) 5) Signal Processing (SCI) 6) International Journal of fuzzy Systems (SCI) 7) 计算机学报(EI)主要论著 [1] Yiming Tang, Xiaoping Liu. Differently implicational universal triple I method of (1, 2, 2) type. Computers & Mathematics with Applications, 2010. (SCI, EI) [2] Xiaoping Liu, Yiming Tang, et al. A formal model of collaborative discussion for problem-solving. Chinese Journal of Electronics, 2012. (SCI,EI) [3] Yiming Tang, Fuji Ren, et al. Differently implicational α-universal triple I restriction method of (1, 2, 2) type. Journal of Systems Engineering and Electronics, 2012. (SCI,EI) [4] Yiming Tang, Fuji Ren. Universal triple I method for fuzzy reasoning and fuzzy controller. Iranian Journal of Fuzzy Systems, 2013. (SCI)[1-2] 目录 1简历 2研究方向 3学术兼职 4主要论著 5教学情况 1简历 唐益明,男,1982年出生,合肥工业大学副研究员,博士,硕士生导师,CCF多值逻辑与模糊逻辑专业委员会委员,CCF协同计算专业委员会委员,CAAI

四川大学编译原理期末复习总结

一、简答题 1.什么是编译程序 答:编译程序是一种将高级语言程序(源程序)翻译成低级语言(目标程序)的程序。 将高级程序设计语言程序翻译成逻辑上等价的低级语言(汇编语言,机器语言)程序的翻译程序。 2.请写出文法的形式定义 答:一个文法G抽象地表示为四元组 G=(Vn,Vt,P,S) –其中Vn表示非终结符号 –Vt表示终结符号,Vn∪Vt=V(字母表),Vn∩Vt=φ –S是开始符号, –P是产生式,形如:α→β(α∈V+且至少含有一个非终结符号,β∈V*) 3.语法分析阶段的功能是什么 答:在词法分析的基础上,根据语言的语法规则,将单词符号串分解成各类语法短语(例:程序、语句、表达式)。确定整个输入串是否构成语法上正确的程序。 4.局部优化有哪些常用的技术 答:优化技术1—删除公共子表达式 优化技术2—复写传播 优化技术3—删除无用代码 优化技术4—对程序进行代数恒等变换(降低运算强度) 优化技术5—代码外提 优化技术6—强度削弱 优化技术7—删除归纳变量 优化技术简介——对程序进行代数恒等变换(代数简化) 优化技术简介——对程序进行代数恒等变换(合并已知量) 5.编译过程分哪几个阶段 答:逻辑上分五个阶段:词法分析、语法分析、语义分析与中间代码生成、代码优化、目标代码生成。每个阶段把源程序从一种表示变换成另一种表示。 6. 什么是文法 答:文法是描述语言的语法结构的形式规则。是一种工具,它可用于严格定义句子的结构; 用有穷的规则刻划无穷的集合;文法是被用来精确而无歧义地描述语言的句子的构成方式;文法描述语言的时候不考虑语言的含义。 7. 语义分析阶段的功能是什么 答:对语法分析所识别出的各类语法范畴分析其含义,进行初步的翻译(翻译成中间代码); 并对静态语义进行审查。 8.代码优化须遵循哪些原则 答:等价原则:不改变运行结果 有效原则:优化后时间更短,占用空间更少 合算原则:应用较低的代价取得较好的优化效果 9.词法分析阶段的功能是什么 答:

编译原理期末考试习题及答案

一、填空题|(每题4分,共20分) 1. 乔母斯基定义的3型文法(线性文法)产生式形式 A→Ba|a,或A→aB|a,A,B∈Vn, a,b∈Vt 。 2.语法分析程序的输入是单词符号,其输出是语法单位。 3 型为 B → .aB 的LR(0)项目被称为移进项目,型为 B → a.B 的LR(0) 项目被称为待约项目, 4.在属性文法中文法符号的两种属性分别为继承属性和综合属性。 5、运行时存贮管理方案有静态存储分配、动态存储分配和堆式存储分配和方案。 二.已知文法 G(S) (1) E → T | E+T (2) T → F | F*F (3) F →(E)| i (1)写出句型(T*F+i)的最右推到并画出语法树。(4分) (2)写出上述句型的短语,直接短语和句柄。(4分) 答:(1)最右推到(2分) E ==> T ==> F ==> (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) :S → SaS |ε是二义的。(6分) 答:句子aaa对应的两颗语法树为:

因此,文法是二义文法 四.给定正规文法G(S): (1) S → Sa | Ab |b (2) A → Sa 请构造与之等价的DFA。(6分) 答:对应的NFA为:(6分) 状态转换表: a b {F} Φ{S} {S} {S,A} Φ {S,A} {S,A} {S} 五. 构造识别正规语言b*a(bb*a)*b* 最小的DFA(要求写出求解过程)。(15分)答:(1)对应的NFA(5分) a b {0} {1,3} {0} {1,3} Φ{2,3} {2,3} {1,3} {2,3} (5分) 六. 已知文法G(S) : (1) S → ^ | a | (T) (2) T → T,S | S 试:(1)消除文法的左递归;(4分) (2)构造相应的first 和 follow 集合。(6分) 答:(1)消除文法的左递归后文法 G’(S)为: (1) S → ^ | a | (T)

合肥工业大学期末复习

第一章 一、信息经济学的产生 起源于(1959)年马尔萨克的《信息经济学评论》 施蒂格勒——被誉为“信息经济学”和“管制经济学”的创始人。《信息经济学》、《劳动市场的信息》(1962)和《论寡占》 提出“搜寻”概念及其理论方法——施蒂格勒对微观信息经济学的主要贡献。 肯尼思·阿罗——无论何种信息共同具备两个明显特征:信息的使用具有不可分割性、信息难以被独占或垄断。 詹姆斯·莫里斯——经济激励机制问题,建立起(委托人—代理人)关系的基本模型,奠定了委托-代理关系的基本模型框架。 施蒂格利兹——对不完全信息条件下产品市场、资本市场和保险市场中经济行为的分析、信息在社会资源配置中的作用(特别是不利选择和道德风险导致的市场失败问题),以及微观信息市场分析三个领域 笼统地说,信息经济学就是研究经济行为中的信息现象及其规律的学科。 2、直至20世纪20年代。1921年,弗兰克·奈特对不确定性做了开拓性研究。 3、从假设条件角度分析,不确定性经济学主要研究不确定性形成的基础、方式、经济特征及其影响,同时也考虑如何减少不确定性的损失,但是,这种考虑不是建立在广泛研究信息对不确定性限制的基础上。近似地说,不确定性经济学是一门“被动的”信息经济学。 4、不确定性、风险和信息,构成信息经济学三个最基本的概念。 5、可以应用统计方法计算并预测其发生概率的风险,称为可保风险。不能用统计方法或其他方法计算并预测其发生概率的风险,称为不可保风险。 6、不确定性经济学认为,风险的完全不能转移与风险的完全转移一样,都是不经济的。 7、在现代社会中,没有其他制度能够像保险和股票市场那样通过市场并且以十分明确的形式来转移风险。通过保险市场和社会股票市场,企业一方面能够转移其可保风险,另一方面也可以转移其不可保风险。但是,无论企业或社会如何努力,它们都不可能通过保险市场转移其全部的可保风险,也不可能通过社会股票市场完全转移其不可保风险,因为无论是保险市场还是股票市场都存在着自身的局限。 第二章 1、信息的理论定义可近似地表述为:信息就是传递中的知识差。 2、(1)定义反映了信息发生的基础与过程。或者说,信息就是先验概率与后验概率之差。(2)定义揭示了信息价值的基础所在。信息之所以存在价值,关键在于存在知识差,后者能够使经济代理人改善决策环境而获得预期收益。(3)定义揭示了信息与经济知识增长之间的关系,知识差正是这种关系的中介,同时,知识差概念也显示了经济信息收集与处理活动的意义所在。(4)定义表明:信息具有层次性、不可分性和共享性,这是由知识差的层次性、不可分性和共享性决定的(5)定义说明了噪音、信息失真或误差的根本所在,是知识差在传递过程中必然存在绝对的损失。 3、信息商品正式得到社会承认的标志是知识产权的专利制度的确定 4、信息必须经过开发,把各类信息经过加工,整理成有序的、有应用价值的、有共享可能的信息才能成为信息资源 5、信息资源的开发和利用既是独立的又是重合的 信息资源开发和利用程度是衡量国家信息化水平的一个重要标志 信息资源的开发和利用是信息产业持续健康发展的根本保证 信息资源的开发利用不是一个一次性的工程建设问题,而是长期服务问题 政府的统计部门适宜做不进入市场竞争的统计信息服务工作,盈利性信息资源的开发利用交由企业做 第三章 1、1、商店的数量、价格的离散幅度构成市场价格离散的主要影响因素,但起决定作用的是价格在商店中离散的概率分布 2、价格离散幅度达的市场,价格离散率未必比离散幅度小的市场的价格离散率高 3、市场价格离散率不受市场平均价格的影响 2、1 价格离散程度越高,每次搜寻所获节省额就越大,有效搜寻次数就越多。2 购买商品的价格越高,或购买商品的数量越多,就越值得进行搜寻。 第四章 1、在完全竞争的简单模型中,一个生产澄汁的新厂商将会宣布它的产品已经准备好,以市场价格或低于市场价格出

编译原理课程设计心得体会范文(单片机)

编译原理课程设计心得体会范文(单片机)经过一个星期的编译原理课程设计,本人在刘贞老师的指导下,顺利完成该课程设计。通过该课程设计,收获颇多。 一、对实验原理有更深的理解 通过该课程设计,掌握了什么是编译程序,编译程序工作的基本过程及其各阶段的基本任务,熟悉了编译程序总流程框图,了解了编译程序的生成过程、构造工具及其相关的技术对课本上的知识有了更深的理解,课本上的知识师机械的,表面的。通过把该算法的内容,算法的执行顺序在计算机上实现,把原来以为很深奥的书本知识变的更为简单,对实验原理有更深的理解。 二、对该理论在实践中的应用有深刻的理解 通过把该算法的内容,算法的执行顺序在计算机上实现,知道和理解了该理论在计算机中是怎样执行的,对该理论在实践中的应用有深刻的理解。 三、激发了学习的积极性 通过该课程设计,全面系统的理解了编译原理程序构造的一般原理和基本实现方法。把死板的课本知识变得生动有趣,激发了学习的积极性。把学过的计算机编译原理的知识强化,能够把课堂上学的知识通过自己设计的程序表示出来,加深了对理论知识的理解。以前对与计算机操 作系统的认识是模糊的,概念上的,现在通过自己动手做实验,

从实践上认识了操作系统是如何处理命令的,如何协调计算机内部各个部件运行,对计算机编译原理的认识更加深刻。课程设计中程序比较复杂,在调试时应该仔细,在程序调试时,注意指针,将不必要的命令去除。 在这次课程设计中,我就是按照实验指导的思想来完成。加深了理解文件系统的内部功能及内部实现,培养实践动手能力和程序开发能力的目的。 四、理解了该知识点以及学科之间的融合渗透 本次课程设计程序部分是用c语言编写的,把《计算机操作系统》,《编译原理》,《算法分析与设计》《c语言》四门学科联系起来,把 各个学科之间的知识融合起来,把各门课程的知识联系起来,对计算机整体的认识更加深刻。使我加深了对《计算机操作系统》,《编译原理》,《算法分析与设计》《c语言》四门课程的认识。 嵌入式课程设计心得体会 本学期为期一周的嵌入式课程设计在不知不觉中结束了,虽说这次课程设计时间不是很长,但是感觉自己收获颇丰,不仅学习到了一些新知识,回顾了以前的一些快要遗忘的知识点,而且使自己的学习目标更加明确,学习方法更加完善,也体会到软件开发的趣味,更加清楚地认识到了自己在软件开发及学习上的一些不足之处。下面就来详细写一下我关于此次课程设计的心得体会: 此次课程设计的实训的是由上海杰普公司的楚老师带我们完成的。楚老师看上去比较年轻,给我们很有亲和力,技术上也很强,而

编译原理期末复习

编译原理期末复习 鉴于编译原理马上就要期末考试,我将手中集中的一些资料上的题目进行了整理归类,每种类型题目给出了所涉及到的基本知识,然后对每类题目中的第一道例题进行了做法进行了讲解,剩下的例题请给大家作为练习,答案也都给出,希望对大家复习有所帮助,最后由于时间很紧,整理的有些仓促,整理中难免有遗漏或错误,请大家见谅。 注:下面出现的字母中,若无特别说明,小写英文字母为终结符,大写英文字母为非终结符,希腊字母为终结符与非终结符的任意组合。 1、简答题(或者名词解释) 下面涉及到的概念中,加下划线的都是在以往一些试卷中出现的原题,务必掌握。 注:这类题目老师说答案不会超过一百个字,否则写的再多也不给分,有些点到即可,不要重复啰嗦。(1)简述编译程序的概念及其构成 答:1)编译程序:它特指把某种高级程序设计语言翻译成等价的低级程序设计语言的翻译程序。 2)构成: (2)简述词法分析阶段的主要任务(也有可能问语法分析阶段主要任务)答:词法分析的任务是输入源程序,对源程序进行扫描,识别其中的单词符号,把字符串形式的源程序转换成单词符号形式的源程序。 语法分析的主要任务是对输入的单词符号进行语法分析(根据语法规则进行推导或者归约),识别各类语法单位,判断输入是不是语法上正确的程序 (3) 简述编译程序的构造过程(这个大家看看,是对(1)和(2)的综合) 答:1)构造词法分析器:用于输入源程序进行词法分析,输出单词符号; 2)构造语法分析器:对输入的单词符号进行语法分析,识别各类语法单位,判断输入是不是语法上正确的程序 3)构造语义分析和中间代码产生器:按照语义规则对已归约出的语法单位进行语义分析并把它们翻译成中间代码。 4)构造优化器:对中间代码进行优化。 5) 构造目标代码生成器:把中间的代码翻译成目标程序。 6) 构造表格管理程序:登记源程序的各类信息和编译各阶段的进展情况。 7)构造错误处理程序:对出错进行处理。 (4) 说明编译和解释的区别: 1)编译要程序产生目标程序,解释程序是边解释边执行,不产生目标程序; 2)编译程序运行效率高而解释程序便于人机对话。 (5)文法:描述语言语法结构的形式规则,一般用一个四元式表示: G=(V T,V N,S,P),其中V T:终结符集合(非空) V N:非终结符集合(非空),且V T ?V N=? S:文法的开始符号,S?V N P:产生式集合(有限)。

编译原理期末考试题目及复习资料

一、填空题(每空2分,共20分) 1.编译程序首先要识别出源程序中每个单词,然后再分析每个句子并翻译其意义。 2.编译器常用的语法分析方法有自底向上和自顶向下两种。 3.通常把编译过程分为分析前端与综合后端两大阶段。词法、语法和语义分析是对源程序的分析,中间代码生成、代码优化与目标代码的生成则是对源程序的综合。 4.程序设计语言的发展带来了日渐多变的运行时存储管理方案,主要分为两大类,即静态存储分配方案和动态存储分配方案。 5.对编译程序而言,输入数据是源程序,输出结果是目标程序。 1.计算机执行用高级语言编写的程序主要有两种途径:解释和编译。 2.扫描器是词法分析器,它接受输入的源程序,对源程序进行词法分析并识别出一个个单词符号,其输出结果是单词符号,供语法分析器使用。 3.自下而上分析法采用移进、归约、错误处理、接受等四种操作。 4.一个LL(1)分析程序需要用到一张分析表和符号栈。 5.后缀式abc-/所代表的表达式是a/(b-c)。 二、单项选择题(每小题2分,共20分) 1.词法分析器的输出结果是__C。 A.单词的种别编码B.单词在符号表中的位置 C.单词的种别编码和自身值D.单词自身值 2.正规式M 1 和M 2 等价是指__C_。 A.M1和M2的状态数相等 B.M1和M2的有向边条数相等 C.M1和M2所识别的语言集相等D.M1和M2状态数和有向边条数相等 3.文法G:S→xSx|y所识别的语言是_C____。 A.xyx B.(xyx)* C.xnyxn(n≥0) D.x*yx* 4.如果文法G是无二义的,则它的任何句子α_A____。 A.最左推导和最右推导对应的语法树必定相同B.最左推导和最右推导对应的语法树可能不同 C.最左推导和最右推导必定相同D.可能存在两个不同的最左推导,但它们对应的语法树相同5.构造编译程序应掌握____D__。 A.源程序B.目标语言C.编译方法D.以上三项都是 6.四元式之间的联系是通过__B___实现的。 A.指示器B.临时变量C.符号表D.程序变量 7.表达式(┐A∨B)∧(C∨D)的逆波兰表示为__B___。 A.┐AB∨∧CD∨B.A┐B∨CD∨∧ C.AB∨┐CD∨∧D.A┐B∨∧CD∨ 8. 优化可生成__D___的目标代码。 A.运行时间较短 B.占用存储空间较小 C.运行时间短但占用内存空间大D.运行时间短且占用存储空间小 9.下列___C___优化方法不是针对循环优化进行的。 A. 强度削弱B.删除归纳变量C.删除多余运算D.代码外提 10.编译程序使用_B_区别标识符的作用域。 A. 说明标识符的过程或函数名B.说明标识符的过程或函数的静态层次 C.说明标识符的过程或函数的动态层次 D. 标识符的行号 三、判断题(对的打√,错的打×,每小题1分,共10分) 2.一个有限状态自动机中,有且仅有一个唯一的终态。x 3.一个算符优先文法的每个非终结符号间都也可能存在优先关系。X 4.语法分析时必须先消除文法中的左递归。X

【新版】《编译原理》期末复习

《编译原理》期末复习 【题型】 一、填空题:每空1分,共10分; 二、单选题:每题2分,共20分; 三、应用题:每小题6分,共48分; 四、综合分析题:每小题11分,共22分。 【知识点】 1.编译程序的整个过程从逻辑上依次分为哪6个阶段,其中还涉及哪2个重要工作。 2.语法分析有哪两大类方法? 3.编译程序和解释程序的概念,二者最主要的区别是? 4.句柄的定义。 5.什么是规范推导? 6.语言、句型、句子的定义。 7.LR分析法中的项目类型定义(待约项目、移入项目、归约项目)。 8.中间代码和目标代码区别。 9.文法与正则表达式所描述的语言及句子。 10.如何判断自动机(状态转换图)所能识别的字符串。 11.中间代码生成时主要依据什么规则? 12.根据给定文法,通过推导,画出指定句子的语法树。

13.自底向上的语法分析过程中,构造LR分析表时可能会面临的两种冲突。 14.判断源程序中出现的某类错误可能在编译的哪个阶段被发现。 15.词法分析及语法分析的输入输出是什么? 16.0、1、2、3型文法的定义、别名及描述能力强弱排名。 17.证明给定文法是二义性的(参考第二章课后练习)。 18.消除文法的左递归及提取公共左因子。 19.给定一个文法和该文法的句型,要求写出句型的最左推导、画出语法分析树、指出短语、简单短 语、句柄(参考第二章课后练习及课件中的例题)。 20.根据有限自动机的定义(五元组),给出其状态转换矩阵和状态转换图。 21.画出按照给定翻译模式分析某句子时所产生的分析树,分析其输出结果(参考第六章课后练习及 课件中的例题)。 22.针对给定的语言构造一个文法G,然后判断该文法类型(0、1、2、3型)(参考第二章课后练习)。 23.根据有限自动机M的定义(五元组),画出M的状态转换图,并说明它所识别或接受的语言是 什么(参考课件第三章例题)。 24.给出一个复合表达式,写出该表达式的三元式和四元式(如:-a*(b+c)/d)。 25.判断某语法制导定义在给定输入下的输出结果,分析文法产生的语言,指出语法制导定义功能。 26.已知文法及其LR分析表,给出对该文法某个句子的分析过程。(参考例题及习题) 27.给定一个文法,消除其左递归和提取左公因子,求所有非终结符的FIRST和FOLLOW集,构造 该文法的LL(1)分析表,根据分析表给出某句子的分析过程(参考第四章课后练习)。

《编译原理》总复习-07级

《编译原理》总复习-07级 第一章编译程序的概述 (一)内容 本章介绍编译程序在计算机科学中的地位和作用,介绍编译技术的发展历史,讲解编译程序、解释程序的基本概念,概述编译过程,介绍编译程序的逻辑结构和编译程序的组织形式等。 (二)本章重点 编译(程序),解释(程序),编译程序的逻辑结构。 (三)本章难点 编译程序的生成。 (四)本章考点 全部基本概念。 编译程序的逻辑结构。 (五)学习指导 引论部分主要是解释什么是编译程序以及编译的总体过程。因此学习时要对以下几个点进行重点学习:翻译、编译、目标语言和源语言这几个概念的理解;编译的总体过程:词法分析,语法分析、语义分析与中间代码的生成、代码优化、目标代码的生成,以及伴随着整个过程的表格管理与出错处理。 第三章文法和语言课外训练 (一)内容 本章是编译原理课程的理论基础,主要介绍与课程相关的形式语言的基本概念,包括符号串的基本概念和术语、文法和语言的形式定义、推导与归约、句子和句型、语法分析树和二义性文法等定义、文法和语言的Chomsky分类。 (二)本章重点 上下文无关文法,推导,句子和句型,文法生成的语言,语法分析树和二义性文法。(三)本章难点 上下文无关文法,语法分析树,文法的分类。 (四)本章考点 上下文无关文法的定义。 符号串的推导。 语法分析树的构造。 (五)学习指导 要构造编译程序,就要把源语言用某种方式进行定义和描述。学习高级语言的语法描述是学习编译原理的基础。上下文无关文法及语法树是本章学习的重点。语法与语义的概念;程序的在逻辑上的层次结构;文法的定义,文法是一个四元组:终结符号集,非终结符号集,开始符号、产生式集;与文法相关的概念,字符,正则闭包,积(连接),或,空集,产生式,推导,直接推导,句子,句型,语言,最左推导,最右推导(规范推导);学会用文法来描述语言及通过文法能分析该文法所描述的语言;语法树及二义性的概念、能通过画语法树来分析一个文法描述的语言是否具有二义性;上下文无关文法的定义和正规文法的定义,能判断一个语言的文法是哪一类文法。 附训练试题:

合肥工业大学编译原理 LL(1)自上而下文法分析

合肥工业大学计算机与信息学院计算机系2013级 编译原理课程设计报告 姓名:马骏 专业年级:信息安全13-1 学号:2013211869 提交时间:2016年07月

一、实验题目 自上而下的LL(1)文法分析 二、实验目的 了解掌握自上而下的LL(1)文法分析过程。 二、实验内容与要求 从语法分析树构造句型所有的推导的程序实现,接受用户任意输入的一个句型的语法分析树(其表示存于指定文件中),生成该语法分析树中包含的该句型的所有推导(显示输出)。构造一程序,实现教材P.78的FIRST(X)集合的构造算法。对任一给定的文法G,程序输出所有非终结符P的FIRST(P)。构造一程序,实现教材P.78的FIRST(X)集合的构造算法。对任一给定的文法G,程序输出所有非终结符P的FIRST(P)。在此基础上,构造一程序,实现教材P.79的FOLLOW(A)集合的构造算法。对任一给定的文法G,程序输出所有非终结符A的FOLLOW (A)。对于给定的一个LL(1)文法,假定所有非终结符号P的集合FIRST(P)和集合FOLLOW(P)都已知,构造其预测分析表(实现教材P.79给出的预测分析表构造算法)。对教材P.79给出的例4.7构造出预测分析表。程序显示输出预测分析表或输出到指定文件中。首先实现集合FIRST(X)构造算法和集合FOLLOW(A)构造算法,再实现教材P.79给出的预测分析表构造算法。程序显示输出预测分析表或输出到指定文件中。 对文法按教材P.76表4.1构造出G的预测分析程序,程序显示输出如P.78那样的匹配过程。 三、实验环境与工具 操作系统:Windows 7 开发语言:C++ 四、开发过程 1)字符要求: 你的程序必须能够根据以下字符来处理语法: - 终端字符:字母,数字,符号例如“+”,“—”,…; - 非终端字母表中的大写字母。 符号“=”,“|”和“#”(替换“ε”,因为它更容易输入到文本文件)被保留用于语法的描述中,因此不能被用作终端。 2)初始状态 您的程序通过读取一个文件中的“文本”格式开始。 这个文件的结构可以随意构建,不做要求,但建议做成简单的。 例如,程序描述以下语句: E = E + T |T T = T * F |F F =(E)| 0 |1 在这种情况,我们可以很容易确定E,T和F是非终端,而符号“(”,“)”,“*”和“+”和数字“0”和“1”是在终端。 第一个非终端(第一衍生物)被认为是语法的公理。

编译原理学习心得

编译原理学习心得 编译原理学习心得1 编译程序在计算机科学与技术的发展历史中发挥了巨大作用,是计算机系统的核心支撑软件。而“编译原理”这门课程一直以来是国内外大学计算机相关专业的重要课程。因为它的知识结构贯穿程序设计语言、系统环境以及体系结构,能以相对的视角体现从软件到硬件以及软硬件协同的整机概念。其理论基础又涉及形式语言与自动机、数据结构与算法等计算机学科的许多重要方面,为联系计算机科学理论和计算机系统的典范。 虽然编译原理这门课程在大多数的人里认为枯燥无味,学起来就像看天书一样。然而学习这门课程还是有一定的好处的。比如可以更加容易的理解在一个语言种哪些写法是等价的,哪些是有差异的,可以更加客观的比较不同语言的差异,并且学习新的语言的效率也会更加高,语言转换也会更加游刃有余。 不学“编译原理”这门课程的话,自己的编程思想会很浅显。而且编程也只仅仅停留在编程上,无法深入理解其中的原理。 学习编译原理的话,从文法、正规式、NFA与DFA的定义,下手,要用心动脑去体会 编译原理学习心得2

从联系最紧密的操作系统来说吧,你写多线程/多进程的程序就得和操作系统的知识打交道。写多线程得加锁吧,临界区、死锁的四个条件之类的标准的操作系统的内容吧(不得不吐槽一下,某国内一线电商干了三年的程序猿,写多线程居然不知道加锁,也是醉了)。进程间通信的几种方式什么管道、socket、共享内存等,这也是操作系统的内容吧。文件系统,这也是经常要打交道的东西。还有内存什么的,你做Android 开发,这些里边有很多东西都在系统层面被封装好了,但是你要是不知道原理,一旦出了错根本无从调试,况且你该不会打算写一辈子写Android 就是填逻辑吧。 然后,是编译原理,普通的程序猿是接触不到编译器或者虚拟机的开发的。但是这并不意味着编译原理就用不到。说个最常见的读取配置文件,只要你的配置文件有自定义的语法,你就要用编译原理的东西。还有类似于自动生成代码啦、正则表达式啦这些都算是编译原理的内容。你既然是写Java 的不了解虚拟机怎么可以,最基本的字节码总是需要能看懂的吧,分析一些疑难杂症的时候字节码还是很有用的。 最后,是计算机原理,如果只是做应用开发的话计算机原理其实不必要掌握的多深入,但是一些基本的概念还是要清楚的。比如寄存器、缓存、中断什么的,关键的时候可以帮助你调试。在一些对性能要求非常高的场合,也是很有作用的。此外,学了

(2020年整理)编译原理期末总复习题(含答案).doc

第八节习题一、单项选择题 1、将编译程序分成若干个“遍”是为了 b 。 a.提高程序的执行效率 b.使程序的结构更加清晰 c.利用有限的机器内存并提高机器的执行效率 d.利用有限的机器内存但降低了机器的执行效率 2、构造编译程序应掌握 d 。 a.源程序b.目标语言 c.编译方法d.以上三项都是 3、变量应当 c 。 a.持有左值b.持有右值 c.既持有左值又持有右值d.既不持有左值也不持有右值 4、编译程序绝大多数时间花在 b 上。 a.出错处理b.词法分析 c.目标代码生成d.管理表格 5、 d 不可能是目标代码。 a.汇编指令代码b.可重定位指令代码 c.绝对指令代码d.中间代码 6、使用 a 可以定义一个程序的意义。 a.语义规则b.词法规则 c.产生规则d.词法规则 7、词法分析器的输入是 a 。 a.单词符号串b.源程序 c.语法单位d.目标程序 8、中间代码生成时所遵循的是- d 。 a.语法规则b.词法规则 c.语义规则d.等价变换规则 9、编译程序是对 d 。 a.汇编程序的翻译b.高级语言程序的解释执行 c.机器语言的执行d.高级语言的翻译 10、语法分析应遵循 b 。 a.语义规则b.语法规则 c.构词规则d.等价变换规则 解答 1、将编译程序分成若干个“遍”是为了使编译程序的结构更加清晰,故选b。 2、构造编译程序应掌握源程序、目标语言及编译方法等三方面的知识,故选d。 3、对编译而言,变量既持有左值又持有右值,故选c。 4、编译程序打交道最多的就是各种表格,因此选d。 5、目标代码包括汇编指令代码、可重定位指令代码和绝对指令代码3种,因此不是目标代码的只能选d。 6、词法分析遵循的是构词规则,语法分析遵循的是语法规则,中间代码生成遵循的是语义规则,并且语义规则可以定义一个程序的意义。因此选a。 7、b 8、c 9、d 10、c 二、多项选择题

编译原理实验报告-合肥工业大学版

编译原理实验报告 合肥工业大学计算机科学与技术 完成日期:2013.6.3 实验一词法分析设计 一、实验功能:

对输入的txt文件内的内容进行词法分析: 由文件流输入test.txt中的内容, 对文件中的各类字符进行词法分析 打印出分析后的结果; 二、程序结构描述:(源代码见附录) 1、利用Key[]进行构造并存储关键字表;利用optr[]进行构造并存储运算符表;利用separator[]进行构造并存储分界符表; 2、bool IsKey(string ss) {}判断是否是关键字函数若是关键字返回true,否则返回false; bool IsLetter(char c) {}判断当前字符是否字母,若是返回true,否则返回false; bool IsDigit(char c) {}判断当前字符是否是数字,若是返回true,否则返回false; bool IsOptr(string ss) {}判断当前字符是否是运算符,若是返回true,否则返回false; bool IsSeparator(string ss) {}判断当前字符是否是分界符,若是返回true,否则返回false; void analyse(ifstream &in) {}分析函数构造; 关系运算符通过switch来进行判断; 三、实验结果

实验总结: 词法分析的程序是自己亲手做的,在实现各个函数时花了不少功夫, 1、要考虑到什么时候该退一字符,否则将会导致字符漏读甚至造成字符重复读取。 2、在实现行数和列数打印时要考虑到row++和line++应该放在什么位置上才可以,如当读取一个\n时line要增加一,而row需要归0处理,在读取某一字符串或字符后row需要加一; 3、对于关系运算符用switch结构进行选择判断即可解决一个字符和两个字符的运算符之间的差异; 4、将自己学过的知识应用到实践中是件不怎么容易的事情,只有亲身尝试将知识转化成程序才能避免眼高手低,对于知识的理解也必将更加深刻。

合肥工业大学编译原理实验

宣城校区 实验报告 课程名称编译原理 专业班级计算机0001班 学生姓名及学号赵保飞 68 指导教师李芒宏 实验地点计算机中心楼第四机房 2017 ~ 2018 学年第一学期

《编译原理》课程实验报告实验名称词法分析设计 姓名赵保飞系院专业计算机科学 与技术 班级 计算机01 班 学号68 实验日期指导教师李芒宏成绩 一、实验目的和要求 通过本实验的编程实践,使学生了解词法分析的任务,掌握词法分析程序设 计的原理和构造方法,使学生对编译的基本概念、原理和方法有完整的和清楚的 理解,并能正确地、熟练地运用。 二、实验原理 (1)实验数据结构说明 K[]String数组-关键字表;s[]char数组—分界符;m[]char数组—算术运算符;r[]String数组—关系运算符;ArrayList型String数组ci—常数;ArrayList型String数组id—标识符(2)实验算法描述 (3)算法流程图

三、源程序代码和测试结果 package lexicalAnalysis; import.*; import.*; public class lexicalAnalysis{ static String k[]={"for","main","if","while","void","public","static","printf","scanf","asm","do","return","typedef ","auto","double","break","short","using","default","long"};ength()==1){quals(b))){ display(4,r[i],' ');ength()==2){quals(a))){

编译原理课程设计心得体会

编译原理课程设计心得体会 假期期间我参加了由高平市教育局组织的构建高效课堂的培训,课题是三环节问题导学课课堂教学模式,张艳红老师论述了课堂是教学的主要阵地之一,是教师传授知识、学生学习知识的场所,教师和学生交往互动的空间,是教师引导学生发展、探究知识的主渠道,也是实现高效教学的主战场。要提高英语教学质量,就必须重视英语课堂教学,实现有效课堂教学。教师如何优化课堂教学,激发学生学习英语的兴趣,培养学生良好的英语学习习惯,通过这次理论学习和培训,使我对课堂有效教学有了更深刻的认知: 经过一个星期的编译原理课程设计,本人在老师的指导下,顺利完成该课程设计。通过该课程设计,收获颇多。 一、对实验原理有更深的理解 通过该课程设计,掌握了什么是编译程序,编译程序工作的基本过程及其各阶段的基本任务,熟悉了编译程序总流程框图,了解了编译程序的生成过程、构造工具及其相关的技术对课本上的知识有了更深的理解,课本上的知识师机械的,表面的。通过把该算法的内容,算法的执行顺序在计算机上实现,把原来以为很深奥的书本知识变的更为简单,对实验原理有更深的理解。 二、对该理论在实践中的应用有深刻的理解 要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常德,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题的课程设计结束了,但是从中学到的知识会让我受益终身。 通过把该算法的内容,算法的执行顺序在计算机上实现,知道和理解了该理论在计算机中是怎样执行的,对该理论在实践中的应用有深刻的理解。 自1987年就和程永革一起共事的歌舞话剧团演唱队队长骆汉泉含泪说道:“永革是我的好兄弟,这么多年,我们一起排练、演出,他的敬业精神一直留在我的脑海中,他的艺术才华和人品都给我们留下了深刻的印象。作为艺术人才,他尽职尽责,用自己的生命演绎出人生的追求。虽然他已经离我们而去,但是他难能可贵的责任担当和执着敬业的奉献精神一直感染着我们,我们也将在今后的工作中,以他为榜样,演好戏、做好人。” 月27日,全县《科学》教研会在城内小学召开。与其它学科教研会不同的是,《科学》教研会不是对新课标进行培训,而是科学课高效课堂的培训。原因是新拟定的《科学课程标准》还没有正式颁布。这次会议,全县专兼职老师一共100多人,观摩了三节高效课堂教学,聆听了龚主任所作的“构建自主探究式的高效课堂”专题讲座。

《编译原理》期末考试复习题

《编译原理》期末考试复习题 一、是非题(请在括号内,正确的划√,错误的划×)(每个2分,共20分) ×1.计算机高级语言翻译成低级语言只有解释一种方式。() ×2.在编译中进行语法检查的目的是为了发现程序中所有错误。() √3.甲机上的某编译程序在乙机上能直接使用的必要条件是甲机和乙机的操作系统功能完全相同。 () ×4.正则文法其产生式为 A->a , A->Bb, A,B∈VN , a 、b∈VT 。 () √5.每个文法都能改写为 LL(1) 文法。 () √6.递归下降法允许任一非终极符是直接左递归的。 () ×7.算符优先关系表不一定存在对应的优先函数。 () ×8.自底而上语法分析方法的主要问题是候选式的选择。 () ×9.LR 法是自顶向下语法分析方法。 () ×10.简单优先文法允许任意两个产生式具有相同右部。 () 三、填空题(每空1分,共10分) 1.编译程序的工作过程一般可以划分为词法分析,语法分析,语义分析,中间代码生成,代码优化等几个基本阶段,同时还会伴有__ ___和 ___ _。 表格管理出错处理_ 2.若源程序是用高级语言编写的,__ __是机器语言程序或汇编程序,则其翻译程序称为 __ __ 。 _目标程序_编译程序 3.编译方式与解释方式的根本区别在于__ __。 是否生成目标代码_ 4.对编译程序而言,输入数据是__ __, 输出结果是__ ___。 _源程序目标程序

5.产生式是用于定义__ __的一种书写规则。 _语法成分 6.语法分析最常用的两类方法是___ __和__ __分析法。 自上而下_自下而上 四、简答题(20分) 1. 什么是句子?什么是语言 ? 答:(1)设G是一个给定的文法,S是文法的开始符号,如果S x(其中x∈VT*),则称x是文法的一个句子。 (2)设G[S]是给定文法,则由文法G所定义的语言L(G)可描述为:L(G)={x│S x,x∈VT*} 。 一、是非题(请在括号内,正确的划√,错误的划×)(每个2分,共20分) ×1.对于数据空间的存贮分配,FORTRAN采用动态贮存分配策略。() ×2.甲机上的某编译程序在乙机上能直接使用的必要条件是甲机和乙机的操作系统功能完全相同。() √3.递归下降分析法是自顶向上分析方法。() ×4.产生式是用于定义词法成分的一种书写规则。() √5.LR 法是自顶向下语法分析方法。() √6.在SLR (1 )分析法的名称中,S的含义是简单的。() ×7.综合属性是用于“ 自上而下” 传递信息。() ×8.符号表中的信息栏中登记了每个名字的属性和特征等有关信息,如类型、种属、所占单元大小、地址等等。() ×9.程序语言的语言处理程序是一种应用软件。() ×10.解释程序适用于COBOL 和FORTRAN 语言。() 三、填空题(每空1分,共10分) 1.一个句型中的最左简单短语称为该句型的___句柄__。

合肥工业大学编译原理期末复习

编译原理基础题 一、选择题 1、在使用高级语言编程时,首先可通过编译程序发现源程序的全部( A)错误和部分语义错误。 A、语法 B、语义 C、语用 D、运行 2、编译过程中,语法分析器的任务是( B)。 (1)分析单词是怎样构成的; (2)分析单词串是如何构成语句和说明的; (3)分析语句和说明是如何构成程序的;(4)分析程序的结构 A、(2)(3) B、(2)(3)(4) C、(1)(2)(3) D、(1)(2)(3)(4) 3.生成能被5整除的正整数的文法G[Z]是_ C____。 A. G[Z]: Z→AC,A→BA|B,B→0|1|2|…|9,C→0|5 B. G[Z]: Z→AC,A→BA|ε,B→0|1|2|…|9,C→0|5 C. G[Z]:Z→DA0|A5,A→BA|ε,B→0|D,D→1|2|…|9 D. G[Z]:Z→AC|C,A→BA|B,B→0|1|2|…|9,C→0|5 4、编译程序中的语法分析器接受以( C)为单位的输入,并产生有关信息供以后各阶段使用。 A、表达式 B、产生式 C、单词 D、语句 5、算符优先分析法每次都是对( D)进行归约。 A、直接短语 B、句柄 C、素短语 D、最左素短语 6、过程调用时,参数的传递方法通常有( C )。 (1)传值;(2)传地址;(3)传结果;(4)传名 A、(1)(2) B、(1)(2)(3) C、(1)(2)(4) D、(1)(2)(3)(4) 7、在编译方法中,动态存储分配的含义是( A )。 A、在运行阶段对源程序中的量进行分配 B、在编译阶段对源程序中的量进行分配 C、在编译阶段对源程序中的量进行分配,在运行时这些量的地址可以根据需要改变 D、以上都不对 8、a:= a+b*c↑(d/e)/f的逆波兰记号表示是()。 A、aabc*+↑de/f/:= B、aabcde↑/*f/:= C、aabcde/↑*f/+:= D、以上都不对。 9.算符文法是指 A 的文法。 ①没有形如U→...VW...的规则(U,V,W VN) ②VT中任意两个符号之间至多存在一种算符优先关系

相关主题