编译原理--名词解释

编译原理--名词解释
编译原理--名词解释

名词解释

1、编译:编译程序的翻译过程。词法分析,语法分析,语义分析,中间代码生成,代码优化,目标代码生成. 语言:由文法G生成的语言记为L(G),它是文法G的一切句子的集合:L(G)={x|S =>* x,其中S为文法的开始符号,且x ∈VT*}

2、义文法:若一个文法存在某个句子对应两棵不同的语法树,则称这个文法是二义的。或者,若一个文法存在某个句子有两个不同的最左(右)推导,则称这个文法是二义的。

3、二义语言:如果产生上下文无关语言的每一个文法都是二义的,则说此语言是先天二义的。

4、属性文法:属性文法(attribute grammar)是一个三元组:A=(G,V,F),其中G:是一个上下文无关文法,V:有穷的属性集,F:关于属性的属性断言或一组属性的计算规则(称为语义规则) 。

5、活动记录:一个过程的一次执行所需要的信息,使用一个连续的存储区来管理这个区(块),叫做一个活动记录AR。

6、词法:规定什么是正确的单词,boy 不能写成byo等等。

7 、语法(文法):是指一组规则,用它可以形成和产生一个合适的程序。(定义什么样的符号序列是合法的)

8 、语义:自然语言中词语的意义,逻辑形式系统中符号的解释。(定义什么样的符号序列是有含义的)

9 、句子:有文法G[s],若S =>* x,且x∈VT*,则称x是文法G的句子。

10 、句型:有文法G[s],若S =>* x,则称x是文法G的句型。

11 、语法树:设G=( VN,VT,P,S)为一cfg,若一棵树满足下列4个条件,则此树称作G的语法树。

12 、最左/最右推导:在推导的任何一步α β,其中α、β是句型,都是对α中的最左(右)非终结符进行替换。

13 、自上而下分析:从文法的开始符号出发,反复使用文法的产生式,寻找与输入符号串匹配的推导,或者说,为输入串寻找一个最左推导。

14 、自下而上分析:从输入符号串开始,逐步进行归约,直至归约到文法的开始符号。

15 、短语:存在文法G[s],S =>* αAδ且 A =>+ β,则称β是句型αβδ相对于非终结符A的短语。

16 、句柄:一个句型的最左直接短语称为该句型的句柄

17 、项目:在右端某一位置有圆点的G的产生式

18 、语法制导翻译:在语法分析的同时,执行语义规则描述的动作

19 、回填:一旦真假出口确定下来之后,用顺着真链和假链把真假出口补上.

20 、拉链:为了记录需回填地址的四元式,把需要回填的真出口的四元式拉成链,把需要回填家出口的四元式拉成一链,分别称作真链假链。

21 、目标程序运行时存储区划分图:

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

一、填空题|(每题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)

编译原理概念_名词解释

