文档库 最新最全的文档下载
当前位置:文档库 › 编译原理练习答案蒋宗礼

编译原理练习答案蒋宗礼

编译原理练习

一、对下列语言集合设计CFG, ={a,b}

(1)L={a n b m a2n | n,m>=0}。

(2)所有非空符号串,其首尾字符相同。

(3)所有a的个数大于b的个数的符号串。

(4) 由a,b组成的回文串。

二、(1)构造一个能识别所有除以5余2的二进制数的DFA

(2)假设有一自动售货机,接收1元、2元、3元的硬币,出售2元和4元的商品,多投不找零,请构造能实现此功能有限自动机。

三、对于文法G[S],(1)给出至少两个理由说明它不是LL(1)文法。(2)将文法改写为LL(1)文法,并计算改造后文法的各非终结符的First 和Follow集合,构造其预测分析表。

S →bAb |bBa

A →aS| CB

B →b| BC

C → c |cC

三、对于正则表达式0*11,构造一个SLR(1)文法G[S],给出为SLR(1)文法理由:

构造识别文法活前缀的有限自动机,并构造相应的SLR(1)分析表。

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

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

编译原理与技术01

编译原理与技术模拟试题一 一、填空题(20分) 1.1编译程序的工作过程可划分为词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等 阶段,一般在语义分析阶段对表达式中运算对象的类型进行检查。 1.2 递归下降法和预测分析法是自上而下的语法分析方法。 1.3常用日的存储分配策略有静态存储分配和动态存储分配,其中,动态存储分配策略包括栈分配和堆分配。 1.4移进、归约是自下而上或LR 分析中的典型操作。 1.5对于数组M[1..6, 1..8],如果每个元素占k个存储单元,且起始地址为a,则以行为主序存放时元素M[4,4]的地址是__ a+27*k __,以列为主序存放时元素M[4,4]的地址是__ a+21k __。 二、单选题(20分) 2.1词法分析器不能 D 。 A. 识别出数值常量 B. 过滤源程序中的注释 C. 扫描源程序并识别记号 D. 发现括号不匹配 2.2给定文法A→bA|ca, C 是该文法的句子。 A. bba B. cab C. bca D. cba 2.3一个句型中的最左 B 称为该句型的句柄。 A. 短语 B. 直接短语 C. 非终结符号 D. 终结符号 2.4已知文法G[S]:S→A1A→A1|S0|0。与G等价的正规式是 C 。 A. 0(0|1)* B. 1*|0*1 C. 0(1|10)*1 D. 1(10|01)*0 2.5源程序是句子的集合, B 可以较好地反映句子的结构。 A. 线性表 B. 树 C. 完全图 D. 堆栈 2.6与逆波兰式ab+c*d+对应的中缀表达式是 B 。 A. a+b+c*d B. (a+b)* c+d C. (a+b)* (c+d) D. a+b*c+d 2.7识别上下文无关语言的自动机是 A 。 A. 下推自动机 B. NFA C. DFA D. 图灵机 2.8 B 是与规范归约(最左归约)互逆的一个过程。 A. 最左推导 B. 最右推导 C. 词法分析 D. 语义分析 2.9文法G产生的 A 的全体是该文法描述的语言, A. 句子 B. 短语 C. 终结符 D. 非终结符 2.10在表达式x:=y+1中, A 作为左值出现(其中,“:=”表示赋值)。 A. x B. y C. 1 D. y+1 三、简答题(30分) 3.1 (5分)请分别写出传值调用、引用调用方式下,下面代码的输出结果。 program main(input,output) procedure f(a,b) begin a := b - a; b := a * b + 1; end; begin x := 5; y := 10; f(y,x); print(x,y); end.

编译原理复习题--有答案版

