编译原理 试题及答案
- 格式:doc
- 大小:338.50 KB
- 文档页数:16
编译原理考试试题及答案 一、选择题(每题2分,共10分) 1. 编译器的主要功能是将高级语言源程序翻译成( )。 A. 机器语言程序 B. 汇编语言程序 C. 中间代码 D. 可执行文件 答案:A
2. 在编译原理中,词法分析的主要任务是( )。 A. 将源代码转换成中间代码 B. 识别源代码中的单词符号 C. 生成语法树 D. 优化代码 答案:B
3. 下列哪个选项不属于语法分析的范畴?( ) A. 构建语法树 B. 词法分析 C. 消除左递归 D. 检测语法错误 答案:B
4. 在编译过程中,语义分析的主要任务是( )。 A. 检查语法结构的正确性 B. 检查标识符的声明和使用 C. 计算表达式的值 D. 代码优化 答案:B 5. 编译器的优化阶段主要关注( )。 A. 语法结构的检查 B. 代码的生成 C. 程序运行效率的提升 D. 错误信息的报告 答案:C
二、填空题(每题2分,共10分) 1. 编译器前端的主要工作包括词法分析、语法分析和________。 答案:语义分析
2. 编译器后端的主要工作包括代码生成和________。 答案:代码优化
3. 在编译原理中,________是指一个非终结符可以推导出空串。 答案:产生式
4. 编译过程中,________分析用于检测和报告语法错误。 答案:语法
5. 编译器中的________分析阶段负责将源代码中的标识符与它们的定义关联起来。 答案:语义
三、简答题(每题10分,共20分) 1. 简述编译器的主要组成及其功能。 答案:编译器主要由前端和后端组成。前端包括词法分析、语法分析和语义分析,负责将源代码转换为中间代码,并进行错误检测和类型检查。后端包括代码生成和代码优化,负责将中间代码转换为目标代码,并优化代码以提高程序的运行效率。 2. 描述编译过程中词法分析器的主要任务。 答案:词法分析器的主要任务是将源代码分解成一系列的标记(token),这些标记包括关键字、标识符、常量、运算符等。它还负责识别和报告源代码中的词法错误,如拼写错误和不匹配的括号等。
试题(共10道)1.设∑={0,1}上的正规集S由倒数第二个字符为1的所有字符串组成,请给出该字集对应的正规式,并构造一个识别该正规集的DFA。
2.已知文法G[S’] :S’→SS→rDD→D,iD→i(1)构造G[S’]的识别活前缀的有穷自动机DFA。
(2)该文法是LR(0)文法吗?为什么?3.已知文法G[S’] :S’→S (1)S→AAA (2)A→1A (3)A→0 (4)(1)构造G[S’]的识别活前缀的有穷自动机DFA。
(2)构造相应的LR(0)分析表。
4.构造一个DFA,它接受∑={a,b}上所有包含ab的字符串。
5.构造正规式 (0|1)*00 相应的DFA并进行化简。
6.构造以下正规式相应的NFA,再确定化10(1|0)*117. 设有语言L={ α | α∈{0,1} + ,且α不以0 开头,但以00 结尾} 。
(1)试写出描述L 的正规表达式;(2)构造识别L 的DFA (要求给出详细过程,并画出构造过程中的NDFA 、DFA 的状态转换图,以及DFA 的形式化描述) 。
8.已知NFA=({x,y,z},{0,1},M,{x},{z}),其中:M(x,0)={z},M(y,0)={x,y},,M(z,0)={x,z},M(x,1)={x},M(y,1)=φ,M(z,1)={y},构造相应的DFA。
9. 给出下述文法所对应的正规式:S→0A|1BA→1S|1B→0S|010. 将下图的DFA 最小化,并用正规式描述它所识别的语言。
答案1.答:构造相应的正规式:(0|1)*1(0|1) NFA:12.答:(1) G[S ’]的识别活前缀的有穷自动机为: (2) 该文法不是LR (0)文法,因为I 3中有移进—规约冲突。
3.答:(1) G[S’]的识别活前缀的有穷自动机为:(2)4.答:构造相应的正规式:(a|b)*ab(a|b)*确定化:最小化:{0,1,2} {3,4,5} {0, 2},1, {3,4,5}5.答:最小化:{1,2,3} {4}{1,2,3}0={2,4} {1,3} {2} {4}6.答:(1)正规表达式:1(0|1) * 00(2)第一步:将正规表达式转换为NDFA第二步:将NDFA 确定化为DFA :造表法确定化,确定化后DFA M 的状态转换表状态输入I 0 I 1 t 0 1 [S] —[A,D,B] q 0 —q 1 [A,D,B] [D,B,C] [D,B] 重新命名q 1 q 2 q 3 [D,B,C] [D,B,C,Z] [D,B] q 2 q 4 q 3 [D,B] [D,B,C] [D,B] q 3 q 2 q 3 [D,B,C,Z] [D,B,C,Z] [D,B] q 4 q 4 q 3DFA 的状态转换图第三步:给出DFA 的形式化描述DFA M = ({ q 0 , q 1 , q 2 , q 3 , q 4 }, {0,1}, t, q 0 , { q 4 } )t 的定义见M 的状态转换表。
编译原理复习题及答案一、选择题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)上。
《编译原理》考试试题及答案(汇总)一、是非题(请在括号内,正确的划√,错误的划×)(每个2分,共20分)1.编译程序是对高级语言程序的解释执行。
(× )2.一个有限状态自动机中,有且仅有一个唯一的终态。
(×)3.一个算符优先文法可能不存在算符优先函数与之对应. (√ )4.语法分析时必须先消除文法中的左递归。
(×)5.LR分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。
(√)6.逆波兰表示法表示表达式时无须使用括号。
(√ )7.静态数组的存储空间可以在编译时确定. (×)8.进行代码优化时应着重考虑循环的代码优化,这对提高目标代码的效率将起更大作用。
(×) 9.两个正规集相等的必要条件是他们对应的正规式等价. (×)10.一个语义子程序描述了一个文法所对应的翻译工作。
(×)二、选择题(请在前括号内选择最确切的一项作为答案划一个勾,多划按错论)(每个4分,共40分) 1.词法分析器的输出结果是_____.A.()单词的种别编码B.( )单词在符号表中的位置C.( ) 单词的种别编码和自身值D.() 单词自身值2.正规式M 1 和M 2 等价是指_____。
A.( )M1和M2的状态数相等B.()M1和M2的有向边条数相等C.()M1和M2所识别的语言集相等D.()M1和M2状态数和有向边条数相等3.文法G:S→xSx|y所识别的语言是_____.A.( )xyx B.( ) (xyx)* C.()xnyxn(n≥0)D.()x*yx*4.如果文法G是无二义的,则它的任何句子α_____.A.( )最左推导和最右推导对应的语法树必定相同B.( ) 最左推导和最右推导对应的语法树可能不同C.()最左推导和最右推导必定相同D.()可能存在两个不同的最左推导,但它们对应的语法树相同5.构造编译程序应掌握______。
编译原理试题及答案一、选择题1. 下列哪个不是编译器所需的基本处理步骤?A. 词法分析B. 语法分析C. 语义分析D. 目标代码优化答案:D2. 编译器的主要功能是将高级语言程序翻译成什么形式?A. 汇编语言B. 机器语言C. 中间代码D. 高级语言答案:B3. 下列哪个不属于编译器的后端阶段?A. 代码优化B. 目标代码生成C. 词法分析D. 目标程序优化答案:C二、填空题1. 编译器的输入是源程序,输出是目标程序。
2. 目标代码生成阶段的任务是将中间代码翻译成汇编语言或机器语言。
3. 语法分析阶段的输出是抽象语法树。
三、简答题1. 请简述编译器的工作原理。
编译器的工作原理主要包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等阶段。
词法分析阶段将源程序分解成单词(也称为词法单元),语法分析阶段根据语法规则将词法单元组织成一个语法树,语义分析阶段对语法树进行语义检查,中间代码生成阶段将语法树转化为中间代码,代码优化阶段对中间代码进行优化,最后目标代码生成阶段将中间代码转化为机器语言或汇编语言。
2. 请说明词法分析的作用是什么,如何实现?词法分析的作用是将源程序中的字符序列转化为单词序列,也就是将一段代码切分成不同的词法单元。
实现词法分析可以通过有限状态自动机来处理输入字符序列,并根据一系列规则将字符序列划分为词法单元。
常用的方法有手写分析器和使用词法分析生成器等。
3. 简要介绍一下代码优化的目的和方法。
代码优化的目的是通过对程序的中间代码或目标代码进行调整,以达到提高程序性能、减小程序的空间占用或减小程序的执行时间等目的。
代码优化的方法主要包括局部优化和全局优化两种。
局部优化主要针对某个代码块进行优化,如常量折叠、公共子表达式消除等。
全局优化则考虑整个程序,对程序的整体结构进行优化,如循环优化、函数内联等。
总结:编译原理试题及答案主要涵盖了选择题、填空题和简答题三个部分。
其中选择题主要考察对编译器基本处理步骤和功能的理解。
编译原理考试题及答案一、选择题(每题5分,共20分)1. 编译器的主要功能是什么?A. 代码优化B. 代码翻译C. 代码调试D. 代码运行答案:B2. 下列哪个选项不属于编译器的前端部分?A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:D3. 在编译原理中,文法的产生式通常表示为:A. A -> αB. A -> βC. A -> γD. A -> δ答案:A4. 下列哪个算法用于构建语法分析树?A. LL(1)分析B. LR(1)分析C. SLR(1)分析D. LALR(1)分析答案:A二、填空题(每空5分,共20分)1. 编译器的前端通常包括词法分析、语法分析和________。
答案:语义分析2. 编译器的后端主要负责________和目标代码生成。
答案:代码优化3. 编译器中的词法分析器通常使用________算法来识别单词。
答案:有限自动机4. 语法分析中,________分析是一种自顶向下的分析方法。
答案:递归下降三、简答题(每题10分,共30分)1. 简述编译器的作用。
答案:编译器的主要作用是将高级语言编写的源代码转换成计算机能够理解的低级语言或机器代码,以便执行。
2. 解释一下什么是语法制导翻译。
答案:语法制导翻译是一种翻译技术,它利用源语言的语法信息来指导翻译过程,使得翻译过程能够更好地理解源代码的语义。
3. 什么是词法分析器?答案:词法分析器是编译器前端的一部分,它的任务是将源代码文本分解成一系列的标记(tokens),这些标记是源代码的最小有意义的单位。
四、计算题(每题10分,共30分)1. 给定一个简单的文法G(E):E → E + T | TT → T * F | FF → (E) | id请计算文法的非终结符号E的FIRST集和FOLLOW集。
答案:E的FIRST集为{(, id},FOLLOW集为{), +, $}。
2. 假设编译器在进行语法分析时,遇到一个语法错误的代码片段,请简述编译器如何处理这种情况。
编译原理试题及答案一、选择题1. 编译器的主要功能是什么?A. 将高级语言代码翻译成机器语言代码B. 进行程序调试C. 进行代码优化D. 管理程序运行时的内存分配答案:A2. 词法分析器的主要任务是什么?A. 将源代码分解成多个语句B. 将源代码分解成多个词素C. 检查源代码的语法正确性D. 将词素转换为相应的语法单位答案:B3. 下列哪个是自顶向下的语法分析方法?A. LL(1)分析法B. LR(1)分析法C. LALR(1)分析法D. GLR分析法答案:A4. 语义分析的主要任务是什么?A. 检查程序的语法正确性B. 检查程序的类型正确性C. 将源代码转换为目标代码D. 进行程序的优化答案:B5. 代码生成阶段的主要任务是什么?A. 将语法树转换为目标代码B. 进行程序的优化C. 检查程序的类型正确性D. 将源代码分解成多个词素答案:A二、简答题1. 简述编译过程的主要阶段。
答案:编译过程主要分为四个阶段:词法分析、语法分析、语义分析和代码生成。
词法分析将源代码分解成词素,语法分析检查源代码的语法结构,语义分析检查源代码的语义正确性,代码生成将源代码转换为目标代码。
2. 什么是中间代码?它在编译过程中起到什么作用?答案:中间代码是一种介于源代码和目标代码之间的代码形式,它通常具有更接近于机器语言的特性,但仍然保持一定的抽象级别。
中间代码在编译过程中起到桥梁的作用,它使得代码优化和目标代码生成更加方便和高效。
三、论述题1. 论述编译器优化的几种常见方法。
答案:编译器优化主要包括以下几种方法:常量折叠、死代码消除、公共子表达式消除、循环优化、代码内联、寄存器分配等。
这些优化方法可以提高程序的执行效率,减少资源消耗,提高程序的运行速度。
结束语:本试题涵盖了编译原理的基本知识点,包括编译器的功能、编译过程的主要阶段、中间代码的作用以及编译器优化的方法。
希望考生能够通过本试题加深对编译原理的理解和掌握。
编译原理试题及答案1. 选择题(每题4分,共40分)1) 当编译器在词法分析阶段遇到无法识别的字符时,应该采取的动作是:A. 直接忽略该字符并继续进行词法分析B. 输出错误信息并终止词法分析过程C. 将该字符标记为非法字符并继续词法分析D. 转交给语法分析器进行处理答案:B2) 下列关于语法分析器的描述中,错误的是:A. 语法分析器使用文法规则将输入的记号流转化为推导树B. 语法分析器可以通过自上而下或自下而上的方式进行解析C. LL(1)文法是一种常用于自上而下语法分析的文法形式D. 语法分析器的输入是词法分析器输出的记号流答案:A3) 以下关于语法制导翻译的说法,正确的是:A. 语法制导翻译是在语义分析阶段完成的B. 语法制导翻译通过产生式的属性传递进行信息的传递和计算C. 语法制导翻译只能用于自上而下的语法分析D. 语法制导翻译是在语法分析阶段完成的答案:B4) 在SLR分析算法中,项目集簇的构造过程中需要进行的操作是:A. 闭包操作和移进操作B. 移进操作和规约操作C. 闭包操作和规约操作D. 闭包操作、移进操作和规约操作答案:D5) 下列关于中间代码生成的叙述中,错误的是:A. 中间代码是一种类似于汇编代码的表示形式B. 中间代码可以直接被目标代码生成器所使用C. 中间代码的生成可以采用三地址码的形式D. 中间代码的生成在语法分析和语义分析之后进行答案:B2. 简答题(每题10分,共30分)1) 请简要描述编译器的主要工作流程。
答案:编译器的主要工作流程包括词法分析、语法分析、语义分析、中间代码生成、优化和目标代码生成等阶段。
在词法分析阶段,编译器将输入的源代码转化为一个个记号流。
接下来,在语法分析阶段,编译器使用文法规则对记号流进行分析,并生成语法树或推导树。
在语义分析阶段,编译器对语法树进行语义检查,并进行类型推导和符号表管理等操作。
中间代码生成阶段将经过语义分析的源代码转化为一种中间表示形式,通常是三地址码。
编译原理试题及答案一、单项选择题(每题2分,共20分)1. 编译器的主要功能是将()转换成目标代码。
A. 汇编语言B. 高级语言C. 机器语言D. 伪代码答案:B2. 语法分析阶段的任务是()。
A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:B3. 下列哪个算法是用于构建语法分析树的?()A. LL(1)分析B. LR(1)分析C. 语法制导翻译D. 语法制导翻译方案答案:A4. 在编译原理中,一个文法的产生式A→α表示()。
A. A可以被α替换B. A可以被α推导C. A可以被α翻译D. A可以被α解释答案:B5. 一个语言的语法分析树的根节点对应于()。
A. 程序B. 程序的输入C. 程序的输出D. 程序的语法答案:D6. 编译器的语义分析阶段主要处理()。
A. 词法分析B. 语法分析C. 类型检查D. 代码优化答案:C7. 编译器的代码优化阶段主要进行()。
A. 词法分析B. 语法分析C. 类型检查D. 指令选择答案:D8. 编译器的代码生成阶段主要进行()。
A. 词法分析B. 语法分析C. 类型检查D. 指令序列生成答案:D9. 编译器的哪个阶段负责处理变量的存储分配?()A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:D10. 编译器的哪个阶段负责处理宏展开?()A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:A二、多项选择题(每题3分,共15分)1. 编译器的前端包括()。
A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:ABC2. 编译器的后端包括()。
A. 词法分析B. 语法分析C. 代码优化D. 代码生成答案:CD3. 编译器的语义分析阶段可能包括()。
A. 类型检查B. 作用域解析C. 存储分配D. 代码优化答案:ABC4. 编译器的代码优化阶段可能包括()。
A. 常量折叠B. 死代码消除C. 循环不变代码外提D. 词法分析答案:ABC5. 编译器的代码生成阶段可能包括()。
《编译原理》考试试题及答案(附录)一、判断题: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.扫描器的任务是从()中识别出一个个()。
课程测试试题(04A卷)I、命题院(部):数学与计算机科学学院II、课程名称:编译原理III、测试学期:2006-2007 学年度第1 学期IV、测试对象:数计、国交学院计科专业2004 级1、2、国交班V、问卷页数(A4):3 页VI、答卷页数(A4):4 页VII、考试方式:闭卷(开卷、闭卷或课程小论文,请填写清楚)VIII、问卷内容:(请老师在出题时安排紧凑,填空题象征性的留出一点空格,学生将所有的答案做在答题纸上的规定位置,并写清楚大题、小题的题号)一、填空题(共30分,30个空,每空1分)1、典型高级程序设计语言编译系统的工作过程一般分为六个阶段,即词法分析、语法分析、语义分析、中间代码生成、、目标代码生成。
编译阶段的两种组合方式是组合法和按遍组合法,这两种组合方式的主要参考因素都是的特征。
2、Chomsky将文法按其所表示语言的表达能力,由高往低分为四类:0型,1型,2型,3型文法。
其中,2型文法也称,它的所有规则α→β 都满足:α∈,β∈ ((V N∪V T) *且,仅当β= ε时例外。
3、现代编译系统多采用方法,即在语法分析过程中根据各个规则所相联的或所对应的语义子程序进行翻译的办法。
该方法使用为工具来说明程序设计语言的语义。
4、构造与NFA M等价的正规文法G的方法如下:(1)对转换函数f(A,a)=B或f(A,ε)=B,改成形如或的产生式;(2)对可识别终态Z,增加一个产生式:。
5、代码生成要考虑的主要问题:充分利用的问题、选择的问题、选择的问题。
6、设有穷自动机M=(K,∑,f,S,Z),若当M为时,满足z0∈f(S,α)且z0∈Z,或当M为时,满足f(S,α)=P∈Z,则称符号串α∈∑*可被M所。
7、符号表中每一项对应一个多元组。
符号表项的组织可分为组织、组织、组织等。
8、对于A∈∀VN 定义A的后续符号集:FOLLOW(A)={a|S=*>uAβ,a∈VT,且a∈,u∈VT*,β∈V+;若,则#∈FOLLOW(A)。
也可以定义为:FOLLOW(A)={a|S=*>…Aa…,a∈VT}。
若有,则规定#∈FOLLOW(A)。
9、基本块的定义:一个基本块是指程序中一个执行的语句序列,其中只有一个入口和一个出口。
入口是程序第一个语句或转移语句的目标语句,或转移语句的后继第一个语句。
出口是程序或转移语句。
在基本块范围内的优化称为。
10、预测分析器由预测分析表、先进后出栈(用来存放分析过程的语法符号)和三部分组成。
其中预测分析表是一个二维矩阵,其形式为M[A,a],其中A∈V N,a∈V T或#。
若有产生式A→α,使得a∈,则将A→α填入M[A,a]中。
(书写时,通常省略规则左部,只填→α)。
对所有的M[A,a]标记为出错。
二、简述题(共20分,4个小题,每小题5分)1、简述将NFA转换为最小化DFA的步骤。
2、简述静态存储分配、栈式存储分配和堆式存储分配的特点和主要用途。
3、以表达式 a:=b*(-c)+b/(-d)为例,简述常用的三种中间代码表示形式。
4、简述判别文法G是否为LL(1)文法的步骤和将一个非LL(1)文法转换为LL(1)文法的方法。
三、应用题(共50分)1、有文法G[S]:(12分)S→aAS|a A→SbA|SS|ba(1)证明aabbaa是文法的一个句子。
(3分)(2)构造句子aabbaa的语法树。
(3分)(3)指出该句子的所有短语、直接短语和句柄。
(6分)2、对文法G[E']:(15分)E'→#E# E→E+T|T T→T*F|F F→P^F|P P→(E)|i(1)计算G[E']的FIRSTVT和LASTVT。
(5分)(2)构造G[E']的算符优先关系表,并说明G[E']是否为算符优先文法。
(5分)(3)给出输入串w=i+i# 的算符优先分析过程。
(5分)3、对以下基本块:(8分)A:=5 B:=R+r T0:=A+B T1:=2*AT2:=B+A T3:=A+A X1:=T1+T2 X2:=T0*T3(1)画出基本块的DAG图。
(3分)(2)根据DAG结点原来的构造顺序重写四元式。
(2分)(3)假设基本块出口后只有X1,X2还被引用,试写出优化后的四元式序列。
(3分)4、对文法G[S’]: (15分)0)S’→S 1)S →A 2)S →B 3)A →aAe4)A →a 5)B →bBd 6)B →b(1)试构造G[S’]的LR(0)项目集规范族DFA。
(4分)(2)试构造G[S’]的SLR(1)分析表,并判断它是否为SLR(1)文法。
(4分)(3)试用SLR(1)方法分析输入串aae#。
(4分)(4)G[S’]是否为LR(0)、LR(1)和LALR(1)文法?为什么?(3分)课程测试试题(04B卷)I、命题院(部):数学与计算机科学学院II、课程名称:编译原理III、测试学期:2006-2007 学年度第1 学期IV、测试对象:数计、国交学院计科专业2004 级1、2、国交班V、问卷页数(A4):3 页VI、答卷页数(A4):4 页VII、考试方式:闭卷(开卷、闭卷或课程小论文,请填写清楚)VIII、问卷内容:(请老师在出题时安排紧凑,填空题象征性的留出一点空格,学生将所有的答案做在答题纸上的规定位置,并写清楚大题、小题的题号)一、填空题(共30分,30个空,每空1分)1、典型编译过程一般分为词法分析、语法分析、语义分析、(并非所有的编译程序都包含此阶段)、代码优化、目标代码生成六个阶段,其中词法分析的任务是对构成源程序的字符串进行扫描和分解,识别出(如标识符等)符号;为代码生成阶段收集类型信息,并进行类型审查和违背语言规范的报错处理是的任务。
2、文法是一些规则的有穷集合,它是以有穷规则集来刻划无穷集合的工具。
文法的四元组表示G =(V N,V T,P,S)中,元素V N,V T 分别是非空有限的。
且二者交集为φ;P为产生式/规则集,是文法的核心部分;S ∈ V N,是文法的开始符号(或识别符) ,它是一个非终结符,至少要在一条规则中作为出现。
3、构造LR(0)项目集规范族的项目类型分为四种:形如A→α.aβ的、形如的待约项目、形如A→αBβ.的归约项目、形如S'→α.的。
4、一个优先关系矩阵对应的优先函数;所表示优先关系唯一的矩阵不一定存在优先函数;当两个终结符对之间无优先关系时,可以将相应元素置出错信息,而使用却无法识别这种情况,不能准确指出出错位置。
5、在编译程序中用符号表来存放语言中出现的有关的语义特征属性信息。
程序设计语言中通用的标识符属性主要有如下几种:符号名、符号的、符号的存储类别、符号的、符号变量的存储分配信息及数组的内情向量等其它属性。
6、如果文法G=(V N,V T,P,S)中不存在形如A→…BC…的产生式,其中B、C 为非终结符,则称之为。
在此基础上,如果 a,b∈VT, a≡b,a≮b,a≯b 至有一个成立,则称之为。
7、分为三类:的机器语言代码;的机器语言代码;汇编语言(宏汇编)。
8、在程序流中,一个循环必须具有以下性质:1),即序列中任意两点都可达,若只有一个结点,则有一条返回本身的回边;2),即从序列外某结点,有一条有向边指向它,或它为图中首结点。
9、LR分析步骤:1)置输入指针ip指向输入串的第一个符号;令S是栈顶状态,a 是ip 所指向的符号;将#压入符号栈,将开始状态0压入状态栈;2)根据分析表重复执行如下过程:如果action[S,a]=S j,则把入符号栈,把入状态栈,并使ip 指向下一个输入符号;如果action[S,a]=r j,则从栈顶弹出第j条规则右部串长|β|个符号,把压入符号栈,将压入状态栈,并输出规则A→β;如果action[S,a]=acc,则分析成功,否则报错。
10、过程(函数)是结构化程序设计的主要手段。
调用与被调用过程两者之间的信息主要通过或参数来传递。
参数分为,常用的参数传递方式有传地址、传值、传名等。
二、简述题(共20分,4个小题,每小题5分)1、简述运行目标程序时所需空间的种类。
2、简述算符优先分析算法的步骤和算符优先分析方法的优、缺点。
3、简述代码优化的概念和分类,并列举出四种以上常用的代码优化技术。
4、简述判别任意给定的一个上下文无关文法G[S]是否为LALR(1)文法的过程。
三、应用题(共50分)1、有文法G[E]:(16分)E → T + E|T T → T * F|F F → ( E )|i(1)证明T+T*F+i是文法的一个句型。
(3分)(2)构造型T+T*F+i的语法树。
(3分)(3)指出该句型的所有短语、直接短语和句柄。
(7分)(4)指出该句型的所有素短语和最左素短语。
(3分)2、将下列条件语句翻译成四元式的中间代码形式:(6分)if a<b or c<d and e>f then s1 else s23、有正规文法G[S]:(12分)S→aA|bB A→bS|b B→aS|a(1)构造对应的正规式R,使得L(R)=L(G)。
(3分)(2)构造对应的NFA状态图,使得L(M)=L(R)。
(3分)(3)将所得NFA确定化为DFA。
(3分)(4)将所得DFA最小化。
(3分)4、对表达式文法G[E]:(16分)E → E - T|T T → T ^ F|F F → ( E )|a(1)判断G[E]是否为LL(1)文法。
若不是,改造为LL(1)文法。
(8分)(2)构造预测分析表,并对输入串w=a-a^a#进行预测分析。
(8分)课程测试试题(03A 卷)----------------------以下为教师填写--------------------I 、命题院(部): 数学与计算机科学学院II 、课程名称: 编 译 原 理III 、测试学期:2005-2006学年度第1学期IV 、测试对象: 数计 学院 计算机科学技术 专业 2003 级 1、2、3 班 V 、问卷页数(A4): 4 页VI 、答卷页数(A4): 6 页VII 、考试方式: 闭卷 (开卷、闭卷或课程小论文,请填写清楚)VIII 、问卷内容:(请老师在出题时安排紧凑,填空题象征性的留出一点空格,学生将所有的答案做在答题纸上的规定位置,并写清楚大题、小题的题号)一、填空 (30分)1、将编译过程的各阶段划分为前端或后端和将编译程序分遍的主要参考因素都是( )和( )的特征。
2、( )是一种语法分析程序的自动构造工具,用它可以直接构造各种语言的语法分析器;而( )是一种词法分析程序的自动构造工具,用它可以直接构造各种语言的词法分析器。
3、假设G[S]是一个文法,如有S *x,则称x 是该文法G 的( );文法G 产生的( )的全体称为该文法所描述的语言。