上海大学编译原理试卷2013-2014春(附答案)
《编译原理》考试试题及答案

《编译原理》考试试题及答案(附录)一、判断题:1.一个上下文无关文法的开始符,可以是终结符或非终结符。
( X )2.一个句型的直接短语是唯一的。
( X )3.已经证明文法的二义性是可判定的。
( X )4.每个基本块可用一个DAG表示。
(√)5.每个过程的活动记录的体积在编译时可静态确定。
(√)6.2型文法一定是3型文法。
( x )7.一个句型一定句子。
( X )8.算符优先分析法每次都是对句柄进行归约。
(应是最左素短语) ( X )9.采用三元式实现三地址代码时,不利于对中间代码进行优化。
(√)10.编译过程中,语法分析器的任务是分析单词是怎样构成的。
( x )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.扫描器的任务是从()中识别出一个个()。
编译原理试题及答案

编译原理试题及答案
编译原理是计算机科学中的一门重要课程,它涉及到程序设计语言的语法、语义分析以及编译器的设计与实现等内容。
下面我们将为大家提供一些编译原理的试题及答案,希望能够帮助大家更好地理解和掌握这门课程的知识。
1. 什么是编译原理?
编译原理是研究编译器的设计与实现的一门学科,它主要包括词法分析、语法分析、语义分析、中间代码生成、代码优化和代码生成等内容。
2. 什么是词法分析?
词法分析是编译原理中的一个重要内容,它主要负责将源程序转换成一个个的单词符号,也就是词法单元。
3. 什么是语法分析?
语法分析是编译原理中的另一个重要内容,它主要负责将词法单元序列转换成抽象语法树,以便进行后续的语义分析和中间代码生成。
4. 什么是语义分析?
语义分析是编译原理中的一个关键环节,它主要负责对源程序进行语义检查,以确保程序的正确性和合法性。
5. 什么是中间代码生成?
中间代码生成是编译原理中的一个重要环节,它主要负责将源程序转换成一种中间形式的代码,以便进行后续的代码优化和代码生成。
6. 什么是代码优化?
代码优化是编译原理中的一个关键环节,它主要负责对中间代码进行优化,以提高程序的执行效率和减少资源消耗。
7. 什么是代码生成?
代码生成是编译原理中的最后一个环节,它主要负责将优化后的中间代码转换成目标机器代码,以便计算机能够执行。
以上就是关于编译原理的一些试题及答案,希望能够帮助大家更好地理解和掌握这门课程的知识。
如果大家对编译原理还有其他疑问,可以随时向我们提问,我们将竭诚为大家解答。
2013-2014-2编译原理试卷A带答案-推荐下载