编译过程的六个阶段:词法分析,语法分析,语义分析,中间代码生成,代码优化,目标代码生成 解释程序:把某种语言的源程序转换成等价的另一种语言程序——目标语言程序,然后再执行目标程序。 解释方式是接受某高级语言的一个语句输入,进行解释并控制计算机执行,马上得到这句的执 行结果,然后再接受下一句。 编译程序:就是指这样一种程序,通过它能够将用高级语言编写的源程序转换成与之在逻辑上等价的低级语言形式的目标程序(机器语言程序或汇编语言程序)。 解释程序和编译程序的根本区别:是否生成目标代码 句子的二义性(这里的二义性是指语法结构上的。):文法G[S]的一个句子如果能找到两种不同的最左推导(或最右推导),或者存在两棵不同的语法树,则称这个句子是二义性的。 文法的二义性:一个文法如果包含二义性的句子,则这个文法是二义文法,否则是无二义文法。 LL(1)的含义:(LL(1)文法是无二义的; LL(1)文法不含左递归) 第1个L:从左到右扫描输入串第2个L:生成的是最左推导 1:向右看1个输入符号便可决定选择哪个产生式 某些非LL(1)文法到LL(1)文法的等价变换: 1. 提取公因子 2. 消除左递归 文法符号的属性:单词的含义,即与文法符号相关的一些信息。如,类型、值、存储地址等。 一个属性文法(attribute grammar)是一个三元组A=(G, V, F) G:上下文无关文法。 V:属性的有穷集。每个属性与文法的一个终结符或非终结符相连。属性与变量一样,可以进行计算和传递。 F:关于属性的断言或谓词(一组属性的计算规则)的有穷集。断言或语义规则与一个产生式相联,只引用该产生式左端或右端的终结符或非终结符相联的属性。 综合属性:若产生式左部的单非终结符A的属性值由右部各非终结符的属性值决定,则A的属性称为综合属继承属性:若产生式右部符号B的属性值是根据左部非终结符的属性值或者右部其它符号的属性值决定的,则B的属性为继承属性。 (1)非终结符既可有综合属性也可有继承属性,但文法开始符号没有继承属性。 (2) 终结符只有综合属性,没有继承属性,它们由词法程序提供。 在计算时:综合属性沿属性语法树向上传递;继承属性沿属性语法树向下传递。 语法制导翻译:是指在语法分析过程中,完成附加在所使用的产生式上的语义规则描述的动作。 语法制导翻译实现:对单词符号串进行语法分析,构造语法分析树,然后根据需要构造属性依赖图,遍历语法树并在语法树的各结点处按语义规则进行计算。 中间代码(中间语言) 1、是复杂性介于源程序语言和机器语言的一种表示形式。 2、一般,快速编译程序直接生成目标代码。 3、为了使编译程序结构在逻辑上更为简单明确,常采用中间代码,这样可以将与机器相关的某些实现细节置于代码生成阶段仔细处理,并且可以在中间代码一级进行优化工作,使得代码优化比较容易实现。 何谓中间代码:源程序的一种内部表示,不依赖目标机的结构,易于代码的机械生成。 为何要转换成中间代码:(1)逻辑结构清楚;利于不同目标机上实现同一种语言。 (2)便于移植,便于修改,便于进行与机器无关的优化。 中间代码的几种形式:逆波兰记号,三元式和树形表示,四元式 符号表的一般形式:一张符号表的的组成包括两项,即名字栏和信息栏。 信息栏包含许多子栏和标志位,用来记录相应名字和种种不同属性,名字栏也称主栏。主栏的内容称为关键字(key word)。 符号表的功能:(1)收集符号属性(2) 上下文语义的合法性检查的依据:检查标识符属性在上下文中的一致性和合法性。(3)作为目标代码生成阶段地址分配的依据

蒋立源 编译原理第三版第二章 习题与答案(修改后)