1、给出下面语言的相应文法。L1={a n b n c i|n≥1,i≥0} 答案: S→ AB|B A→ a|aA B→ bBc|bc 2.给出下面语言的相应文法 L1={a n b n c m d m| m,n≥1,n为奇数,m为偶数}。 答案:文法G(S):S→AC A→aaAbb/ab C→ccCcc/cc 3、构造一个DFA,它接受={a,b}上所有包含ab的字符串。 (要求:先将正规式转化为NFA,再将NFA确定化,最小化) (一)相应的正规式为(a|b)*ab(a|b)* (二)①与此正规式对应的NFA为 答案;在自己写的纸上 4、对下面的文法G: E→TE’ E’→+E|ε T→FT’ T’→T|ε F→PF’ F’→*F’|ε P→(E)|a|b|∧(1)证明这个文法是LL(1)的。 考虑下列产生式: E’->E|ε T’->T|ε F’->*F’ |ε P->(E) |∧a|b FIRST(+E)∩FIRST(ε)={+}∩{ε}=φ FIRST(+E)∩FOLLOW(E')={+}∩{#,)}=φ FIRST(T)∩FIRST(ε)={(,a,b,^}∩{ε}=φ

FIRST(T)∩FOLLOW(T')={(,a,b,^}∩{+,),#}=φ FIRST(*F')∩FIRST(ε)={*}∩{ε}=φ FIRST(*F')∩FOLLOW(F')={*}∩{(,a,b,^,+,),#}=φ FIRST((E))∩FIRST(a) ∩FIRST(b) ∩FIRST(^)=φ 所以,该文法式LL(1)文法. 计算这个文法的每个非终结符的FIRST和FOLLOW。(8分) 答案: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,^,+,),#} (3)构造它的预测分析表。(6分) 答案;在手机上 写出表达式a+b*(c-d)对应的逆波兰式和三元式序列。 答案:逆波兰式:(abcd-*+) 三元式序列: OP ARG1 ARG2 (1) - c d (2) * b (1) (3) + a (2)

编译原理复习题及答案

编译原理复习题及答案 一、选择题 1.一个正规语言只能对应(B) A 一个正规文法 B 一个最小有限状态自动机 2.文法G[A]:A→εA→aB B→Ab B→a是(A) A 正规文法 B 二型文法 3.下面说法正确的是(A) A 一个SLR(1)文法一定也是LALR(1)文法 B 一个LR(1)文法一定也是LALR(1)文法 4.一个上下文无关文法消除了左递归,提取了左公共因子后是满足LL(1)文法的(A) A 必要条件 B 充分必要条件 5.下面说法正确的是(B) A 一个正规式只能对应一个确定的有限状态自动机 B 一个正规语言可能对应多个正规文法 6.算符优先分析与规范归约相比的优点是(A) A 归约速度快 B 对文法限制少 7.一个LR(1)文法合并同心集后若不是LALR(1)文法(B) A 则可能存在移进/归约冲突 B 则可能存在归约/归约冲突 C 则可能存在移进/归约冲突和归约/归约冲突 8.下面说法正确的是(A) A Lex是一个词法分析器的生成器 B Yacc是一个语法分析器 9.下面说法正确的是(A) A 一个正规文法也一定是二型文法 B 一个二型文法也一定能有一个等价的正规文法 10.编译原理是对(C)。 A、机器语言的执行 B、汇编语言的翻译 C、高级语言的翻译 D、高级语言程序的解释执行 11.(A)是一种典型的解释型语言。

A.BASIC B.C C.FORTRAN D.PASCAL 12.把汇编语言程序翻译成机器可执行的目标程序的工作是由(B)完成的。 A. 编译器 B. 汇编器 C. 解释器 D. 预处理器 13.用高级语言编写的程序经编译后产生的程序叫(B) A.源程序 B.目标程序C.连接程序D.解释程序 14.(C)不是编译程序的组成部分。 A.词法分析程序 B.代码生成程序 C.设备管理程序 D.语法分析程序 15.通常一个编译程序中,不仅包含词法分析,语法分析,语义分析,中间代码生成,代码优化,目标代码生成等六个部分,还应包括(C)。 A.模拟执行器B.解释器 C.表格处理和出错处理D.符号执行器16.编译程序绝大多数时间花在(D)上。 A.出错处理B.词法分析C.目标代码生成D.表格管理 17.源程序是句子的集合,(B)可以较好地反映句子的结构。 A. 线性表 B. 树 C. 完全图 D. 堆栈 18.词法分析器的输出结果是(D)。 A、单词自身值 B、单词在符号表中的位置 C、单词的种别编码 D、单词的种别编码和自身值 19.词法分析器不能(D) A. 识别出数值常量 B. 过滤源程序中的注释 C. 扫描源程序并识别记号 D. 发现括号不匹配 20.文法:G:S→xSx | y所识别的语言是(D)。 A、xyx B、(xyx)* C、x*yx* D、x n yx n (n≥0) 21.如果文法G是无二义的,则它的任何句子α(A) A.最左推导和最右推导对应的语法树必定相同 B.最左推导和最右推导对应的语法树可能不同 C.最左推导和最右推导必定相同 D.可能存在两个不同的最左推导,但它们对应的语法树相同 22.正则文法(A)二义性的。 A. 可以是 B. 一定不是 C. 一定是 23.(B)这样一些语言,它们能被确定的有穷自动机识别,但不能用正则表达式表示。 A. 存在 B. 不存在 C. 无法判定是否存在 24.给定文法A→bA | ca,为该文法句子的是(C) A. bba B. cab C. bca D. cba

编译原理和技术期末考试复习题

2.1 考虑文法G[S],其产生式如下: S→(L)|a L→L,S|S (1)试指出此文法的终结符号、非终结符号。 终结符号为:{(,),a,,,} 非终结符号为:{S,L} 开始符号为:S (2)给出下列各句子的分析树: ① (a,a)②(a,(a,a))③ (a,((a,a),(a,a))) (3)构造下列各句子的一个最左推导: ① (a,a) S (L) (L,S) (S,S) (a,S) (a,a) ② (a,(a,a)) S (L) (L,S) (S,S) (a,S) (a,(L) (a,(L,S)) (a,(S,S)) (a,(a,S)) (a,(a,a)) ③ (a,((a,a),(a,a))) S (L) (L,S) (S,S) (a,S) (a,(L)) (a,(L,S)) (a,(S,S)) (a,((L),S)) (a,((L,S),S)) (a,((S,S),S)) (a,((a,S),S)) (a,((a,a),S)) (a,((a,a),(L)))

(a,((a,a),(L,S))) (a,((a,a),(S,S))) (a,((a,a),(a,S))) (a,((a,a),(a,a))) (4)构造下列各句子的一个最右推导: ①(a,a) S (L) (L,S) (L,a) (S,a) (a,a) ②(a,(a,a)) S (L) (L,S) (L,(L)) (L,(L,S)) (L,(L,a)) (L,(S,a)) (L,(a,a)) (S,(a,a)) (a,(a,a) ③(a,((a,a),(a,a)) S (L) (L,S) (L,(L)) (L,(L,S)) (L,(L,(L))) (L,(L,(L,S))) (L,(L,(L,a))) (L,(L,(S,a))) (L,(L,(a,a))) (L,(S,(a,a))) (L,((L),(a,a))) (L,((L,S),(a,a))) (L,((L,a),(a,a))) (L,((S,a),(a,a))) (L,((a,a),(a,a))) (S,((a,a),(a,a))) (a,((a,a),(a,a))) (5)这个文法生成的语言是什么? L(G[S]) = (α1,α2,...,αn)或a 其中αi(1≤i≤n),即L(G[S])是一个以a为原子的纯表,但不包括空表。 2.2 考虑文法G[S] S→aSbS|bSaS|ε (1)试说明此文法是二义性的。可以从对于句子abab有两个不同的最左推导来说明。 S aSbS abS abaSbS ababS abab S aSbS abSaSbS abaSbS ababS abab 所以此文法是二义性的。 (2)对于句子abab构造两个不同的最右推导。 S aSbS aSbaSbS aSbaSb aSbab abab S aSbS aSb abSaSb abSab abab (3)对于句子abab构造两棵不同的分析树。 (一) (二) (4)此文法所产生的语言是什么? 此文法产生的语言是:所有a的个数与b的个数相等的由a和b组成的字符串。 2.4 已知文法G[S]的产生式如下:S → (L)|a L → L,S|S 属于L(G[S])的句子是 A ,(a,a)是L(G[S])的句子,这个句子的最左推导是 B ,最右推导是 C ,分析树是 D ,句柄是 E 。 A:① a ② a,a ③ (L) ④ (L,a) B,C:① S (L) (L,S) (L,a) (S,a) (a,a) ② S (L) (L,S) (S,S) (S,a) (a,a)

编译原理练习题答案

编译原理练习题 一、选择题 1.下列()程序语言是依赖于机器的。 A.自然语言 B.高级语言 C.SQL语言 D.汇编语言或机器语言 2.编译程序是对()程序进行翻译。 A.机器语言 B. 汇编语言 C. 高级语言 D. 自然语言 3.编译程序的工作过程划分为5个阶段:词法分析、()、语义分析与中间代码 A. 语法分析 B. 出错处理 C. 表格管理 D.存储空间组织 4.编译程序各阶段的工作都涉及到()。 A. 语法分析 B. 语义分析 C.代码优化 D.表格管理 5.设A是符号串的集合,下列对A*计算不正确的是()。 A.{ε}∪A+ B. A*=A1∪A2∪…∪A n∪… C. A0∪A+ D. A*=A0∪A1∪A2∪…∪A n∪… 6.设x是符号串,符号串的幂运算x0=() A.Φ B.x C.1 D.ε 7.程序语言的生成机构是()。 A.自动机 B.文法 C.产生式 D.语言本身 8.设有文法G的符号集V,非终结符集V N,终结符集V T,下列叙述中正确的是()。 A.V=V T B.V=V N C.V=V T∪V N D.V=V T∩V N 9.文法G产生的()的全体构成该文法描述的语言。 A.句型 B.终结符集 C.非终结符集 D.句子 10.若一个文法满足(),则称该文法为二义文法。 A. 存在一个最左推导。 B.存在一个最右推导。 C.文法的某个句子存在两棵(包括两棵)以上的语法树。 D.文法的某个句子存在一棵(包括一棵)以上的语法树。 11.给定文法A→bA|cc,下面的符号串中为该文法句子的是()。 ①cc ②bcbc ③bcbcc ④bccbcc ⑤bbbcc 可选项有: A.①⑤ B.①③④⑤ C.①④ D.①④⑤ 12.设∑={0,1},则∑上所有以1开头,后跟若干个010的字串的集合对应的正规式为()。 A.1(010)* B.1(010)+ C.(010)*1 D.(010)+1 13.从编译程序的语法分析角度看,源程序是句子的集合,()可以较好地反映句子的结构。 A.线性表 B.树 C.强连通图 D.堆栈 14.在常用的语法分析中,递归下降分析法属于()分析方法。 A.自左至右 B.自上而下 C.自下而上 D.自右向左 15.在自上而下的语法分析方法中,递归下降分析法和预测分析法要求描述程序语言的文法是()。 A.LL(1)文法 B.LR(1)文法 C.正规文法 D.右线性文法 16.进行LL(1)分析的文法首先应该消除()。 A.左递归和右递归 B.左递归和回溯 C.右递归和回溯 D.左递归 17.自下而上语法分析的主要分析动作是()。 A.推导 B. 规约 C. 移进-规约 D.匹配

编译原理课后习题答案(第三版)

精品文档 第二章 P36-6 (1) L G ()1是0~9组成的数字串 (2) 最左推导: N ND NDD NDDD DDDD DDD DD D N ND DD D N ND NDD DDD DD D ??????????????????0010120127334 556568 最右推导: N ND N ND N ND N D N ND N D N ND N ND N D ??????????????????77272712712701274434 886868568 P36-7 G(S) O N O D N S O AO A AD N →→→→→1357924680||||||||||| P36-8 文法: E T E T E T T F T F T F F E i →+-→→|||*|/()| 最左推导: E E T T T F T i T i T F i F F i i F 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 ?+?+?+?+?+?+?+?+??????+?+?+?+?+?+********()*()*()*()*()*()*() 最右推导: E E T E T F E T i E F i E i i T i i F i i i i i E T F T F F F E F E T F E F F E i F T i F F i F i i i i i ?+?+?+?+?+?+?+?+?????+?+?+?+?+?+?+**********()*()*()*()*()*()*()*() 语法树:/********************************

编译原理习题及答案(整理后)

第一章 1、将编译程序分成若干个“遍”就是为了。 a.提高程序得执行效率 b.使程序得结构更加清晰 c.利用有限得机器内存并提高机器得执行效率 d.利用有限得机器内存但降低了机器得执行效率 2、构造编译程序应掌握。 a.源程序b.目标语言 c.编译方法d.以上三项都就是 3、变量应当。 a.持有左值b.持有右值 c.既持有左值又持有右值d.既不持有左值也不持有右值 4、编译程序绝大多数时间花在上。 a.出错处理b.词法分析 c.目标代码生成d.管理表格 5、不可能就是目标代码。 a.汇编指令代码b.可重定位指令代码 c.绝对指令代码d.中间代码 6、使用可以定义一个程序得意义。 a.语义规则b.语法规则 c.产生规则d.词法规则 7、词法分析器得输入就是。 a.单词符号串b.源程序 c.语法单位d.目标程序 8、中间代码生成时所遵循得就是- 。 a.语法规则b.词法规则 c.语义规则d.等价变换规则 9、编译程序就是对。 a.汇编程序得翻译b.高级语言程序得解释执行 c.机器语言得执行d.高级语言得翻译 10、语法分析应遵循。 a.语义规则b.语法规则 c.构词规则d.等价变换规则 二、多项选择题 1、编译程序各阶段得工作都涉及到。 a.语法分析b.表格管理c.出错处理 d.语义分析e.词法分析 2、编译程序工作时,通常有阶段。 a.词法分析b.语法分析c.中间代码生成 d.语义检查e.目标代码生成 三、填空题 1、解释程序与编译程序得区别在于。 2、编译过程通常可分为5个阶段,分别就是、语法分析、代码优化与目标代码生成。 3、编译程序工作过程中,第一段输入就是,最后阶段得输出为程序。

编译原理知识点汇总

编译原理的复习提纲 1.编译原理=形式语言+编译技术 2.汇编程序: 把汇编语言程序翻译成等价的机器语言程序 3.编译程序: 把高级语言程序翻译成等价的低级语言程序 4.解释执行方式: 解释程序,逐个语句地模拟执行 翻译执行方式: 翻译程序,把程序设计语言程序翻译成等价的目标程序 5.计算机程序的编译过程类似,一般分为五个阶段: 词法分析、语法分析、语义分析及中间代码生成、代码优化、目标代码生成 词法分析的任务: 扫描源程序的字符串,识别出的最小的语法单位(标识符或无正负号数等) 语法分析是: 在词法分析的基础上的,语法分析不考虑语义。语法分析读入词法分析程序识别出的符号,根据给定的语法规则,识别出各个语法结构。 语义分析的任务是检查程序语义的正确性,解释程序结构的含义,语义分析包括检查变量是否有定义,变量在使用前是否具有值,数值是否溢出等。

语法分析完成之后,编译程序通常就依据语言的语义规则,利用语法制导技术把源程序翻译成某种中间代码。所谓中间代码是一种定义明确、便于处理、独立于计算机硬件的记号系统,可以认为是一种抽象机的程序 代码优化的主要任务是对前一阶段产生的中间代码进行等价变换,以便产生速度快、空间小的目标代码 编译的最后一个阶段是目标代码生成,其主要任务是把中间代码翻译成特定的机器指令或汇编程序 编译程序结构包括五个基本功能模块和两个辅助模块 6.编译划分成前端和后端。 编译前端的工作包括词法分析、语法分析、语义分析。编译前端只依赖于源程序,独立于目标计算机。前端进行分析 编译后端的工作主要是目标代码的生成和优化后端进行综合。独立于源程序,完全依赖于目标机器和中间代码。 把编译程序分为前端和后端的优点是: 可以优化配置不同的编译程序组合,实现编译重用,保持语言与机器的独立性。 7.汇编器把汇编语言代码翻译成一个特定的机器指令序列 第二章 1.符号,字母表,符号串,符号串的长度计算P18,子符号串的含义,符号串的简单运算XY,Xn, 2.符号串集合的概念,符号串集合的乘积运算,方幂运算,闭包与正闭包的概念P19,P20A0 ={ε} 3.重写规则,简称规则。非xx(V

编译原理复习题及参考答案

中南大学网络教育课程考试复习题及参考答案 编译原理 一、判断题: 1.一个上下文无关文法的开始符,可以是终结符或非终结符。 ( ) 2.一个句型的直接短语是唯一的。 ( ) 3.已经证明文法的二义性是可判定的。 ( ) 4.每个基本块可用一个DAG表示。 ( ) 5.每个过程的活动记录的体积在编译时可静态确定。 ( ) 6.2型文法一定是3 型文法。 ( ) 7.一个句型一定句子。 ( ) 8.算符优先分析法每次都是对句柄进行归约。 ( ) 9.采用三元式实现三地址代码时,不利于对中间代码进行优化。 ( ) 10.编译过程中,语法分析器的任务是分析单词是怎样构成的。 ( ) 11.一个优先表一定存在相应的优先函数。 ( ) 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.一个过程相应的DISPLAY表的内容为()。 9.一个句型的最左直接短语称为句型的()。 10.常用的两种动态存贮分配办法是()动态分配和()动态分配。 11.一个名字的属性包括( )和( )。 12.常用的参数传递方式有(),()和()。 13.根据优化所涉及的程序范围,可将优化分成为(),()和()三个级别。 14.语法分析的方法大致可分为两类,一类是()分析法,另一类是()分析法。 15.预测分析程序是使用一张()和一个()进行联合控制的。 16.常用的参数传递方式有(),()和()。 17.一张转换图只包含有限个状态,其中有一个被认为是()态;而且实际上至少要有一个()态。 18.根据优化所涉及的程序范围,可将优化分成为(),()和()三个级别。 19.语法分析是依据语言的()规则进行。中间代码产生是依据语言的()规则进行的。 20.一个句型的最左直接短语称为句型的()。 21.一个文法G,若它的预测分析表M不含多重定义,则该文法是()文法。 22.对于数据空间的存贮分配, FORTRAN采用( )策略, PASCAL采用( )策略。

编译原理复习题及答案

编译原理复习题及答案一、选择题 1.一个正规语言只能对应( B ) A 一个正规文法 B 一个最小有限状态自动机 2.文法G[A]:A→εA→aB B→Ab B→a是( A ) A 正规文法 B 二型文法 3.下面说法正确的是( A ) A 一个SLR(1)文法一定也是LALR(1)文法 B 一个LR(1)文法一定也是LALR(1)文法 4.一个上下文无关文法消除了左递归,提取了左公共因子后是满足LL(1)文法的( A ) A 必要条件 B 充分必要条件 5.下面说法正确的是( B ) A 一个正规式只能对应一个确定的有限状态自动机 B 一个正规语言可能对应多个正规文法 6.算符优先分析与规范归约相比的优点是( A ) A 归约速度快 B 对文法限制少 7.一个LR(1)文法合并同心集后若不是LALR(1)文法( B ) A 则可能存在移进/归约冲突 B 则可能存在归约/归约冲突 C 则可能存在移进/归约冲突和归约/归约冲突 8.下面说法正确的是( A ) A Lex是一个词法分析器的生成器 B Yacc是一个语法分析器 9.下面说法正确的是( A ) A 一个正规文法也一定是二型文法 B 一个二型文法也一定能有一个等价的正规文法 10.编译原理是对(C)。 A、机器语言的执行 B、汇编语言的翻译 C、高级语言的翻译 D、高级语言程序的解释执行

11.(A)是一种典型的解释型语言。 A.BASIC B.C C.FORTRAN D.PASCAL 12.把汇编语言程序翻译成机器可执行的目标程序的工作是由(B)完成的。 A. 编译器 B. 汇编器 C. 解释器 D. 预处理器 13.用高级语言编写的程序经编译后产生的程序叫(B) A.源程序?B.目标程序C.连接程序D.解释程序14.(C)不是编译程序的组成部分。 A.词法分析程序 B.代码生成程序? C.设备管理程序 D.语法分析程序 15.通常一个编译程序中,不仅包含词法分析,语法分析,语义分析,中间代码生成,代码优化,目标代码生成等六个部分,还应包括(C)。 A.模拟执行器B.解释器?C.表格处理和出错处理 ??? D.符号执行器16.编译程序绝大多数时间花在(D)上。 A.出错处理B.词法分析C.目标代码生成D.表格管理 17.源程序是句子的集合,(B)可以较好地反映句子的结构。 A. 线性表 B. 树 C. 完全图 D. 堆栈 18.词法分析器的输出结果是(D)。 A、单词自身值 B、单词在符号表中的位置 C、单词的种别编码 D、单词的种别编码和自身值 19.词法分析器不能(D) A. 识别出数值常量 B. 过滤源程序中的注释 C. 扫描源程序并识别记号 D. 发现括号不匹配 20.文法:G:S→xSx | y所识别的语言是(D)。 A、xyx B、(xyx)* C、x*yx* D、x n yx n(n≥0) 21.如果文法G是无二义的,则它的任何句子α(A) A.最左推导和最右推导对应的语法树必定相同 B.最左推导和最右推导对应的语法树可能不同 C.最左推导和最右推导必定相同 D.可能存在两个不同的最左推导,但它们对应的语法树相同 22.正则文法(A)二义性的。 A. 可以是 B. 一定不是 C. 一定是 23.(B)这样一些语言,它们能被确定的有穷自动机识别,但不能用正则表达式表示。 A. 存在 B. 不存在 C. 无法判定是否存在 24.给定文法A→bA | ca,为该文法句子的是(C)

编译原理与技术练习题汇总

练习 1 1.1 为什么高级程序语言需要编译程序? 1.2 解释下列术语: 源程序,目标程序,翻译程序,编译程序,解释程序 1.3 简单叙述编译程序的主要工作过程。 1.4 编译程序的典型体系结构包括哪些构件,主要关系如何,请用辅助图示意。 1.5 编译程序的开发有哪些途径?了解你熟悉的高级编程语言编译程序的开发方式。 1.6 运用编译技术的软件开发和维护工具有许多类,简单叙述每一类的主要用途。 1.7 了解一个真实编译系统的组成和基本功能。 1.8 简单说明学习编译程序的意义和作用。 1.9 如果机器H上有两个编译:一个把语言A翻译成语言B,另一个把B翻译成C,那么可以把第一个编译的输出作为第二个编译的输入,结果在同一类机器上得到从A到C的编译。请用T形图示意过程和结果。

练习 2 2.1 词法分析器的主要任务是什么? 2.2 下列各种语言的输入字母表是什么? (1) C (2) Pascal (3) Java (4) C# 2.3 可以把词法分析器写成一个独立运行的程序,也可以把它写成一个子程序,请比较各自的优劣。 2.4 用高级语言编写一个对C#或Java程序的预处理程序,它的作用是每次调用时都把下一个完整的句子送到扫描缓冲区,去掉注释和无用的空格、制表符、回车、换行。 2.5 用高级语言实现图2.5所示的Pascal语言数的状态转换图。 2.6 用高级语言编程实现图2.6所示的小语言的词法扫描器。 2.7 用自然语言描述下列正规式所表示的语言: (1) 0(0|1)*0 (2) ((ε|0)1)*)* (3) (a|b)*a(a|b|ε) (4) (A|B|...|Z)(a|b|...|z)* (5) (aa|b)*(a|bb)* (6) (0|1|...|9|A|B|C|D|E)+(t|T) 2.8 为下列语言写正规式 (1) 所有以小写字母a开头和结尾的串。 (2) 所有以小写字母a开头或者结尾(或同时满足这两个条件)的串。 (3) 所有表示偶数的串。 (4) 所有不以0开始的数字串。 (5) 能被5整除的10进制数的集合。 (6) 没有出现重复数字的全体数字串。 2.9 试构造下列正规式的NFA,并且确定化,然后最小化。 (1) (a|b)*a(a|b) (2) (a||b)*a(a|b) * (3) ab((ba|ab)*(bb|aa))*ab (4) 00|(0|1)*|11 (5) 1(0|1)*01 (6) 1(1010*|1(010)*1*0 2.10 请分别使用下面的技术证明(a|b)*,(a*|b*)*以及((a|ε)b*)*这三个正规式是等价的: (1) 仅用正规式的定义及其代数性质; (2) 从正规式构造的最小DFA的同构来证明正规式的等价。

编译原理课程培训心得体会

《编译原理》课程培训心得体会 首先感谢全国高校教师网络培训中心为我们这些工作在教学第一线的教师提供一个提高自己教学水平、方法和能力的机会,使得我们学习到更好的方法能更好地为学生服务。经过本次培训之后,我个人觉得可以通过以下几个方面提高教学质量。 1、认清编译原理,明确学习意义,激发学生的热情 帮助学生认清编译原理的作用和地位。给学生介绍清楚可以通过编译原理的学习,有助于学生快速理解、定位和解决在程序编译、测试与运行中出现的问题。帮助学生克服畏难心理,提高学生的兴趣。编译原理中的原理除了可以用于分析编译器以外,还对诸如人工智能、并行处理技术等课程的学习具有指导作用。本门课程学习对其它课程的学习和今后很多领域的理论研究具有深远的意义,如计算机软件技术领域、计算机系统结构领域、人工智能系统的机器学习领域、并行处理技术等领域。 2、优化教学内容,搞好课堂教学 可以采用以人本主义学习理论为基础,充分发挥学生的学习主动性,注重启发式教学,注重提高学生的素质、培养学生的创新能力。使得学生对编译原理课程的兴趣提高,能

主动学习,理解、体会前辈们在解决相应问题时是如何考虑的,同学们自己又是如何考虑的。 编译系统中的一些概念很抽象,学生无法理解,就只会死记硬背,当然更无兴趣可言。在讲解的过程中,可以选用学生最熟悉的一些实例,通过类比使抽象的概念更容易被理解。我本人觉着对于工学学科的同学来说,不用在数学定义上花费太多时间,因为他们对数学符号不敏感,而应该尽量多安排例子,使得同学们能把数学符号代表的含义通过例子理解清楚,以及知道如何使用。 有效地利用教学辅助手段,增强课堂教学效果。由于本课程涉及形式语言、有穷自动机等抽象内容,学生在学习过程中接受起来较困难。为了提高学生的学习兴趣、增强课堂教学效果,可以将教学过程中一些需要教师在黑板上动态演示的过程做成CAI课件,既可在课堂上演示,也可在课后由学生自己观摩,有助于加深学生对所学知识的理解。 同时可在课堂上和习题中,多准备了一些从实际程序的编译和运行时碰到的问题中抽象出来的例子,供学生用所学的知识去分析、理解、并加以解决。通过采用这种实例教学方式,既能够对前期课程起到复习巩固的作用,又能让学生切实体会到本课程的实际价值,从而有力地激发了学生学习编译原理和技术的积极性。

编译原理习题及答案(整理后)

第一章 1、将编译程序分成若干个“遍”是为了。 b.使程序的结构更加清晰 2、构造编译程序应掌握。 a.源程序b.目标语言 c.编译方法 3、变量应当。 c.既持有左值又持有右值 4、编译程序绝大多数时间花在上。 d.管理表格 5、不可能是目标代码。 d.中间代码 6、使用可以定义一个程序的意义。 a.语义规则 7、词法分析器的输入是。 b.源程序 8、中间代码生成时所遵循的是- 。 c.语义规则 9、编译程序是对。 d.高级语言的翻译 10、语法分析应遵循。 c.构词规则 二、多项选择题 1、编译程序各阶段的工作都涉及到。 b.表格管理c.出错处理 2、编译程序工作时,通常有阶段。 a.词法分析b.语法分析c.中间代码生成e.目标代码生成 三、填空题 1、解释程序和编译程序的区别在于是否生成目标程序。 2、编译过程通常可分为5个阶段,分别是词法分析、语法分析中间代码生成、代码优化和目标代码生成。 3、编译程序工作过程中,第一段输入是源程序,最后阶段的输出为标代码生成程序。 4、编译程序是指将源程序程序翻译成目标语言程序的程序。

一、单项选择题 1、文法G:S→xSx|y所识别的语言是。 a. xyx b. (xyx)* c. x n yx n(n≥0) d. x*yx* 2、文法G描述的语言L(G)是指。 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*)} 3、有限状态自动机能识别。 a. 上下文无关文法 b. 上下文有关文法 c.正规文法 d. 短语文法 4、设G为算符优先文法,G的任意终结符对a、b有以下关系成立。 a. 若f(a)>g(b),则a>b b.若f(a)

最新编译原理小题答案

《编译原理》常见题型 一、填空题 1.编译程序的工作过程一般可以划分为词法分析,语法分析,中间代码生成,代码优化(可省) ,目标代码生成等几个基本阶段。 2.若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序,则其翻译程序称为编译程序. 3.编译方式与解释方式的根本区别在于是否生成目标代码. 5.对编译程序而言,输入数据是源程序,输出结果是目标程序. 7.若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序,则其翻译程序称为编译程序。 8.一个典型的编译程序中,不仅包括词法分析、语法分析、中间代码生成、代码优化、目标代码生成等五个部分,还应包括表格处理和出错处理。其中,词法分析器用于识别单词。 10.一个上下文无关文法所含四个组成部分是一组终结符号、一组非终结符号、一个开始符号、一组产生式。 12.产生式是用于定义语法成分的一种书写规则。 13.设G[S]是给定文法,则由文法G所定义的语言L(G)可描述为:L(G)={x│S=>*x,x∈VT*} 。 14.设G是一个给定的文法,S是文法的开始符号,如果S * ?x(其中x∈V*),则称x是 文法的一个句型。 15.设G是一个给定的文法,S是文法的开始符号,如果S * ?x(其中x∈V T*),则称x是文 法的一个句子。 16.扫描器的任务是从源程序中识别出一个个单词符号。 17.语法分析最常用的两类方法是自上而下和自下而上分析法。 18.语法分析的任务是识别给定的终结符串是否为给定文法的句子。 19.递归下降法不允许任一非终结符是直接左递归的。 20.自顶向下的语法分析方法的关键是如何选择候选式的问题。 21.递归下降分析法是自顶向下分析方法。 22.自顶向下的语法分析方法的基本思想是:从文法的开始符号开始,根据给定的输入串并按照文法的产生式一步一步的向下进行直接推导,试图推导出文法的句子,使之与给定的输入串匹配。 23.自底向上的语法分析方法的基本思想是:从给定的终结符串开始,根据文法的规则一步一步的向上进行直接归约,试图归约到文法的开始符号。 24.自底向上的语法分析方法的基本思想是:从输入串入手,利用文法的产生式一步一步地 向上进行直接归约,力求归约到文法的开始符号。 26.在LR(0)分析法的名称中,L的含义是自左向右的扫描输入串,R的含义是最 左归约,0 的含义是向貌似句柄的符号串后查看0个输入符号。 31.终结符只有综合属性,它们由词法分析器提供。

编译原理第二版课后习答案

《编译原理》课后习题答案第一章 第 1 章引论 第 1 题 解释下列术语: (1)编译程序 (2)源程序 (3)目标程序 (4)编译程序的前端 (5)后端 (6)遍 答案: (1)编译程序:如果源语言为高级语言,目标语言为某台计算机上的汇编语言或机器语言,则此翻译程序称为编译程序。 (2)源程序:源语言编写的程序称为源程序。 (3)目标程序:目标语言书写的程序称为目标程序。 (4)编译程序的前端:它由这样一些阶段组成:这些阶段的工作主要依赖于源语言而与目标机无关。通常前端包括词法分析、语法分析、语义分析和中间代码生成这些阶 段,某些优化工作也可在前端做,也包括与前端每个阶段相关的出错处理工作和符 号表管理等工作。 (5)后端:指那些依赖于目标机而一般不依赖源语言,只与中间代码有关的那些阶段,即目标代码生成,以及相关出错处理和符号表操作。 (6)遍:是对源程序或其等价的中间语言程序从头到尾扫视并完成规定任务的过程。 第 2 题 一个典型的编译程序通常由哪些部分组成?各部分的主要功能是什么?并画出编译程 序的总体结构图。 答案: 一个典型的编译程序通常包含 8 个组成部分,它们是词法分析程序、语法分析程序、语 义分析程序、中间代码生成程序、中间代码优化程序、目标代码生成程序、表格管理程序和错误处理程序。其各部分的主要功能简述如下。 词法分析程序:输人源程序,拼单词、检查单词和分析单词,输出单词的机内表达形式。语法分析程序:检查源程序中存在的形式语法错误,输出错误处理信息。 语义分析程序:进行语义检查和分析语义信息,并把分析的结果保存到各类语义信息表中。 中间代码生成程序:按照语义规则,将语法分析程序分析出的语法单位转换成一定形式 的中间语言代码,如三元式或四元式。 中间代码优化程序:为了产生高质量的目标代码,对中间代码进行等价变换处理。 目标代码生成程序:将优化后的中间代码程序转换成目标代码程序。 表格管理程序:负责建立、填写和查找等一系列表格工作。表格的作用是记录源程序的 各类信息和编译各阶段的进展情况,编译的每个阶段所需信息多数都从表格中读取,产生的中间结果都记录在相应的表格中。可以说整个编译过程就是造表、查表的工作过程。需要指出的是,这里的“表格管理程序”并不意味着它就是一个独立的表格管理模块,而是指编译程序具有的表格管理功能。 错误处理程序:处理和校正源程序中存在的词法、语法和语义错误。当编译程序发现源

(完整word版)编译原理复习题答案

二、概念题 1、设有文法:P→P+Q|Q Q→Q*R|R R→(P)|i (1)证明Q*R+Q+Q是它的一个句型。(3分) (2)给出Q*R+Q+Q的所有短语,直接短语和句柄。(4分) (3)给出句子i+i*i的最右推导。(4分) (4)给出句子i+i*i的最左推导。(4分) 2、设有文法:E→E+T|T T→T*F|F F→(E)|i (1)证明E+T*F是它的一个句型。(3分) ?+?+* 答案:E E T E T F (2)给出E+T*F的所有短语,直接短语和句柄。(4分) 短语: E+T*F, T*F, 直接短语: T*F 句柄: T*F (3)给出句子i+i*i的最右推导。(4分) 3、写出表达式a+b*(c-d)对应的逆波兰式和三元式序列。答案:逆波兰式:(abcd-*+)

三元式序列: OP ARG1 ARG2 (1) - c d (2) * b (1) (3) + a (2) 三、词法分析题 给出下面语言的相应文法 L1={a n b n a m b m|n,m≥0} 答案:S→AB|A|B|∑ A→aAb|ab B→aBb|ab 给出下面语言的相应文法 L2={a n b n c i|n≥1,i≥0} 答案:S→AB|B A→a|aA B→bBc|bc 给出下面语言的相应文法 L3={a n b n c m| m,n≥1,n为奇数,m为偶数}。 答案:文法G(S):S→AC A→aaAbb/ab C→ccCcc/cc 四、词法分析题

1、构造下面正规式相应的DFA ((0|1)*|(11)*)* (要求:先将正规式转化为NFA,再将NFA确定化,最小化)2、构造下面正规式相应的DFA 1(0|1)*101 答案: I I0 I1 {X} Ф{A,B,C} {A,B,C} { B,C} { B,C,D} {B,C} { B,C} { B,C,D} {B,C,D} { B,C,E} { B,C,D} {B,C,E} { B,C} {B,C,D,y} {B,C,D,y} {B,C,E} { B,C,D} 3、构造一个DFA,它接受 ={a,b}上所有包含ab的字符串。(要求:先将正规式转化为NFA,再将NFA确定化,最小化)答案:(一)相应的正规式为(a|b)*ab(a|b)* (二) ①与此正规式对应的NFA为 ②状态转换矩阵为:

相关文档
相关文档 最新文档