2018年编译原理试卷
《编译原理》练习题

《编译原理》练习题《编译原理》练习题⼀⼀、填空题(每空1分)1.设G [S ]是⼀个⽂法,我们把能由⽂法的(1)推导出来的符号串α称为G 的⼀个句型。
当句型α仅由(2)组成时 (即α∈V T *),则将它称为G 产⽣的句⼦。
2.从某⼀给定的状态q 出发,仅经过若⼲条 (3) 的⽮线所能达到的状态所组成的集合称为ε-CLOSURE(q)。
3.设G=(V N ,V T ,P,S)是⼀⽂法,我们说G 中的⼀个符号X ∈V N ∪V T 是有⽤的,是指X ⾄少出现在(4)的推导过程中,否则,就说X 是⽆⽤的。
我们将不含形如A→A 的产⽣式和不含⽆⽤符号及⽆⽤产⽣式的⽂法称为(5)。
4.我们常采⽤形如 (class, value)的⼆元式作为⼀个单词的 (6) 。
其中,class 是⼀个整数,⽤来指⽰该单词的 (7) ,value 则是单词之值。
5.⼀个⽂法G[S]可表⽰成形如(8)的四元式。
其中V N ,V T ,P 均为⾮空的有限集,分别称为⾮终结符号集、终结符号集和产⽣式集, S ∈V N 为⽂法的开始符号。
此外,将出现在各产⽣式左部和右部的⼀切符号所组成的集合称为(9),记作V 。
显然,V=V N ∪V T ,V N ∩V T =?。
6.通常,可通过两种途径来构造词法分析程序。
其⼀是根据对语⾔中各类单词的某种描述或定义,⽤ (10) 构造词法分析程序;另外⼀种途径是所谓词法分析程序的 (11) 。
7.设G 为⼀⽂法,A→α是G 的⼀个产⽣式,如果α具有υA δ的形式,其中υ,δ不同时为ε,则称产⽣式A→α是(12)。
若存在推导δυαA A *,则称产⽣式A→α是(13)。
8.设M=(K,Σ,f,S 0,Z)为⼀DFA ,并设s 和t 是M 的两个不同状态,我们说状态s,t 为某⼀输⼊串w (14) ,是指从s,t 中之⼀出发,当扫视完w 之后到达M 的终态,但从其中的另⼀个状态出发,当扫视完同⼀个w 后⽽进⼊ (15) 。
编译原理试题