第2章习题 2-1 设有字母表A1 ={a,b,c,…,z},A2 ={0,1,…,9},试回答下列问题: (1) 字母表A1上长度为2的符号串有多少个? (2) 集合A1A2含有多少个元素? (3) 列出集合A1(A1∪A2)*中的全部长度不大于3的符号串。 2-2 试分别构造产生下列语言的文法: (1){a n b n|n≥0}; (2){a n b m c p|n,m,p≥0}; (3){a n#b n|n≥0}∪{c n#d n|n≥0}; (4){w#w r# | w∈{0,1}*,w r是w的逆序排列 }; (5)任何不是以0打头的所有奇整数所组成的集合; (6)所有由偶数个0和偶数个1所组成的符号串的集合。 2-3 试描述由下列文法所产生的语言的特点: (1)S→10S0S→aA A→bA A→a (2)S→SS S→1A0A→1A0A→ε (3)S→1A S→B0A→1A A→C B→B0B→C C→1C0C→ε (4)S→aSS S→a 2-4 试证明文法 S→AB|DC A→aA|a B→bBc|bc C→cC|c D→aDb|ab 为二义性文法。 2-5 对于下列的文法 S→AB|c A→bA|a B→aSb|c 试给出句子bbaacb的最右推导,并指出各步直接推导所得句型的句柄;指出句子的全部短语。

2-6 化简下列各个文法 (1) S→aABS|bCACd A→bAB|cSA|cCC B→bAB|cSB C→cS|c (2) S→aAB|E A→dDA|e B→bE|f C→c AB|dSD|a D→eA E→fA|g (3) S→ac|bA A→c BC B→SA C→bC|d 2-7 消除下列文法中的ε-产生式 (1) S→aAS|b A→cS|ε (2) S→aAA A→bAc|dAe|ε 2-8 消除下列文法中的无用产生式和单产生式 (1) S→aB|BC A→aA|c|aDb B→DB|C C→b D→B (2) S→SA|SB|A A→B|(S)|( ) B→[S]|[ ] (3) E→E+T|T T→T*F|F F→P↑F|P P→(E)|i 第2章习题答案 2-1 答: (1) 26*26=676 (2) 26*10=260 (3) {a,b,c,...,z, a0,a1,...,a9, aa,...,az,...,zz, a00,a01,...,zzz},共有26+26*36+26*36*36=34658个 2-2 解: (1) 对应文法为G(S)=({S},{a,b},{ S→ε| aSb },S) (2) 对应文法为G(S)=({S,X,Y},{a,b,c},{S→aS|X,X→bX|Y,Y→cY|ε },S) (3)对应文法为G(S)=({S,X,Y},{a,b,c,d,#}, {S→X,S→Y,X→aXb|#, Y→cYd|# },S)

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

一、填空题(每空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

编译原理习题

一、名词解释 1.正规文法 2. 编译程序 3. 文法的推导 4.子树 5. LL(1)文法 6. 文法的句子 7. LR (0)文法 8. 请写出四种参数传递的方式 二综合题 1. 请写出编译程序的五个步骤。 2. 给定文法G :(0)S →aAcBe (1)A →b (2)A →Ab (3)B →d 若有句型 aAbcde ,试问b 是它的直接短语吗?它的短语是什么?句柄是什么? 3. 设有文法:S->aSbS|bSaS|ε 通过为句子abab 建立两个最左推导来说明该文法是二义文法。 4. 写出下列语言的上下文无关文法:{}0,|)(≥=m n G L c b a m n n 5. 写出下列语言的上下文无关文法:L(G)={a n b n c m d m , n, m ≥0}。 6. 令文法G :S → aS S →a | b 给出句子aaaab 的最左推导。 7. 证明下面的文法是有二义性的。 E →-EE E →-E E →a|b|c 8. 文法G 为: E→E+T|T T→T*F|F F→(E)|i (1)画出句型(E+F)*i 的语法树; (2)给出句型(E+F)*i 短语,简单(直接)短语,句柄。 9. 设字母表∑={a,b},给出∑上的正则式R=(a | ba )* (1)构造NFA M ,使得L (M )=L (R )。 (2)将NFA M 确定化、最小化,得到minDFA M 。 (3)求右线形文法G ,使得L (G )=L (M ) 10. 设字母表∑={0,1},给出∑上的正则式R=0(0 | 1)*1 (1)构造NFA M ,使得L (M )=L (R )。 (2)将NFA M 确定化,最小化,得到minDFA M 。 11. 设字母表∑={0,1},给出∑上的正则式R=(a|b)*a (a|b) (1)构造NFA M ,使得L (M )=L (R )。

编译原理第二章-课后题答案

第二章 3.何谓“标志符”,何谓“名字”,两者的区别是什么? 答:标志符是一个没有意义的字符序列,而名字却有明确的意义和属性。 4.令+、*和↑代表加、乘和乘幂,按如下的非标准优先级和结合性质的约定,计算1+1*2↑2*1↑2的值。 (1)优先顺序(从高到低)为+、*和↑,同级优先采用左结合。 (2)优先顺序为↑、+、*,同级优先采用右结合。 答:(1)1+1*2↑2*1↑2=2*2↑2*1↑2=4↑2*1↑2=4↑2↑2=16↑2=256 (2)1+1*2↑2*1↑2=1+1*2↑2*1=1+1*4*1=2*4*1=2*4=8 6.令文法G6为 N-〉D|ND D-〉0|1|2|3|4|5|6|7|8|9 (1)G6的语言L(G6)是什么? (2)给出句子0127、34、568的最左推导和最右推导。 (1)由0到9的数字所组成的长度至少为1的字符串。即:L(G6)={d n|n≧1,d∈{0,1,…,9}} 答: (2)0127的最左推导:N=>ND=>NDD=>NDDD=>DDDD=>0DDD=>01DD=>012D=>0127 0127的最右推导:N=>ND=>N7=>ND7=>N27=>ND27=>N127=>D127=>0127 (其他略) 7.写一个文法,使其语言是奇数集,且每个奇数不以0开头。 答:G(S):S->+N|-N N->ABC|C C->1|3|5|7|9 A->C|2|4|6|8 B->BB|0|A|ε [注]:可以有其他答案。 [常见的错误]:N->2N+1 原因在于没有理解形式语言的表示法,而使用了数学表达式。 8.令文法为 E->T|E+T|E-T T->F|T*F|T/F F->(E)|i (1)给出i+i*i、i*(i+i)的最左推导和最右推导。 (2)给出i+i+i、i+i*i和i-i-i的语法树,并给出短语,简单短语和句柄。 答:(1) i*(i+i)的最左推导: E=>T=>T*F=>F*F=>i*F=>i*(E)=>i*(E+T)=>i*(T+T)=>i*(F+T)=>i*(i+T)=>i*(i+F)=> i*(i+i) i*(i+i)的最右推导: E=>T=>T*F=>T*(E) =>T*(E+T)=>T*(E+F)=>T*(E+i)=>T*(T+i)=>T*(F+i)=> T*(i+i)=> F*(i+i) => i*(i+i) (其他略) [注]:要牢记每一步都是对最左(右)的一个非终结符号进行一步推导。 (2) i+i+i的语法树:

编译原理试题(卷)汇总-编译原理期末试题(卷)(8套含答案解析-大题集)

编译原理考试题及答案汇总 一、选择 1.将编译程序分成若干个“遍”是为了_B__。 A . 提高程序的执行效率 B.使程序的结构更加清晰 C. 利用有限的机器内存并提高机器的执行效率 D.利用有限的机器内存但降低了机器的执行效率 2.正规式 MI 和 M2 等价是指__C__。 A . MI 和 M2 的状态数相等 B.Ml 和 M2 的有向弧条数相等。 C .M1 和 M2 所识别的语言集相等 D. Ml 和 M2 状态数和有向弧条数相等 3.中间代码生成时所依据的是 _C_。 A.语法规则 B.词法规则 C.语义规则 D.等价变换规则 4.后缀式 ab+cd+/可用表达式__B_来表示。 A. a+b/c+d B.(a+b)/(c+d) C. a+b/(c+d) D. a+b+c/d 6.一个编译程序中,不仅包含词法分析,_A____,中间代码生成,代码优化,目标代码生成等五个部分。 A.( ) 语法分析 B.( )文法分析 C.( )语言分析 D.( )解释分析 7.词法分析器用于识别__C___。 A.( ) 字符串 B.( )语句 C.( )单词 D.( )标识符 8.语法分析器则可以发现源程序中的___D__。 A.( ) 语义错误 B.( ) 语法和语义错误 C.( ) 错误并校正 D.( ) 语法错误 9.下面关于解释程序的描述正确的是__B___。 (1) 解释程序的特点是处理程序时不产生目标代码 (2) 解释程序适用于 COBOL 和 FORTRAN 语言 (3) 解释程序是为打开编译程序技术的僵局而开发的 A.( ) (1)(2) B.( ) (1) C.( ) (1)(2)(3) D.( ) (2)(3) 10.解释程序处理语言时 , 大多数采用的是__B___方法。 A.( ) 源程序命令被逐个直接解释执行 B.( ) 先将源程序转化为中间代码 , 再解释执行 C.( ) 先将源程序解释转化为目标程序 , 再执行 D.( ) 以上方法都可以 11.编译过程中 , 语法分析器的任务就是__B___。 (1) 分析单词是怎样构成的 (2) 分析单词串是如何构成语句和说明的 (3) 分析语句和说明是如何构成程序的 (4) 分析程序的结构 A.( ) (2)(3) B.( ) (2)(3)(4)C.( ) (1)(2)(3) D.( ) (1)(2)(3)(4) 12.编译程序是一种___C__。 A. ( ) 汇编程序 B.( ) 翻译程序 C.( ) 解释程序 D.( ) 目标程序 13.文法 G 所描述的语言是_C____的集合。 A. ( ) 文法 G 的字母表 V 中所有符号组成的符号串 B.( ) 文法 G 的字母表 V 的闭包 V* 中的所有符号串 C.( ) 由文法的开始符号推出的所有终极符串 D. ( ) 由文法的开始符号推出的所有符号串 14.文法分为四种类型,即 0 型、1 型、2 型、3 型。其中 3 型文法是___B__。 A. ( ) 短语文法 B.( ) 正则文法 C.( ) 上下文有关文法 D.( ) 上下文无关文法15.一个上下文无关文法 G 包括四个组成部分,它们是:一组非终结符号,一组终结符号,一个开始符号,以及一组 __D___。 A.( ) 句子 B.( ) 句型 C.( ) 单词 D.( ) 产生式 16.通常一个编译程序中,不仅包含词法分析,语法分析,中间代码生成,代码优化,目标代码生成等五个部分,还应包括_C____。

编译原理 第二章习题答案

第2章习题解答 1.文法G[S]为: S->Ac|aB A->ab B->bc 写出L(G[S])的全部元素。 [答案] S=>Ac=>abc 或S=>aB=>abc 所以L(G[S])={abc} ============================================== 2. 文法G[N]为: N->D|ND D->0|1|2|3|4|5|6|7|8|9 G[N]的语言是什么? [答案] G[N]的语言是V+。V={0,1,2,3,4,5,6,7,8,9} N=>ND=>NDD.... =>NDDDD...D=>D......D =============================================== 3.已知文法G[S]: S→dAB A→aA|a B→ε|bB 问:相应的正规式是什么?G[S]能否改写成为等价的正规文法?[答案] 正规式是daa*b*;

相应的正规文法为(由自动机化简来): G[S]:S→dA A→a|aB B→aB|a|b|bC C→bC|b 也可为(观察得来):G[S]:S→dA A→a|aA|aB B→bB|ε ===================================================================== ========== 4.已知文法G[Z]: Z->aZb|ab 写出L(G[Z])的全部元素。 [答案] Z=>aZb=>aaZbb=>aaa..Z...bbb=> aaa..ab...bbb L(G[Z])={a n b n|n>=1} ===================================================================== ========= 5.给出语言{a n b n c m|n>=1,m>=0}的上下文无关文法。 [分析] 本题难度不大,主要是考上下文无关文法的基本概念。上下文无关文法的基本定义是:A->β,A∈Vn,β∈(Vn∪Vt)*,注意关键问题是保证a n b n的成立,即“a与b的个数要相等”,为此,可以用一条形如A->aAb|ab的产生式即可解决。 [答案] 构造上下文无关文法如下: S->AB|A A->aAb|ab B->Bc|c [扩展]

编译原理试卷

课程名称:编译原理专业班级:【本科】 备注: 学生不得在试题纸上答题(含填空题、选择题等客观题) 一、单项选择题(本题共10道小题,每小题2分,共20分) 1、在产生式中,符号“→”(“::=”)表示(D )。 A. 等于 B. 恒等于 C. 取决于 D. 定义为 2、编译程序是对(D )程序进行翻译。 A. 汇编语言 B.机器语言 C.自然语言 D. 高级语言 3、合并表达式中的常量运算的目的是(C )。 A.合并常量,使表达式中的常量尽可能少 B.合并常量,使表达式尽可能简短 C.将可在编译时刻计算的运算在编译时刻计算出来,用所计算出来的值替换表达式中出现的所有这种运算,使得生成的代码指令尽可能少 D.以上都不是 4、对应Chomsky四种文法的四种语言之间的关系是(B )。 A.L0?L1?L2?L3 B.L3?L2?L1?L0 C.L3=L2?L1?L0D.L0?L1?L2=L3 5、在状态转换图中,结点代表(D ),用圆圈表示。 A.输入缓冲区B.向前搜索C.字符串D.状态 6、编译程序前三个阶段完成的工作是(C )。 A.词法分析、语法分析和代码优化 B.代码生成、代码优化和词法分析 C.词法分析、语法分析、语义分析和中间代码生成 D.词法分析、语法分析和代码生成 7、自底向上语法分析法的原理是(C )。 A. “移进——推导法” B. “最左推导法” C. “移进——归约法” D. “推导——归约法” 8、无符号常数的识别与拼数工作通常在(C )阶段完成。 A. 语法分析 B. 语义分析 C. 词法分析 D. 代码优化 9、下述方法中,(C )不是自底向上的语法分析方法。 A. 规范归约 B.算符优先分析法 C.递归下降分析法 D.LR分析法 10、算符优先分析法从左到右扫描输入串,当栈顶出现(D )时进行归约。 A. 素短语 B. 直接短语 C.句柄 D. 最左素短语 二、判断题(本题共10道小题,每小题2分,共20分)正确的画“√”,错误的画“X” 1、( 错) 对任何一个编译程序来说,产生中间代码是不可缺少的。 2、( 错) 符号表的内容在词法分析阶段填入并在以后各阶段得到使用。 3、( 错) 设有一个LR(0)项目集I={X→α.Bβ, A→α.},该项目集含有“归约-归约”冲突。 4、( 错) 对文法G中的一个句子,如果能够找到两种以上的推导,则该句子是二义性的。 5、( 对) 一个句型的句柄一定是文法某产生式的右部。 6、( 对) 设有一个LR(0)项目集Ii={X→α.,A→α.},该项目集含有“归约-归约冲

编译原理第三版课后答案

编译原理课后题答案 第二章 P36-6 (1) L G () 1是0~9组成的数字串 (2) 最左推导: 最右推导: P36-7 G(S) P36-8 文法: 最左推导: 最右推导: 语法树:/******************************** *****************/ P36-9 句子iiiei有两个语法树: P36-10 /************** ***************/ P36-11 /*************** L1: L2: L3: L4: ***************/ 第三章习题参考答案P64–7 (1)

最小化: P64–8 (1) (2) (3) P64–12 (a) a a,b a 0

给状态编号: a a a b b b 最小化: a a b b a b (b) 已经确定化了, 进行最小化 最小化: P64 –14 (1) 0 1 0 (2): (|)*010 1 εε 0 0 0 Y Y

最小化: 0 1 1 1 0 0 第四章 P81–1 (1) 按照T,S 的顺序消除左递归 递归子程序: procedure S; begin if sym='a' or sym='^' then abvance else if sym='(' then begin advance;T; if sym=')' then advance; else error; end else error end; procedure T; begin S; T end;

procedure 'T; begin if sym=',' then begin advance; S;'T end end; 其中: sym:是输入串指针IP所指的符号advance:是把IP调至下一个输入符号error:是出错诊察程序 (2) FIRST(S)={a,^,(} FIRST(T)={a,^,(} FIRST('T)={,,ε} FOLLOW(S)={),,,#} FOLLOW(T)={)} FOLLOW('T)={)} 预测分析表 是LL(1)文法 P81–2 文法: (1) FIRST(E)={(,a,b,^} FIRST(E')={+,ε} FIRST(T)={(,a,b,^} FIRST(T')={(,a,b,^,ε} FIRST(F)={(,a,b,^} FIRST(F')={*,ε} FIRST(P)={(,a,b,^} FOLLOW(E)={#,)} FOLLOW(E')={#,)} FOLLOW(T)={+,),#} FOLLOW(T')={+,),#} FOLLOW(F)={(,a,b,^,+,),#} FOLLOW(F')={(,a,b,^,+,),#} FOLLOW(P)={*,(,a,b,^,+,),#} (2)

完整版编译原理名词解释

1. 源语言:书写源程序所使用的语言 2. 源程序:用程序设计语言书写的程序 3. 目标语言:计算机的机器指令。目标语言可以是机器语言,也可以是汇编语言, 或者是其他中间语言,但最终结果必是机器语言。 4. 目标程序:由机器指令构成的程序。目标程序是经过翻译程序加工后用目标语言 表示的程序。 5. 翻译程序:能够把某一种语言程序(源程序)改造成另一种语言程序(目标程序)将 源程序译成逻辑上等价的目标程序的程序。翻译程序有两种工作方式:编译和解释。 6. 编译程序:也称翻译程序 7. 解释程序:有些翻译程序在翻译过程中并不产生完整的目标程序,而是翻译一句, 解释执行一句,这样的称为解释程序。 8. 汇编程序:由汇编语言写成的程序 9. 词法分析:执行词法分析的程序成为词法分析器,词法分析依据的是语言构词规 则。词法分析器从文件读入源程序,由字符拼接单词。每当识别出一个单词,词法分析器就输出这个单词的内部码。 10. 语法分析:执行语法分析的程序叫做语法分析器。语法分析的任务就是根据语言 的规则,将词法分析器所提供的单词种别分成各类语法范畴。 11. 中间代码生成:中间代码产生有时称为语义分析,执行中间代码产生的程序称为 中间代码生成器。他的任务时按照语法分析器所识别出的语法范畴产生相应的中间代码,并建立符号表、常数表,等各种表格。 12. 目标代码生成:执行目标代码生成的程序称为目标代码生成器。他的任务是根据 中间代码和表格信息,确定各类数据在内存中的位置,选择合适的指令代码,将中间代码翻译成汇编语言或机器指令,这部分工作与计算机硬件有关。 13. 符号表:用于记录源程序中出现的标识符,一个标识符往往具有一系列的语义 值,她包括标识符的名称、种属、类型、值存放的地址等等。 14. 常数表:用于记录在源程序中出现的常数。 15. 编译程序前端:是由词法分析器、语法分析器和中间代码产生器组成的。她的特 点是依赖于被编译的源程序,输出结果用中间代码描述,和目标机器无关。16. 编译程序后端:是由目标代码生成器组成,他的特点是和源程序无关,以中间代 码形式的源程序为输入进行处理,输出结果依赖于目标机器。 17. 文本文件:文本文件的内容由94个图形字符‘!‘-' ~ '(33-126)和4个 控制字符换行(10)、回车(13)、空格(32)、TAB( 9)构成,文本文件又称为 ASCII码文件,扩展名通常为TXT,文件尾用控制字符EOF( 26)指示。 18. 二进制文件:由机器指令即二进制数构成,因二进制数可能是26 (文件结束控制 符),故文件尾用文件长度(文件的字节数)指示,扩展名通常为EX E。 19. 源代码(source code)—预处理器(preprocessor) —编译器(compiler) —汇编程序 (assembler)—目标代码(object code)—链接器(Linker) —可执行程序 (executables) 20. 编译程序的流程是: 源程序―》词法分析―》语法分析―》语义分析(中间代码产生)―》目标 代码生成-》目标程序

编译原理第二版课后习问题详解

《编译原理》课后习题答案第一章 第 1 章引论 第 1 题 解释下列术语: (1)编译程序 (2)源程序 (3)目标程序 (4)编译程序的前端 (5)后端 (6)遍 答案: (1)编译程序:如果源语言为高级语言,目标语言为某台计算机上的汇编语言或机器语言,则此翻译程序称为编译程序。 (2)源程序:源语言编写的程序称为源程序。 (3)目标程序:目标语言书写的程序称为目标程序。 (4)编译程序的前端:它由这样一些阶段组成:这些阶段的工作主要依赖于源语言而与目标机无关。通常前端包括词法分析、语法分析、语义分析和中间代码生成这些阶 段,某些优化工作也可在前端做,也包括与前端每个阶段相关的出错处理工作和符 号表管理等工作。 (5)后端:指那些依赖于目标机而一般不依赖源语言,只与中间代码有关的那些阶段,即目标代码生成,以及相关出错处理和符号表操作。 (6)遍:是对源程序或其等价的中间语言程序从头到尾扫视并完成规定任务的过程。

第 2 题 一个典型的编译程序通常由哪些部分组成?各部分的主要功能是什么?并画出编译程 序的总体结构图。 答案: 一个典型的编译程序通常包含 8 个组成部分,它们是词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、中间代码优化程序、目标代码生成程序、表格管理程序和错误处理程序。其各部分的主要功能简述如下。 词法分析程序:输人源程序,拼单词、检查单词和分析单词,输出单词的机表达形式。 语法分析程序:检查源程序中存在的形式语法错误,输出错误处理信息。 语义分析程序:进行语义检查和分析语义信息,并把分析的结果保存到各类语义信息表中。 中间代码生成程序:按照语义规则,将语法分析程序分析出的语法单位转换成一定形式 的中间语言代码,如三元式或四元式。 中间代码优化程序:为了产生高质量的目标代码,对中间代码进行等价变换处理。 目标代码生成程序:将优化后的中间代码程序转换成目标代码程序。 表格管理程序:负责建立、填写和查找等一系列表格工作。表格的作用是记录源程序的 各类信息和编译各阶段的进展情况,编译的每个阶段所需信息多数都从表格中读取,产生的中间结果都记录在相应的表格中。可以说整个编译过程就是造表、查表的工作过程。需要指出的是,这里的“表格管理程序”并不意味着它就是一个独立的表格管理模块,而是指编译程序具有的表格管理功能。 错误处理程序:处理和校正源程序中存在的词法、语法和语义错误。当编译程序发现源 程序中的错误时,错误处理程序负责报告出错的位置和错误性质等信息,同时对发现的错误

编译原理试题及答案(期末复习版).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^^*是文法的句型,指出该句型的短语、简单短语和句柄.

(完整word版)编译原理期末试题(二)含答案,推荐文档

《编译原理》期末试题(二) 一、是非题: 1.一个上下文无关文法的开始符,可以是终结符或非终结符。 ( ) 2.一个句型的直接短语是唯一的。() 3.已经证明文法的二义性是可判定的。() 4.每个基本块可用一个DAG表示。() 5.每个过程的活动记录的体积在编译时可静态确定。() 6.2型文法一定是3型文法。() 7.一个句型一定句子。 ( ) 8.算符优先分析法每次都是对句柄进行归约。 X ( ) 9.采用三元式实现三地址代码时,不利于对中间代码进行优化。() 10.编译过程中,语法分析器的任务是分析单词是怎样构成的。 ( ) 11.一个优先表一定存在相应的优先函数。 X ( ) 12.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。 ( ) 13.递归下降分析法是一种自下而上分析法。 ( ) 14.并不是每个文法都能改写成LL(1)文法。 ( ) 15.每个基本块只有一个入口和一个出口。 ( ) 16.一个LL(1)文法一定是无二义的。 ( ) 17.逆波兰法表示的表达试亦称前缀式。 ( ) 18.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。 ( ) 19.正规文法产生的语言都可以用上下文无关文法来描述。 ( ) 20.一个优先表一定存在相应的优先函数。 ( ) 21.3型文法一定是2型文法。 ( ) 22.如果一个文法存在某个句子对应两棵不同的语法树,则文法是二义性的。 ( ) 答案:1.× 2.× 3.× 4.√ 5.√ 6.×7.×8.× 9.√10.× 11.× 12.√ 13.× 14.√ 15.√ 16.√ 17.× 18.√19.√ 20.×21.√22.√ 二、填空题: 2.编译过程可分为(词法分析),(语法分析),(语义分析与中间代码生成),(优化)和(目标 代码生成)五个阶段。 3.如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是(二义性的)。 4.从功能上说,程序语言的语句大体可分为(执行性)语句和(说明性)语句两大类。 5.语法分析器的输入是(单词符号),其输出是(语法单位)。 6.扫描器的任务是从(源程序中)中识别出一个个(单词符号)。 7.符号表中的信息栏中登记了每个名字的有关的性质,如(类型、种属、所占单元大小、地址)等等。 8.一个过程相应的DISPLAY表的内容为(现行活动记录地址和所有外层最新活动记录的地址) 10.常用的两种动态存贮分配办法是(栈式)动态分配和(堆式)动态分配。 11.一个名字的属性包括( 类型)和(作用域 )。 12.常用的参数传递方式有(传地址),(传值),(传名) 13.根据优化所涉及的程序范围,可将优化分成为(局部优化),(循环优化),(全局优化)三个级别。 14.语法分析的方法大致可分为两类,一类是(自上而下)分析法,另一类是(自下而上) 分析法。 15.预测分析程序是使用一张(分析表)和一个(符号栈)进行联合控制的。 17.一张转换图只包含有限个状态,其中有一个被认为是(初)态;而且实际上至少要有一个(终)态。 19.语法分析是依据语言的(语法)规则进行。中间代码产生是依据语言的(语义)规则进行的。 21.一个文法G,若它的预测分析表M不含多重定义,则该文法是(LL(1) 文法)文法。 22.对于数据空间的存贮分配, FORTRAN采用( 静态策略, PASCAL采用( 动态)策略。

编译原理练习题解答

* ? 一.名词解释: 1)前缀 答:前缀——是指符号串任意首部。 2)可归前缀 答:可归前缀——是指规范句型的一个前缀,这种前缀包含句柄且不含句柄之后的任何符号。 3)活前缀 答:活前缀——规范句型的一个前缀,这种前缀不含句柄之后的任何符号。 或给定文法规范句型的可归前缀的任意首部。 4)简单短语 答:简单短语——设G[Z]是给定文法,w=xuy ∈V +,为该文法的句型,如果满 足下面两个条件: ① Z xUy ; ② U ?u ; 则称句型xuy 中的子串u 是句型xuy 的简单短语。 5)扫描遍 答:扫描遍——指编译程序对源程序或中间代码程序从头到尾扫描一次。 6)句柄 答:句柄——给定句型中的最左简单短语就是句柄。 7)句型 答:句型——设G 是一个给定的文法,S 是文法的开始符号,如果S x(其 中x ∈V *),则称x 是文法的一个句型。 8)句子 答:句子——设G 是一个给定的文法,S 是文法的开始符号,如果S x (其中x ∈V T *),则称x 是文法的一个句子。 9)非终结符 答:非终结符——出现在文法产生式的左部且能派生出符号或符号串的那些符号称为非终结符号。 10)终结符 答:终结符——出现在文法产生式的右部且不能派生出符号或符号串的那些符号称为终结符号。 11)属性文法 答:一个属性文法形式的定义为一个三元组AG ,AG=(G ,V ,E )。 其中G 为一个上下文无关文法;V 为属性的有穷集;E 为一组语义规则。 12)语法制导翻译 答:语法制导翻译——语法制导翻译就是在语法分析的过程中,当进行推导或归约时同步完成附加在所使用的产生式上的语义规则描述的动作,从而实现语义处理。 13)后缀式 答:后缀式——一种把运算量(操作数)写在前面,把算符写在后面(后缀)的表示法。

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

《编译原理》期末考试复习题 一、是非题(请在括号内,正确的划√,错误的划×)(每个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.一个句型中的最左简单短语称为该句型的___句柄__。

相关文档
最新文档