2013– 2014学年第二学期 计算机科学与技术专接本专业编译原理试卷(A )卷一、填空题(每空2分,10个空,共20分,请将正确的答案填写在答题纸上)1.若将X 语言的源程序翻译成Y 语言的程序,翻译的实现语言为Z 语言,则称Z 语言是翻译的 宿主 语言2.设有字母表Σ={a,bb,c},字母表Σ上的符号串ω=abbc、,则|ω3|=93.设有有限自动机如下图所示,设I={x},则Ib={ 1,2,3 }4.语言中具有独立意义的最小语法单位是 单词5.设有文法S→ABc A→a|ε B→b|ε,则First(S)={ a,b,c }6.规范归约中的可归约串是指(句柄)。
7.中间代码产生是依据语言的 语义 规则进行的8.存储分配的基本单元是过程的 活动记录9.在基本块范围内的优化称为 局部优化10.在目标代码生成阶段,符号表是 地址分配___的依据。
二、选择题(每题2分,10题,共20分)(在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填在答题纸上。
错选、多选或未选均无分。
)题 号一二三四五合计得 分阅卷人河北科技师范学院装订线系(部)班 级学 号姓 名1.目前最常用的文法表示方法为………………………………( A )A. BNF 表示法B.YACCC. LexD. DAG2. 下图所示自动机所描述的语言是…………………………………………( B)A. aa(ε(a|b)*(a|b))B. aa((a|b)*|ab)C. aa((a|b)|ab)D. aa((a|b|ab)*3. 词法分析器的输出结果是…………………………………………………( C )A .单词的种别编码B .单词在符号表中的位置C .单词的种别编码和属性值D .单词属性值4. 在自顶向下的语法分析方法中,分析的关键是…………………………( D )A. 寻找句柄B. 寻找句型C. 消除递归D. 选择候选式5.设有文法G[S]为:S →AB A →Aa|bB B →a|Sb ,下面哪个不是句型 baSb 的短语…………………………………………………………………………………( C)A. baSbB. SbC.aSbD. ba6. 在编译过程中,引起源程序发生质的变化的阶段是………………………( B )A. 语法分析B. 语义分析C. 词法分析D. 中间代码生成7. 常用的两种动态存贮分配办法是 动态分配和 动态分配………( A)A. 栈式、堆式B. 栈式、队列式C. 堆式、队列式D. 记录式、队列式8. 有代码为 x=a+b+c; y=a+b+d;可以采用的优化方法是 ……………………………………………………(B5b a)A. 常量的合并与传播B. 公共子表达式删除C. 无用赋值的删除D. 死代码删除9. 设有如下代码段,则其可以被划分的基本块的个数为……………………( C )Read NI=NJ=2L1:if I≤J goto L3I∶=I-JJ∶=J+1goto L1L3:Print ′YES′haltA. 2B. 3C. 4D. 510.经过编译所得到的目标程序是……………………………( D )A.四元式序列 B.间接三元式序列C.二元式序列 D.机器语言程序或汇编语言程序三、判断题(每题1分,10题,共10分)(对的打“√”号错误的打“×”,写在答题纸上)1.解释程序和编译程序的区别在于是否生成目标代码…………(√)2.若一个文法是递归的,则它所产生语言的句子个数必定是无穷的……………………………………………………………………(√)3.词法分析应遵循的是语义规则…………………………………(×)4.语法分析方法中的递归下降分析法属于自底向上分析方法…( × )5.算符优先分析法的实质就是借助优先关系来寻找可规约串…(√)6.编译中进行语法检查的目的是为了发现程序中所有错误……( × )7.中间代码产生是依据语言的语义规进行的…………………(√)8.环境把名字映射到左值,而状态把左值映射到右值…………(√)9.含有优化功能的编译程序执行效率高 …………………………(×)10.目标代码指令越丰富,代码生成的工作越复杂………………(×)四、简答题(共四小题,每题5分,共20分)1. 设有确定的有限自动机M:({1,2,3,4,5},{a,b},f,1,{4,5})f(1,a)=2 f(1,b)=3f(2,a)=2 f(2,b)=3f(3,a)=4 f(4,a)=5f(4,b)=3 f(5,a)=2画出其状态转换图和状态转换矩阵状态转换图2. 设文法G(S): S→(L)|Sa|a L→L,S|La|ab消除其左递归,写出写出左递归后的文法S→(L)S’|aS’S’ →aS’|εL→abL’L’ →,SL’|aL’|ε3. 有文法G(S):S→a|∧|(T)T→T,S|S求非终结符S和T的FIRSTVT和LASTVT答案:FIRSTVT(S)={a,∧,(}FIRSTVT(T)={,,a,∧,( }LASTVT(S)={ a,∧,)}LASTVT(T)={,,a,∧,)}4. 写出赋值语句 a=w+(a+b)*(c+d/(e-10)+8)的逆波兰式和四元式表示逆波兰式:wab+cde10-/+8+*=四元式:+ a b t1- e 10 t2/ d t2 t3+ c t3 t4+ t4 8 t5* t1 t5 t6+ w t6 t7= t7 a五、分析题(3小题,每题10分,共30分)1. 给定非确定的有限自动机M如下图所示将M确定化,并画出确定化后的状态转换图(要求:写出步骤)2.设有文法G[S]:S→bBS′S′→aBS′|εA→S|aB→Ac其LL(1)分析表如下a b c#S S→bBS′S′S′→aBS′S′→εS′→εA A→a A→SB B→Ac B→Ac利用此分析表判断输入串bacaac(改)是否为文法G[S]的句子,给出bacaac的分析过程3. 应用DAG对下面的基本块进行优化,写出优化后的基本块(要求写出过程)1. T0:=3.14 6. T3:=2*T02. T1:=2*T0 7. T4:=R+r3. T2:=R+r 8. T5:=T3*T44. A:=T1*T2 9. T6:=R-r5. B:=A 10. B:=T5*T。
编译原理试题及答案

参考答案一、单项选择题(共10小题,每小题2分,共20分)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.对应Chomsky 四种文法的四种语言之间的关系是 A .L 0⊂L 1⊂L 2⊂L 3 B .L 3⊂L 2⊂L 1⊂L 0C .L 3=L 2⊂L 1⊂L 0D .L 0⊂L 1⊂L 2=L 3 7.词法分析的任务是A .识别单词B .分析句子的含义C .识别句子D .生成目标代码 8.常用的中间代码形式不含A .三元式B .四元式C .逆波兰式D .语法树 9. 代码优化的目的是A .节省时间B .节省空间C .节省时间和空间D .把编译程序进行等价交换 10.代码生成阶段的主要任务是 A .把高级语言翻译成汇编语言 B .把高级语言翻译成机器语言C .把中间代码变换成依赖具体机器的目标代码装 订 线D.把汇编语言翻译成机器语言二、填空题(本大题共5小题,每小题2分,共10分)1.编译程序首先要识别出源程序中每个(单词),然后再分析每个(句子)并翻译其意义。
2.编译器常用的语法分析方法有(自底向上)和(自顶向下)两种。
3.通常把编译过程分为分析前端与综合后端两大阶段。
词法、语法和语义分析是对源程序的(分析),中间代码生成、代码优化与目标代码的生成则是对源程序的(综合)。
编译原理试题汇总+编译原理期末试题(8套含答案+大题集)(完整资料).doc

此文档下载后即可编辑编译原理考试题及答案汇总一、选择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/d6.一个编译程序中,不仅包含词法分析,_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. 解释语法分析器的功能和作用。
答案:
1. 编译原理是研究如何将高级语言程序转化为等价机器语言程序的一门学科。
编译器是将高级语言文本转换成等价的机器语言的软件工具。
它负责将源代码转化为目标代码,以便计算机能够理解和执行。
2. (1) 词法分析:将源代码分解成一系列单词或标记。
(2) 语法分析:根据语法规则组织单词或标记形成语法树。
(3) 语义分析:分析语法树以检测语义错误。
(4) 代码生成:根据语法树生成目标代码。
3. 词法分析器的功能是将源代码分解成一系列单词或标记。
它将源代码读取为字符流,然后将这些字符组成单词,同时可以去除空格、注释等不具有实际意义的内容。
词法分析器的作用是为语法分析器提供正确的单词序列,为后续的语义分析和代
码生成步骤建立基础。
4. 语法分析器的功能是根据语法规则组织单词或标记形成语法树。
它通过构建语法树来分析源代码的语法结构,同时可以检测语法错误。
语法分析器的作用是为后续的语义分析和代码生成步骤提供一个结构化的表示形式,便于后续的处理和转换。
《编译原理》历年试题及答案

<编译原理>历年试题及答案一.(每项选择2分,共20分)选择题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.正规式MI和M2等价是指____。
a. MI和M2的状态数相等b.Ml和M2的有向弧条数相等。
C.M1和M2所识别的语言集相等 d. Ml和M2状态数和有向弧条数相等7.中间代码生成时所依据的是—。
a.语法规则 b.词法规则 c.语义规则 d.等价变换规则8.后缀式ab+cd+/可用表达式___来表示。
a.a+b/c+d b.(a+b)/(c+d) c.a+b/(c+d) d.a+b+c/d9.程序所需的数据空间在程序运行前就可确定,称为______管理技术。
a.动态存储b.栈式存储c.静态存储d.堆式存储10.堆式动态分配申请和释放存储空间遵守________原则。
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) 构造预测分析表。
(完整版)编译原理期末试题(含答案+大题集+重要知识点)