编译原理试题编译原理试题一、单项选择题1.将编译程序分成若干个“遍”是为了( B )A.提高程序的执行效率B. 使程序的结构更加清晰C.利用有限的机器内存并提高机器的执行效率D.利用有限的机器内存但降低了机器的执行效率2.不可能是目标代码的是( D )A.汇编指令代码 B.可重定位指令代码C.绝对指令代码 D.中间代码3.词法分析器的输入是( B )A.单词符号串 B.源程序C.语法单位 D.目标程序4.中间代码生成时所遵循的是( C )A.语法规则 B.词法规则C.语义规则 D.等价变换规则5.编译程序是对( D )A.汇编程序的翻译 B.高级语言程序的解释执行C.机器语言的执行 D.高级语言的翻译6.词法分析应遵循( C )A.语义规则 B.语法规则C.构词规则 D.等价变换规则7.词法分析器的输出结果是( C )A.单词的种别编码 B.单词在符号表中的位置C.单词的种别编码和属性值 D.单词属性值8.正规式M1和M2等价是指( C )A.M1和M2的状态数相等 B.M1和M2的有向弧条数相等C.M1和M2所识别的语言集相等D.M1和M2状态数和有向弧条数相等9.词法分析器作为独立的阶段使整个编译程序结构更加简洁、明确,因此,( B ) A.词法分析器应作为独立的一遍B.词法分析器作为子程序较好C.词法分析器分解为多个过程,由语法分析器选择使用.D.词法分析器并不作为一个独立的阶段10.如果L(M1)=L(M2),则M1与M2( A )A.等价 B.都是二义的C .都是无二义的D .它们的状态数相等 11.文法G :S →xSx|y 所识别的语言是( C )A .xyxB .(xyx)* c .x n yx n (n ≥0) d .x *yx *12.文法G 描述的语言L(G)是指( A )A .∈?=+*,|)(T V S G L αααB .∈?=+*)(,|)(N T V V S G L ααα C .∈?=**,|)(T V S G L ααα D .?∈?=**)(,|)(N T V V S G L ααα 13.有限状态自动机能识别( C )A .上下文无关文法B .上下文有关文法C .正规文法D .短语文法14.如果文法G 是无二义的,则它的任何句子( A ) A .最左推导和最右推导对应的语法树必定相同B .最左推导和最右推导对应的语法树可能不同 C .最左推导和最右推导必定相同D .可能存在两个不同的最左推导,但它们对应的语法树相同15.由文法的开始符经0步或多步推导产生的文法符号序列是( C ) A .短语 B .句柄 C .句型 D .句子 16.文法G :E →E+T|T T →T*P|P P →(E)|i则句型P+T+i 的句柄为( B )A .P+TB .PC .P+T+iD .i 17.文法G :S →b|∧|(T) T →T ∨S|S 则FIRSTVT(T)=( C )A .{ b ,∧,( }B .{ b ,∧,) }C .{ b ,∧,(,∨ }D .{ b ,∧,),∨ } 18.产生正规语言的文法为( D )A .0型B .1型C .2型D .3型 19.任何算符优先文法( D )优先函数。
编译原理复习题-ans

新建试卷20181220104955一、单选题(共65题,65分)1、语言是A、句子的集合B、产生式的集合C、符号串的集合D、句型的集合2、编译程序前三个阶段完成的工作是A、词法分析、语法分析和代码优化B、代码生成、代码优化和词法分析C、词法分析、语法分析、语义分析和中间代码生成D、词法分析、语法分析和代码优化3、一个句型中称为句柄的是该句型的最左A、非终结符号B、短语C、句子D、直接短语4、下推自动机识别的语言是A、 0型语言B、 1型语言C、 2型语言D、 3型语言5、扫描器所完成的任务是从字符串形式的源程序中识别出一个个具有独立含义的最小语法单位即A、字符B、单词C、句子D、句型6、词法分析的任务是B、分析句子的含义C、识别句子D、生成目标代码7、常用的中间代码形式不含A、三元式B、四元式C、逆波兰式D、语法树8、代码优化的目的是A、节省时间B、节省空间C、节省时间和空间D、把编译程序进行等价交换9、代码生成阶段的主要任务是A、把高级语言翻译成汇编语言B、把高级语言翻译成机器语言C、把中间代码变换成依赖具体机器的目标代码D、把汇编语言翻译成机器语言10、将编译程序分成若干个“遍”是为了( )A、 . 提高程序的执行效率B、使程序的结构更加清晰C、利用有限的机器内存并提高机器的执行效率D、利用有限的机器内存但降低了机器的执行效率11、11.正规式MI 和M等价是指()。
A、 . MI 和M2 的状态数相等B、 Ml 和M2 的有向弧条数相等。
C、 .M1 和M2 所识别的语言集相等D、 Ml 和M2 状态数和有向弧条数相等12、中间代码生成时所依据的是()。
A、语法规则C、语义规则D、等价变换规则13、后缀式ab+cd+/可用表达式()来表示。
A、 a+b/c+dB、 (a+b)/(c+d)C、 a+b/(c+d)D、 a+b+c/d14、一个编译程序中,不仅包含词法分析,(),中间代码生成,代码优化,目标代码生成等五个部分。
编译原理复习题有答案版

1、给出下面语言的相应文法。
L1={a n b n c i|n≥1,i≥0}答案:S→AB|BA→a|aAB→bBc|bc2.给出下面语言的相应文法L1={a n b n c m d m| m,n≥1,n为奇数,m为偶数}。
答案:文法G(S):S→ACA→aaAbb/abC→ccCcc/cc3、构造一个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|bFIRST(+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)构造它的预测分析表。
编译原理

第一套一、是非题1.编译程序是对高级语言程序的解释执行。
2.一个有限状态自动机中,有且仅有一个唯一的终态。
3.一个算符优先文法可能不存在算符优先函数与之对应。
4.语法分析时必须先消除文法中的左递归。
5.LR分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。
6.波兰表示法表示表达式时无须使用括号。
7.2 型文法一定是3型文法。
8.编译过程中,语法分析器的任务是分析单词是怎样构成的。
9.并不是每个文法都能改写成LL(1)文法。
10.一个LL(1)文法一定是无二义的。
11.逆波兰法表示的表达式亦称前缀式。
12.正规文法产生的语言都可以用上下文无关文法来描述。
13.3型文法一定是2型文法。
14.如果一个文法存在某个句子对应两棵不同的语法树,则文法是二义性的。
15.计算机高级语言翻译成低級语言只有解释一种方式。
16.在编译中进行语法检查的目的是为了发现程序中所有错误。
17.甲机上的某编译程序在乙机上能直接使用的必要条件是甲机和乙机的操作系统功能完全相同。
18.每个文法都能改写为LL(1)文法。
19.递归下降法不允许任一非终极符是直接左递归的。
20.自底而上语法分析方法的主要问题是候选式的选择。
21.LR法是自顶向下语法分析方法。
22.一个句型的句柄一定是文法某产生式的右部。
23.编译程序与具体的机器有关,与具体的语言无关。
24.递归下降分析法是自顶向下分析方法。
24.综合属性是用于“自上而下”传递信息。
25.正规文法产生的语言都可以用上下文无关文法来描述。
26.逆波兰法表示的表达式亦称后缀式。
27.如果一个文法存在某个句子对应两颗不同的语法树,则称这个文法是二义的。
28.一个有限状态自动机中,有且仅有一个唯一的终态。
29.r和s分别是正规式,则有L(r|s)=L(r)L(s)。
30.确定的自动机以及不确定的自动机都能正确地识别正集。
31.词法分析作为单独的一遍来处理较好。
32.LR分析器的任务就是产生LR分析表。
编译原理试题及答案(期末复习版)

<编译原理>历年试题及答案一.(每项选择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/d9.程序所需的数据空间在程序运行前就可确定,称为____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):S→(L)|a S|aL→L,S|S(1)消除左递归和回溯;(2)计算每个非终结符的FIRST和FOLLOW;(3)构造预测分析表。
编译原理考试习题及答案
( T ② S ① a
T ,
T ④ S ③ a
2019/1/29
CH.5.练习题3(P133.)
3.(1) 计算练习2文法G2的FIRSTVT和LASTVT。 S→a||(T) T→T,S|S
(1) 解: (执行相应的算法可求得) FIRSTVT(S)={ a, ∧, ( } FIRSTVT(T)={ , , a, ∧, ( } LASTVT(S)={ a, ∧, ) } LASTVT(T)={ , , a, ∧, ) }
(1) 正规式 1(0|1)*101
0
0
DFA:
3,2
1 0
3,5,2
1 1 0
x
1
1,3,2
1
0
3,4,2
1
3,Y,4,2 I0 I1 1 3 3 3 5 3
I {X} {1,3,2} {3,2} {3,4,2} {3,5,2} {3,Y,4,2}
I0 {3,2} {3,2} {3,5,2} {3,2} {3,5,2}
2019/1/29 22
CH.5.练习题2(P133.)
2.(2).给出(a,(a,a))“移进-归约”的过程。 (2) 解: (a,(a,a))的“移进-归约”过程: 步骤 符号栈 输入串 动作 9 #(T,( S ,a))# 归约 S → a 10 #(T,(T , a ))# 归约 T → S 11 #(T,(T, a ))# 移进 , 12 #(T,(T, a ))# 移进 a 13 #(T,( T,S ))# 归约 S → a 14 #(T, (T ) )# 归约 T → T,S 15 #(T, (T) )# 移进 ) 16 #( T, S )# 归约 S → (T)
2018年c语言考试题及答案
2018年c语言考试题及答案一、选择题(每题2分,共20分)1. 下列选项中,哪个是C语言中的合法标识符?A. 2variableB. variable2C. variable_2D. variable-2答案:C2. C语言中,用于定义一个整型变量的关键字是?A. intB. floatC. charD. double答案:A3. 下列哪个选项不是C语言中的运算符?A. %B. &&C. ==D. *答案:D4. 在C语言中,哪个关键字用于定义一个函数?A. functionB. defC. voidD. int答案:C5. 下列关于C语言数组的描述,哪个是错误的?A. 数组可以存储相同类型的元素B. 数组的索引从0开始C. 数组的大小在定义时必须确定D. 数组可以动态分配大小答案:D6. C语言中,哪个函数用于将字符串复制到另一个字符串?A. strcpyB. strcatC. strncpyD. strcat答案:A7. 下列哪个选项是C语言中的逻辑运算符?A. &&B. ||C. =D. +=答案:A8. 在C语言中,哪个关键字用于声明一个指针变量?A. pointerB. ptrC. *D. var答案:C9. 下列关于C语言函数的描述,哪个是正确的?A. 函数可以没有返回值B. 函数可以返回多个值C. 函数可以没有参数D. 函数必须有参数答案:C10. C语言中,哪个关键字用于定义一个结构体?A. structB. unionC. enumD. type答案:A二、填空题(每题3分,共15分)1. 在C语言中,使用____关键字可以定义一个常量。
答案:const2. C语言中,字符串字面量是用____括起来的。
答案:""3. 使用____运算符可以将一个变量的值赋给另一个变量。
答案:=4. 在C语言中,使用____函数可以计算两个数的和。
《编译原理》期末考试题库含答案.docx
《编译原理》模拟试题一一、是非题(请在括号内,正确的划错误的划X)(每个2分,共20分)1•计算机高级语言翻译成低级语言只有解释一种方式。
(X)2.在编译中进行语法检查的目的是为了发现程序中所有错误。
(X)3.甲机上的某编译程序在乙机上能直接使用的必要条件是甲机和乙机的操作系统功能完全相同。
(丁 )4.正则文法其产生式为A->a , A->Bb, A.BGVN , a、beVT o (X)5.每个文法都能改写为LL(1)文法。
(V)6.递归下降法允许任一非终极符是直接左递归的。
(V)7.算符优先关系表不一定存在对应的优先函数。
(X)8.自底而上语法分析方法的主要问题是候选式的选择。
(X)9.LR法是自顶向下语法分析方法。
(X)10.简单优先文法允许任意两个产生式具有相同右部。
(X)二、选择题(请在前括号内选择最确切的一项作为答案划一个勾,多划按错论)(每个4分,共40分)1.一个编译程序中,不仅包含词法分析,_____ ,中间代码生成,代码优化,目标代码生成等五个部分。
A.()语法分析B.()文法分析C.()语言分析D.()解释分析2.词法分析器用于识别_____ oA.()字符串B.()语句C.()单词D.()标识符3 •语法分析器则可以发现源程序中的______ oA.()语义错误B.()语法和语义错误C.()错误并校正D.()语法错误4.下面关于解释程序的描述正确的是。
(1) 解释程序的特点是处理程序时不产生目标代码(2) 解释程序适用于COBOL 和FORTRAN 语言(3) 解释程序是为打开编译程序技术的僵局而开发的A. ( ) (1) (2)B. () (1)C. () (1)⑵(3)D.()⑵⑶5. _________________________________________ 解释程序处理语言时,大多数采用的是 ___________________________________ 方法。
编译原理期末考试试卷(A卷)
编译原理期末考试试卷( A 卷)一、简述编译程序的工作过程。
( 10)二、构造下列正规式相应的DFA (用状态转换图表示)( 15)(1) 1( 0 | 1) *100(2) 0*10*10*10*1(3) letter (letter | digit ) *三、给出下面语言的相应文法:(15)L1 ={a n b n |n≥1}L 2={a n b m+n a m|n≥1,m≥ 0}四、对下面的文法G:S→a | b | ( T)T→T,S | S(1)消去文法的左递归,得到等价的文法G2;(2)判断文法 G2 是否 LL ( 1)文法,如果是,给出其预测分析表。
( 15)五、设有文法G[A] :A→ BCc | gDBB→ bCDE | εC→DaB | caD→ dD |εE→gAf | c(1) 计算该文法的每一个非终结符的FIRST 集和 FOLLOW 集;(2)试判断该文法是否为 LL ( 1)文法。
(15)六、对表达式文法G:E → E+T|TT → T*F|FF → (E)|I(1)造各非终结符的 FIRSTVT 和 LASTVT 集合;(2)构造文法的算符优先关系表。
(15)七、有定义二进制整数的文法如下:L →LB|BB →0|1构造一个翻译模式,计算该二进制数的值(十进制的值)。
( 15)简述编译程序的工作过程。
(10)编译程序的工作过程,是指从输入源程序开始到输出目标程序为止的整个过程,是非常复杂的,就其过程而言,一般可以划分为五个工作阶段:①词法分析,对构成源程序的字符串进行扫描和分解,识别出一个个的单词;②语法分析,根据语言的语法规则,把单词符号串分解成各类语法单位;③语义分析与中间代码产生,即对各类语法单位,分析其汉一并进行初步翻译;④代码优化,以期产生更高效的代码;⑤目标代码生成,把中间代码变换成特定机器上的低级语言指令形式。
二、构造下列正规式相应的DFA (用状态转换图表示)( 15)(4) 1(0 | 1)*1( 5) 0*10*10*10*10,1(6) letter (letter | digit ) *01( 1)1230000( 2)151111234(3)letterletter12digit三、给出下面语言的相应文法:(15)L1 ={a n b n|n≥1}L 2={a n b m+n a m|n≥1,m≥ 0}G1:G1 :A→ aAb |ab S→ABA → aAb | abB → bBa |ε四、对下面的文法G:S→a | b | ( T)T→T,S | S(1) 消去文法的左递归,得到等价的文法G2;(2) 判断文法G2 是否 LL ( 1)文法,如果是,给出其预测分析表。