7.一个句型一定句子。()
8.算符优先分析法每次都是对句柄进行归约。X()
9.采用三元式实现三地址代码时,不利于对中间代码进行优化。()
10.编译过程中,语法分析器的任务是分析单词是怎样构成的。()
11.一个优先表一定存在相应的优先函数。X()
12.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。()
C.( )编译方法D.( )以上三项都是
6.四元式之间的联系是通过_____实现的。
A.( )指示器B.( )临时变量
C.( )符号表D.( )程序变量
7.表达式(┐A∨B)∧(C∨D)的逆波兰表示为_____。
A. ( ) ┐AB∨∧CD∨B.( ) A┐B∨CD∨∧
C.( ) AB∨┐CD∨∧D.( ) A┐B∨∧CD∨
6.扫描器的任务是从(源程序中)中识别出一个个(单词符号)。
7.符号表中的信息栏中登记了每个名字的有关的性质,如(类型、种属、所占单元大小、地址)等等。
8.一个过程相应的DISPLAY表的内容为(现行活动记录地址和所有外层最新活动记录的地址)
10.常用的两种动态存贮分配办法是(栈式)动态分配和(堆式)动态分配。
《编译原理》期末试题(一)
一、是非题(请在括号内,正确的划√,错误的划×)(每个2分,共20分)
1.编译程序是对高级语言程序的解释执行。(×)
2.一个有限状态自动机中,有且仅有一个唯一的终态。(×)
3.一个算符优先文法可能不存在算符优先函数与之对应。(√)
4.语法分析时必须先消除文法中的左递归。(×)
二、填空题:
2.编译过程可分为 (词法分析) ,(语法分析),(语义分析与中间代码生成),(优化)和(目标代码生成)五个阶段。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3 表达式 (a + b)*c / d 对应的逆波兰式是 a) ab+c*d/ b) abc+/*d
c) ab*c+/d
4.一个句型中称为句柄的是该句型中最左的 a) 非终结符 5.以下 a) term c b) 句子 c) 短语
函数是 PL/0 编译程序中的词法分析器。 b) expression c) getsym b d) factor 。
输入串 n+r+n# +r+n# +r+n# ∵ 状态 I1 含有移进-归约冲突∴ G[S]是非 LR(0)文法 4. 01 #E +r+n# ∵ follow(S‟)={#} ∩ {+}= ∴ G[S]是 SLR(1)文法 5. 015 #E+ r+n# 6. 0154 #E+r +n# SLR(1)分析表: 7. 0156 #E+T +n# 8. 01 #E +n# ACTION GOTO 9. n# 状态 015 + n r #E+ # E T 10. 0153 s3 s4 #E+n # 0 1 2 11. 0156 #E+T # 1 s5 acc 12. 01 #E # 2 r2 r2
第 7 页( 共 8 页 )
八、综合题(本大题共 3 小题,第 1 题 6 分,第 2,3 题各 5 分共 16 分) 设有文法 G[S‟]:
(0) S‟→E (1) E→E+T (2) E→T (3) T→n (4) T→r
1. 证明 G[S]是 SLR(1)文法,构造 G[S]的 SLR(1)分析表。 答:LR(0)项目集规范族:
试卷序号:
第 1 页 ( 共 8 页 )
成 绩
上海大学 2013~ 2014 学年春 季学期试卷 A 课程名: 编译原理
课程号: 08305013 学分: 5 参考答案
得分
题号 得分
一 (10) 二(10) 三(10
七(12)
八(16)
一、判断题(本大题共 10 小题,每小题 1 分,共 10 分) 判断下列各题正误,正确者在括号内打“√” ,错误者在括号内打“×” 。 1. 对中间代码的优化不依赖于具体的计算机。 2. 程序流图中的每条回边对应于一个循环。 3. 自底向上语法分析时必须先消除文法中的左公共因子。 4. 使用逆波兰式描述表达式时无须使用括号。 第 2 页( 共 8 页 ) ( √ (√ ) )
I1:S‟→E. E→E.+T
E
+
I5:E→E+.T T→.n T→.r
n I3:T→n. r
I6:E→E+T.
T
I0:S‟→.E E→.E+T E→.T T→.n →.r 第 8 页( 共 8T 页 )
n
r I4:T→r.
2. 对输入串 n+r+n# T 给出分析过程: T→r →T. 步骤 I2:E 状态 符号 1. 0 # (1) E → 2. 03 #n E 3. 02 #T
n8 *
W,S n5 T1,T3 *
S
n3 + n7 T1 T5 5.70
T1
n1 a
n2 b
n4 3..14
T2
n6 2.56
T4
1
2.优化后的基本块 B’ 答: T1:=a+b T5:=5.70 W:=T5*T1 S:=W
第 5 页( 共 8 页 ) 六、分析题(本大题共 2 小题,第 1 题 5 分,第 2 题 10 分,共 15 分) 1.对下列属性文法中的语义处理功能作简略说明: E→id1 rop id2 { E.true:=nextstat; E.false:=nextstat+1; E.Codebegin:=nextstat; emit(„if‟ id1.place „rop‟ id2.place „goto‟–); emit(„goto‟-) } 答:E.true:E 的真出口链 E. false:E 的假出口链 E.Codebegin: E 的代码开始地址 Nextstat:下一条代码地址 emit: 生成一条四元式 2. 在下划线处填写正确内容,完成下列源语句通过语法制导翻译后生成的四元式序列。 源语句:
a,b a S a A b
B
b
C
2. 把上述 NFA M 转化为等价的 DFA M。
a a S A b a
B
b a
C
b
3.给出 DFA M 所对应的正规文法。 G[S]:S→aA A→aB | bC B→aB | bC C→aB | bC | ε
第 4 页( 共 8 页 ) 五、设计题(本大题共 2 小题,第 1 题 7 分,第 2 题 5 分,共 12 分) 对下列基本块 B 应用 DAG 进行优化,设只有 S、W 在基本块后面还要继续引用。 B: T1 := a+b T2 := 3.14 S := T1*T2 T3 := a+b T4 := 2.56 T5 := T2+T4 W := T5*T1 S := T5*T3 1.基本块 B 的 DAG 答 :
( × ) ( √ )
5. 编译程序是对高级语言程序的解释执行。 ( × ) 二、选择题(本大题共 10 小题,每小题 1 分,共 10 分) 6. 符号表内容的一个重要作用是作为上下文语义合法性检查的依据。 ( √ ) 在每小题列出的备选项中只有一个是符合题目要求的,请将其代码填写在题中的空格内。错 选、多选或未选均无分。 7. 状态中含有冲突的文法有可能是一个 SLR(1)文法。 ( √ ) 1. 以下优化技术除 b 外,都是针对循环优化进行的。 8. 语义处理中“拉链”的作用是使“回填”更为有效。 a) 强度削弱 b) 删除多余运算 c) 变换控制条件 d) 代码外提 9. 算符优先分析法是一种自下而上的语法分析方法。 2.下列 d 工作不属于编译阶段的前端。 10. 编译程序能找出源程序中所有错误。 a) 语法分析 b) 词法分析 c) 中间代码生成 d) 目标代码生成 a d) abc*/d+ d 。 d)直接短语 。 ( √ ) ( √ ) ( × )
动作 s3 r3 r2 s5 s4 r4 r1 s5 s3 r3 r1 acc
3 4 5 6 (0) (1) (2)
r3 r4 s3 r1 s4
r3 r4 6 r1 S‟→E E→E+T E→T { { { } } }
3.将文法 G[S‟]扩充为属性文法:
print(“+”)
6.PL/0 编译程序的语法分析采用的是 a) LR 分析法
b) 递归子程序法 c) 算符优先分析法 d) 预测分析法
第 3 页( 共 8 页 ) 三、设计题(本大题共 2 小题,每小题 5 分,共 10 分) 1.定义一个上下文无关文法 G[S],生成下述语言 L: L= { an dm bn | n,m≥1 } 答 G[A]:A→aAb | aBb B→dB | d 2.证明下列文法 G[A]是一个二义文法: A→B+B | B B→B*B | A | a 答:∵ 对于句子 a+a*a 存在两个不同的最左推导: 1: A=>B+B=>a+B=>a+B*B=>a+a*B=>a+a*a 2: A=>B=>B*B=>A*B=>B+B*B=>a+B*B=>a+a*B=>a+a*a ∴ G[A]是一个二义文法 四、设计题(本大题共 3 小题,每小题 5 分,共 15 分) 设有正规式 r = (a |ab) (a|b)* b 1. 构造一个 NFA M,接受 L(r)。
while (s<100) and((a< b) or (a=b)) do begin a:=a+1; if (a<b) then s:= s+a; end;
四元式序列: 1) if s<100 goto(3) 第 6 页( 共 8 页 ) 2) goto (14) 七、 3 小题,每题 4 分,共 12 分) 3) 证明题(本大题共 if a<b goto (7) 设有文法 G[S]: S→B A 4) goto (5) A→AB | Aa | a 5) if a=b goto(7) B→ba | bB goto (14) 1) 6) 证明 G[S] 是一个非 LL(1)文法。 答: 7) t1:=a+1 ∵ A 含左递归(以及 A、B 含公共左因子)∴ G[S]非 LL(1)文法。 8) a:=t1 9 ) if a<b goto (11) 2) 把 G[S]等价改写为 LL(1)文法 G1[S]。 10) goto (1) 答: G1[S]: 11) t2:=s+a S→B A 12) s:=t2 A →aA ‟ A ‟→)BA‟|goto a A‟ (1) |ε 13 B→bB‟ 14) B ‟→a | B 3) 证明 G1[S]为 LL(1)文法。 答: