编译原理与技术模拟试题一期终测验(120分钟)

合集下载

编译原理期末考试试卷A卷

编译原理期末考试试卷A卷

试卷答题时限:120 分钟考试形式:闭卷笔试一、单项选择题(请从4个备选答案中选择最适合的一项,每小题2分,共20注意:须将本题答案写在下面的表格中,写在其它地方无效1. 编译程序是对()A. 汇编程序的翻译B。

高级语言程序的解释执行C. 机器语言的执行D. 高级语言的翻译2。

词法分析器的输出结果是()A.单词的种别编码B.单词在符号表中的位置C.单词的种别编码和自身值D.单词自身值3.在规范规约中,用()来刻画可规约串.A.直接短语B.句柄C.最左素短语D.素短语4。

与正规式(a* |b)*(c |d)等价的正规式是()A.a*(c |d)|b(c |d) B.a*(c |d) * | b(c |d)*C.a*(c | d)| b*(c |d) D.(a | b) * c|(a |b)*d5. 若项目集I K含有A→α·,则在状态K时,仅当面临输入符号a∈FOLLOW(A)时,才采取A→α·动作的一定是()A.LALR文法B.LR(0) 文法C.LR(1)文法D.SLR(1)文法6。

四元式之间的联系是通过()实现的。

A. 指示器B。

临时变量C。

符号表D. 程序变量7.文法G:S → x Sx|y所识别的语言是()A.xyx B.(xyx)*C.x n yx n(n≥0)D.x*yx*8.有一语法制导翻译如下所示:S → b Ab {print “1”}A→(B {print “2”}A→a {print “3"}B→Aa) {print “4”}若输入序列为b(((aa)a)a)b,且采用自下而上的分析方法,则输出序列为()A.32224441 B. 34242421 C.12424243 D。

344422129.关于必经结点的二元关系,下列叙述不正确的是( )A.满足自反性B.满足传递性C.满足反对称型D.满足对称性10.错误的局部化是指()。

A.把错误理解成局部的错误B.对错误在局部范围内进行纠正C.当发现错误时,跳过错误所在的语法单位继续分析下去D.当发现错误时立即停止编译,待用户改正错误后再继续编译1分,共5分)1.文法G的一个句子对应于多个推导,则G是二义性的。

2020-2021《编译原理》期末课程考试试卷(含答案)

2020-2021《编译原理》期末课程考试试卷(含答案)

2020-2021《编译原理》课程考试试卷适用专业:考试日期:闭卷所需时间:120分钟总分:100分一、选择题(每选项2分,共10分)1 .文法 G 产生的(1)的全体是该文法描述的语言。

A .句型 B. 终结符集 C. 非终结符集 D. 句子2.在下述的编译方法中,自底向上的方法有(2),自顶向下的分析方法有(3)。

①简单优先分析②算符优先分析③递归下降分析④预测分析技术⑤LR(K)分析⑥ SLR(k)分析⑦ LL(k)分析⑧LALR(K)分析A.③④⑦B. ③④⑧C.①②⑧D.③④⑤⑥⑦E.①②⑤⑥⑦F. ①②⑤⑥⑧3.简单优先分析每次归约的是(4)A. 最左直接短语B.直接短语C.最左素短语D.控制结点4.一个文法所描述的语言是(5)A.唯一的B.不唯一的C.可能唯一,可能不唯一二、判断题,正确画√,错误画×(每小题2分,共10分)(1)算符优先分析是规范规约()(2)句型的可归约前缀包含该句型的句柄。

()(3)每个文法都能改写为LL(1)文法()(4)逆波兰法表示的表达式亦称前缀式()(5)正规文法产生的语言都可以用上下文无关文法来描述()三、问答题(每小题10分,共80分)(1)什么是S-属性文法?什么是L-属性文法?它们之间有什么关系?(2)什么是句柄?什么是最左素短语?(3)对于文法G(E):E→T|E+TT→F|T*FF→(E)|i1).证明(T*F+i) 是文法G(E)的一个句型。

2). 写出上述句型的短语,直接短语、句柄和素短语。

(4)给出生成下列语言的CFG:{1n0m1m0n|m,n>=0}(5)构造正规式(0|1)*00 相应的DFA。

(6)计算文法G(M)的每个非终结符的FIRST和FOLLOW集合,并判断该文法是否是LL(1)的,请说明理由。

G(M):M → TBT → Ba | εB → Db | eT | εD → d | ε(7)设已构造出文法G(S):(1)S → BB(2)B → aB(3)B→ b的LR分析表如下假定输入串为abab#,请给出LR分析过程(即按照步骤给出状态,符号,输入串的变化过程)。

编译原理试卷A参考答案

编译原理试卷A参考答案

《编译原理》试卷A 参考答案注意事项:1. 请考生按要求在试卷装订线内填写姓名、学号和年级专业。

2. 请仔细阅读各种题目的回答要求,在规定的位置填写答案。

3. 不要在试卷上乱写乱画,不要在装订线内填写无关的内容。

4. 满分100分,考试时间为120分钟。

题号一二三四总分统分人得分一、单项选择题(每小题2分共20分)1.中间代码生成所依据的是语言的(C )。

A: 词法规则B: 语法规则C: 语义规则D: 产生式规则2.词法分析器的加工对象是(C )。

A: 中间代码B: 单词C: 源程序D: 元程序3.同正则表达式a*b*等价的文法是(C )。

A: G1: S aS|bS|εB: G2: S aSb|εC: G3: S aS|Sb|εD: G4: S abS|ε4.文法G[A]:A→b A→bH H H →BA B→Ab H →a 不是(B ):A: 2型文法B: 正规文法C: 0型文法D: 1型文法5.算符优先分析每次都是对(算符优先分析每次都是对( B B B )进行规约。

)进行规约。

A: A: 短语短语短语 B: B: B: 最左素短语最左素短语最左素短语 C: C: C: 素短语素短语素短语 D: D: D: 句柄句柄6.一个LR (1)文法合并同心集后,如果不是LALR(1)文法必定存在(B ):A: 移进-归约冲突B: 归约-归约冲突C: 识别句型D: 收集类型信息7.下列不属于类型检查范畴的描述是(C )。

A: 运算符的分量类型的相容性B: 形参和实参类型的相容性C :形参和实参的个数的一致性D: 赋值语句的左右部类型的相容性8.( B B )不是)不是DFA 的成分。

A:A:有穷字母表有穷字母表有穷字母表 B: B: B:初始状态集合初始状态集合C:C:终止状态集合终止状态集合终止状态集合 D: D: D:有限状态集合有限状态集合9.若B 为非终结符,则A α.B β为(为( B B B )项目。

编译原理与技术模拟试题一期终测验(120分钟)

编译原理与技术模拟试题一期终测验(120分钟)

编译原理与技术模拟试题一一、填空题(20分)1.1编译程序的工作过程可划分为词法分析、语法分析、、中间代码生成、代码优化、等阶段,一般在阶段对表达式中运算对象的类型进行检查。

1.2 和预测分析法是自上而下的语法分析方法。

1.3常用的存储分配策略有存储分配和动态存储分配,其中,动态存储分配策略包括分配和分配。

1.4移进、归约是分析中的典型操作。

1.5对于数组M[1..6, 1..8],如果每个元素占k个存储单元,且起始地址为a,则以行为主序存放时元素M[4,4]的地址是_________________,以列为主序存放时元素M[4,4]的地址是_________________。

二、单选题(20分)2.1词法分析器不能。

A. 识别出数值常量B. 过滤源程序中的注释C. 扫描源程序并识别记号D. 发现括号不匹配2.2给定文法A→bA|ca,是该文法的句子。

A. bbaB. cabC. bcaD. cba2.3一个句型中的最左称为该句型的句柄。

A. 短语B. 直接短语C. 非终结符号D. 终结符号2.4已知文法G[S]:S→A1A→A1|S0|0。

与G等价的正规式是。

A. 0(0|1)*B. 1*|0*1C. 0(1|10)*1D. 1(10|01)*02.5源程序是句子的集合,可以较好地反映句子的结构。

A. 线性表B. 树C. 完全图D. 堆栈2.6与逆波兰式ab+c*d+对应的中缀表达式是。

A. a+b+c*dB. (a+b)* c+dC. (a+b)* (c+d)D. a+b*c+d2.7识别上下文无关语言的自动机是。

A. 下推自动机B. NFAC. DFAD. 图灵机2.8是与规范归约(最左归约)互逆的一个过程。

A. 最左推导B. 最右推导C. 词法分析D. 语义分析2.9文法G产生的的全体是该文法描述的语言,A. 句子B. 短语C. 终结符D. 非终结符2.10在表达式x:=y+1中,作为左值出现(其中,“:=”表示赋值)。

编译原理与技术考试试题

编译原理与技术考试试题

编译原理与技术考试试题一、选择题1. 编译器的作用是什么?A. 编写代码B. 执行代码C. 将源代码翻译成目标代码D. 调试程序2. 在编译过程中,源代码经过以下哪个阶段?A. 词法分析B. 语法分析C. 语义分析D. 代码生成3. 以下哪种语言常用于编译器的实现?A. C++B. JavaC. PythonD. HTML4. 语法分析树可以用于生成什么形式的中间代码?A. 逆波兰表达式B. 三地址码C. 汇编代码D. 机器码5. 以下哪个不属于编译器的前端任务?A. 词法分析B. 语法分析C. 语义分析D. 代码生成二、填空题1. 编译器将源代码转换为目标代码的过程称为__________。

2. 词法分析的输出是__________。

3. 以下哪个不属于编译器的优化技术?A. 死代码消除B. 静态单赋值化C. 指针分析D. 内存泄漏检测4. 在目标代码生成阶段,生成的代码是针对__________而言的。

5. 编译器常用的符号表数据结构包括哈希表和__________。

三、简答题1. 简要描述编译器的工作原理。

2. 解释词法分析和语法分析的作用。

3. 什么是语义分析?它的作用是什么?4. 请解释编译器的优化过程。

5. 简要描述目标代码生成的过程。

四、解答题1. 请使用自上而下的递归下降分析方法,根据以下文法,给出对字符串 "a+a*a" 的句法分析过程。

文法:E -> E + T | TT -> T * F | FF -> (E) | id2. 简要描述编译器的后端任务包括哪些内容。

3. 请解释符号表在编译过程中的作用。

并举例说明符号表的一种使用情况。

注意:以上试题仅为示例,不代表实际编译原理与技术考试试题。

根据实际题目要求,编写试题内容,并逐一回答所提问题。

您可以根据实际情况调整试题数量和内容。

编译原理考试题

编译原理考试题

编译原理考试题一、选择题。

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.将目标代码转换成中间代码。

二、填空题。

1. 词法分析的输出是()。

2. 语法分析的输出是()。

3. 语义分析的输出是()。

4. 目标代码生成的输入是()。

5. 目标代码生成的输出是()。

三、简答题。

1. 请简要说明编译过程中词法分析的作用和实现方法。

2. 请简要说明编译过程中语法分析的作用和常用的语法分析方法。

3. 请简要说明编译过程中语义分析的作用和常见的语义分析任务。

4. 请简要说明编译过程中目标代码生成的作用和常用的目标代码生成方法。

5. 请简要说明编译过程中优化的作用和常见的优化方法。

四、分析题。

1. 请分析词法分析器的设计和实现方法,并给出一个具体的例子。

2. 请分析语法分析器的设计和实现方法,并给出一个具体的例子。

3. 请分析语义分析器的设计和实现方法,并给出一个具体的例子。

4. 请分析目标代码生成器的设计和实现方法,并给出一个具体的例子。

5. 请分析编译器优化的方法和实现过程,并给出一个具体的例子。

五、综合题。

1. 请设计一个简单的编译器,包括词法分析器、语法分析器、语义分析器和目标代码生成器,并给出相应的实现代码。

2. 请分析该编译器的设计思路和实现方法,并说明其优缺点。

编译原理与技术1

编译原理与技术1

编译原理与技术模拟试题一一、填空题(20分,每空2分)1.1编译程序的工作过程可划分为词法分析、语法分析、、中间代码生成、代码优化、等阶段,一般在阶段对表达式中运算对象的类型进行检查。

答案:语义分析、目标代码生成、语义分析解释:要求掌握编译器的工作原理和特点。

编译和解释方式是翻译高级程序设计语言的两种基本方式。

解释程序也称为解释器,它或者直接解释执行源程序,或者将源程序翻译成某种中间表示形式后再加以执行;而编译程序(编译器)则首先将源程序翻译成目标语言程序,然后在计算机上运行目标程序。

编译过程包含词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成,以及符号表管理和出错处理。

表达式的类型信息属于语义信息,所以在语义分析阶段进行类型检查。

1.2 和预测分析法是自上而下的语法分析方法。

答案:递归下降法解释:语法分析的任务是根据语言的语法规则,分析单词串是否构成短语和句子,即表达式、语句和程序等基本语言结构,同时检查和处理程序中的语法错误。

根据语法树(或分析树)的建立方式,语法分析可分为自上而下分析和自下而上分析两类,递归下降分析和预测分析属于自上而下的语法分析方法。

1.3常用的存储分配策略有存储分配和动态存储分配,其中,动态存储分配策略包括分配和分配。

答案:静态、栈、堆解释:编译器怎样对存储空间进行组织和采用什么样的存储分配策略,很大程度上取决于程序设计语言中所采用的机制。

编译器具体实现时,根据语言机制的特性,采用静态分配策略、栈分配策略和堆分配策略三种方式的其中若干种。

静态分配策略是指编译时安排所有数据对象的存储,即绑定是静态确定的;栈分配策略是指按栈的方式管理运行时的存储;堆分配策略是指在运行时根据要求从堆数据区动态地分配和释放存储。

1.4移进、归约是分析中的典型操作。

答案:自下而上或LR解释:自下而上分析的一般思路是从句子ω开始,从左到右扫描ω,反复用产生式的左部替换产生式的右部、谋求对ω的匹配,最终得到文法的开始符号,或者发现一个错误。

完整word版编译原理考试试题及答案

完整word版编译原理考试试题及答案

完整word版编译原理考试试题及答案《编译原理》考试试题及答案(附录)一、判断题: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.扫描器的任务是从()中识别出一个个()。

编译原理考试试卷

编译原理考试试卷

编译原理考试试卷一、选择题(每题2分,共20分)1. 下列哪个选项不是编译器的主要功能?A. 词法分析B. 语法分析C. 语义分析D. 运行程序2. 编译过程中,词法分析器的作用是:A. 将源代码转换为中间代码B. 将源代码分解为一系列的标记C. 检查源代码的语法正确性D. 优化生成的目标代码3. 在编译原理中,自底向上的语法分析方法通常指的是:A. LL(1)分析B. LR(1)分析C. SLR(1)分析D. LALR(1)分析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分,共10分)1. 编译器在进行语法分析时,通常使用________文法来描述程序设计语言的语法规则。

2. 编译器的________阶段负责将源代码中的标识符替换为内存地址。

3. 在编译原理中,________文法可以用来描述正则表达式。

4. 编译器在进行语义分析时,需要检查变量的________和________。

编译原理考试试题

编译原理考试试题

编译原理考试试题
1. 简答题
(1)什么是编译原理?
(2)解释词法分析和语法分析的区别。

(3)描述语法制导翻译的过程。

(4)什么是上下文无关文法?
(5)解释LL和LR分析器之间的差异。

2. 分析题
对于以下文法G:
S → aB | bA
A → a | ε
B → b
进行如下操作:
(1)用LL(1)分析器分析串“ab”。

(2)用LR(1)分析器分析串“ba”。

3. 论述题
请分析编译器的工作原理并解释编译器的主要功能。

同时比较解释型语言和编译型语言之间的区别。

4. 计算题
对于文法G:
E → E + T | T
T → T * F | F
F → (E) | id
请根据该文法构建一个SLR(1)分析表并分析串“id + id * id”。

5. 应用题
假设您需要编写一个简单的编译器来编译一种自定义的编程语言。

请设计该编程语言的词法规则和语法规则,并解释如何构建一个简单的编译器来将该语言转换为目标代码。

以上为编译原理考试试题,希望能够帮助您对编译原理的相关知识有更全面的了解。

祝您考试顺利!。

编译原理试题及答案

编译原理试题及答案

《编译原理》模拟题一.单选题1.()是两类程序语言处理程序.A.高级语言程序和低级语言程序B.解释程序和编译程序C.编译程序和操作系统D.系统程序和应用程序[答案]:B2.解释程序处理语言时,大多数采用的是()方法.A.源程序命令被逐个直接解释执行B.先将源程序转化为中间代码,再解释执行C.先将源程序解释转化为目标程序,再执行D.以上方法都可以[答案]:A3.()是一种典型的解释型语言.A.BASICB.CC.FORTRAND.PASCAL[答案]:A4.与编译系统相比,解释系统().A.比较简单,可移植性好,执行速度快B.比较复杂,可移植性好,执行速度快C.比较简单,可移植性差,执行速度慢D.比较简单,可移植性好,执行速度慢[答案]:D5.编译程序是一种().A.汇编程序B.翻译程序C.解释程序D.目标程序[答案]:B6.编译程序是对().A.汇编程序的翻译B.高级语言程序的解释执行C.机器语言的执行D.高级语言的翻译[答案]:D7.用高级语言编写的程序经编译后产生的程序叫().A.源程序B.目标程序C.连接程序D.解释程序[答案]:B8.将编译程序分成若干个“遍”是为了().A.提高程序的执行效率B.使程序的结构更加清晰C.利用有限的机器内存并提高机器的执行效率D.利用有限的机器内存但降低了机器的执行效率[答案]:B9.构造编译程序应掌握().A.源程序B.目标语言C.编译方法D.以上三项都是[答案]:D10.通常一个编译程序中,不仅包含词法分析,语法分析,中间代码生成,代码优化,目标代码生成等五个部分,还应包括().A.模拟执行器B.解释器C.表格处理和出错处理D.符号执行器[答案]:C11.编译程序绝大多数时间花在()上.A.出错处理B.词法分析C.目标代码生成D.管理表格[答案]:D12.程序的基本块是指().A.一个子程序B.一个仅有一个入口和一个出口的语句C.一个没有嵌套的程序段D.一组顺序执行的程序段,仅有一个入口和一个出口[答案]:D13.变量应当().B.持有右值C.既持有左值又持有右值D.既不持有左值也不持有右值[答案]:C14.数组的内情向量中肯定不含有数组的()的信息.A.维数B.类型C.维上下界D.各维的界差[答案]:A15.一个上下文无关文法G包括四个组成部分:一组终结符,一组非终结符,一个开始符号,以及一组().A.字符串B.产生式C.非开始符号D.文法[答案]:B16.一个文法所描述的语言是().A.唯一的B.不唯一的C.可能唯一,也可能不唯一D.都不对[答案]:A17.文法G产生的()的全体是该文法描述的语言.A.句型B.终结符集C.非终结符集D.句子[答案]:D18.若文法G定义的语言是无限集,则文法必然是().A.递归的B.前后文无关的C.二义性的D.无二义性的[答案]:A19.文法分为四种类型,即0型,1型,2型,3型.其中2型文法是().A.短语文法C.上下文有关文法D.上下文无关文法[答案]:C20.四种形式语言文法中,1型文法又称为()文法.A.短语文法B.正则文法C.上下文有关文法D.上下文无关文法[答案]:D21.正规式M1和M2等价是指().A.M1和M2的状态数相等B.Ml和M2的有向弧条数相等C.M1和M2所识别的语言集相等D.Ml和M2状态数和有向弧条数相等[答案]:C22.词法分析器的输出结果是().A.单词的种别编码B.单词在符号表中的位置C.单词的种别编码和自身值D.单词自身值[答案]:C23.词法分析器用于识别().A.字符串B.语句C.单词D.标识符[答案]:C24.扫描器所完成的任务是从字符串形式的源程序中识别出一个个具有独立含义的最小语法单位即().A.字符B.单词C.句子D.句型[答案]:B25.一个句型中称为句柄的是该句型的最左().A.非终结符号B.短语D.直接短语[答案]:D26.下推自动机识别的语言是().A.0型语言B.1型语言C.2型语言D.3型语言[答案]:C27.如果文法G是无二义的,则它的任何句子α().A.最左推导和最右推导对应的语法树必定相同B.最左推导和最右推导对应的语法树可能不同C.最左推导和最右推导必定相同D.可能存在两个不同的最左推导,但它们对应的语法树相同[答案]:A28.采用自上而下分析,必须().A.消除左递归B.消除右递归C.消除回溯D.提取公共左因子[答案]:C29.在规范归约中,用()来刻画可归约串.A.直接短语B.句柄C.最左素短语D.素短语[答案]:B30.若a为终结符,则A->α·aβ为()项目.A.归约B.移进C.接受D.待约[答案]:B31.高级语言编译程序常用的语法分析方法中,递归下降分析法属于()分析方法.A.自左向右B.自顶向下C.自底向上D.自右向左32.在通常的语法分析方法中,()特别适用于表达式的分析.A.算符优先分析法B.LR分析法C.递归下降分析法D.LL(1)分析法[答案]:A33.语法分析器则可以发现源程序中的().A.语义错误B.语法和语义错误C.错误并校正D.语法错误[答案]:D34.后缀式ab+cd+/可用表达式()来表示.A.a+b/c+dB.(a+b)/(c+d)C.a+b/(c+d)D.a+b+c/d[答案]:B35.中间代码生成时所依据的是().A.语法规则B.词法规则C.语义规则D.等价变换规则[答案]:C36.()和代码优化部分不是每个编译程序都必需的.A.语法分析B.中间代码生成C.词法分析D.目标代码生成[答案]:B37.常用的中间代码形式不含().A.三元式B.四元式C.逆波兰式D.语法树[答案]:D38.代码优化的目的是().A.节省时间B.节省空间C.节省时间和空间把编译程序进行等价交换[答案]:C39.优化可生成()的目标代码.A.运行时间较短B.占用存储空间较小C.运行时间短但占用内存空间大D.运行时间短且占用存储空间小[答案]:D40.下列()优化方法不是针对循环优化进行的.A.强度削弱B.删除归纳变量C.删除多余运算D.代码外提[答案]:C41.基本块内的优化为().A.代码外提,删除归纳变量B.删除多余运算,删除无用赋值C.强度削弱,代码外提D.循环展开,循环合并[答案]:B42.代码生成阶段的主要任务是().A.把高级语言翻译成汇编语言B.把高级语言翻译成机器语言C.把中间代码变换成依赖具体机器的目标代码D.把汇编语言翻译成机器语言[答案]:C43.在目标代码生成阶段,符号表用于().A.目标代码生成B.语义检查C.语法检查D.地址分配[答案]:D44.程序所需的数据空间在程序运行前就可确定,称为()管理技术.A.动态存储B.栈式存储C.静态存储D.堆式存储[答案]:C45.堆式动态分配申请和释放存储空间遵守()原则.A.先请先放B.先请后放C.后请先放D.任意[答案]:D46.编译程序使用()区别标识符的作用域.A.说明标识符的过程或函数名B.说明标识符的过程或函数的静态层次C.说明标识符的过程或函数的动态层次D.标识符的行号[答案]:B47.生成能被5整除的正整数的文法G[Z]是().A.G(Z):Z→AC,A→BA|B,B→0|1|2|…|9,C→0|5B.G(Z):Z→AC,A→BA|ε,B→0|1|2|…|9,C→0|5C.G(Z):Z→AC|5,A→BA|B,B→0|1|2|…|9,C→0|5D.G(Z):Z→AC|C,A→BA|B,B→0|1|2|…|9,C→0|5[答案]:C48.符号串ab1b2是给定文法G[A]:A→aB,B→bB|b的句子,该句子的句柄是().A.b1B.b2C.cD..b1b2[答案]:B49.一般程序设计语言的定义都涉及()三个方面.①语法②语义③语用④程序基本符号的确定A.①,②和③B.①,②和④C.①,③和④D.②,③和④[答案]:B50.下述语句类中,()在编译阶段通常不产生可执行代码.A.赋值语句B.流程控制语句C.说明语句D.输入输出语句[答案]:C51.算符文法是指()的文法.①没有形如U→...VW...的规则(U,V,W错误!未找到引用源。

《编译原理》期末考试题库含答案.docx

《编译原理》期末考试题库含答案.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. _________________________________________ 解释程序处理语言时,大多数采用的是 ___________________________________ 方法。

华南农业大学编译原理题库

华南农业大学编译原理题库

华南农业大学期末考试题库(含参考答案)考试科目: 编译原理 考试时间: 120 分钟学号 姓名 年级专业 题号 一 二 三 四 五 总分 得分评阅人 一、本题共6小题,每小题5分,共30分。

1、写出下面右线性正规文法所对应的正规式。

2、给出下面语言集合的上下文无关文法。

(2010 2014)L 1={ a n b m2、为正规集L 2={a n b m c k | n ≥1,m ≥1,k ≥1}构造一右线性正规文法。

(2010)3、按照编译过程的5个阶段得到编译程序的逻辑结构框图如下:得分S → aDD → bD | aA | b A → aD文法所对应的正规式为: a(b|aa)*b文法: S → aS | DD → aDb | abS → aS | aA A → bA | bB B → cB | c4、简述编译过程的5个阶段及各阶段的主要功能。

(多年必考)编译过程即编译程序的工作过程,是指从输入源程序开始到输出目标程序为止的整个过程,是非常复杂的,就其过程而言,一般可以划分为五个工作阶段:①词法分析,对构成源程序的字符串进行扫描和分解,识别出一个个的单词;②语法分析,根据语言的语法规则,把单词符号串组合成各类语法单位;③语义分析与中间代码产生,即对各类语法单位,分析其含义并进行初步翻译;④代码优化,对代码进行等价变换,以期产生更高效的代码;⑤目标代码生成,把中间代码变换成特定机器上的低级语言指令形式。

这句话是错的。

优化不是编译程序必须的一个部分,含有优化的编译程序功能更强、算法更复杂,因而开发效率和执行效率低些,但得到的目标代码的效率通常更高。

6、简述语法制导翻译技术的基本思想。

(2013)语法制导翻译技术的基本思想是,对文法中的每个产生式都附加一个语义动作或语义子程序,在执行语法分析的过程中,当运用该产生式进行推导或归约时,就执行相应的语义动作,从而完成预定的翻译工作。

7、简述算符优先分析方法。

编译原理模拟试卷及答案集

编译原理模拟试卷及答案集

1.由文法开始符号经0步或多步推导产生的文法符号序列是__句型__。

2.编译器通常经历___词法分析______、____语法分析_______、__语义分析和中间代码生成___、____优化___、__目标代码生成___等几个阶段;其中第一个阶段是以__源程序__为输入,_单词符号_为输出;最后一阶段是以_中间代码_为输入,_机器语言程序或汇编语言程序__为输出。

同时_表格管理_和_出错处理_贯穿编译器的各个阶段。

3.解释器与编译器的主要区别是:____编译程序生成目标代码,而解释程序不生成目标代码____。

4.高级语言到低级语言的翻译过程称为__编译__。

汇编语言到机器语言的翻译过程称为__汇编__。

二、单项选择题(20分,每小题2分)1.正规表达式(ε|a|b)2表示的集合是( D )。

A.{ε,ab,ba,aa,bb} B.{ab,ba,aa,bb}C.{a,b,ab,aa,ba,bb} D.{ε,a,b,aa,bb,ab,ba}2.分析树的内部结点仅由( C )组成。

A.开始符号和非终结符号B.终结符号和非终结符号C.非终结符号 D.终结符号3.文法S→(L)|aL→L,S|S 的终结符号是(C)。

A.S B.S L C. a , ( ) D.a , ( ) |4.NFA M所识别的语言是( D )。

A.0型语言 B.上下文有关语言C.上下文无关语言 D.正规语言5.同正规式a*b*等价的文法是( C )。

A.S→aS|bS|ε B. S→aSb|εC.S→aS|Sb|εD.S→abS|ε6.对LR分析表的构造,不可能存在( C )动作冲突。

A.移进/归约B.归约/归约 C.移进/移进 D.以上都不对7.LR分析模式中,改变格局变化的动作不包括( B )。

A.移进B.匹配终结符C.归约D.接受8.如果一个文法G是二义文法,则必存在某个句子X∈L(G),该句子()。

A.存在两个不同的最右推导和一个最左推导B.存在两个不同的最左推导和一个最右推导C.最左推导和最右推导不同D.存在两个不同的最左推导和两个不同的最右推导9.一个句型的最左直接短语称为( D )。

编译原理考试题及答案

编译原理考试题及答案

编译原理考试题及答案一、选择题(每题2分,共10分)1. 在编译原理中,词法分析的主要任务是什么?A. 将源程序代码转换为中间代码B. 识别源程序中的词法单位并生成词法单元C. 检查源程序的语法正确性D. 优化生成的代码答案:B2. 下列哪个不是编译器的组成部分?A. 词法分析器B. 语法分析器C. 代码生成器D. 运行时库答案:D3. 在编译过程中,语义分析的主要作用是什么?A. 识别词法错误B. 检查语法错误C. 检查类型错误D. 生成目标代码答案:C4. 编译器中的中间代码表示通常采用哪种形式?A. 三地址代码B. 后缀表达式C. 抽象语法树D. 逆波兰表示答案:A5. 编译器优化的主要目标是什么?A. 增加程序的可读性B. 提高程序的执行效率C. 减少程序的存储空间D. 以上都是答案:D二、填空题(每题2分,共10分)1. 编译器的前端主要包括词法分析、______和语义分析。

答案:语法分析2. 编译器的后端主要包括代码优化、______和目标代码生成。

答案:代码生成3. 词法分析器通常使用______来识别词法单位。

答案:有限自动机4. 语法分析器可以使用______文法来描述语言的语法结构。

答案:上下5. 编译器优化中,______优化可以减少程序的运行时间。

答案:时间三、简答题(每题5分,共20分)1. 简述编译器的主要功能。

答案:编译器的主要功能包括将高级语言编写的源程序转换成等价的目标程序,同时进行语法、语义和运行时错误检查,以及代码优化以提高程序的执行效率。

2. 描述编译过程中的词法分析阶段的主要任务。

答案:词法分析阶段的主要任务是将源程序的字符序列分割成一系列的标记(token),这些标记是源程序中最小的有意义的单位,如关键字、标识符、常量等,并为后续的语法分析阶段提供输入。

3. 什么是语法分析?它在编译过程中的作用是什么?答案:语法分析是编译过程中的一个阶段,其任务是根据语言的语法规则检查源程序是否符合语法结构,并构建出抽象语法树(AST)。

编译原理考试题及答案

编译原理考试题及答案

编译原理考试题及答案一、选择题(每题2分,共10分)1. 在编译原理中,词法分析器的主要任务是什么?A. 将源代码转换为中间代码B. 识别源代码中的词法单元C. 进行语法分析D. 优化代码答案:B2. 下列哪个选项不是编译器的组成部分?A. 词法分析器B. 语法分析器C. 运行时环境D. 语义分析器答案:C3. 编译器的哪个阶段负责检查变量是否已经声明?A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:C4. 在编译原理中,哪些技术常用于错误恢复?A. 预测分析表和LR分析B. 递归下降分析和LR分析C. 预测分析表和递归下降分析D. 预测分析表和错误恢复算法答案:D5. 编译器中用于优化代码的阶段是哪一个?A. 词法分析B. 语法分析C. 语义分析D. 代码优化答案:D二、填空题(每题2分,共10分)1. 编译器的前端包括词法分析、语法分析和________。

答案:语义分析2. 在编译过程中,________分析器负责将源代码的逻辑结构转换为一种内部表示形式。

答案:语法3. 编译器的后端包括________、寄存器分配和代码生成。

答案:中间代码生成4. 编译器中的________分析用于检查程序中的类型错误。

答案:语义5. 编译器的________阶段负责将高级语言代码转换为目标机器代码。

答案:代码生成三、简答题(每题10分,共20分)1. 简述编译器的主要功能。

答案:编译器的主要功能包括将高级语言编写的源代码转换成目标机器可以执行的机器代码,同时进行错误检测、代码优化等。

它通常包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等阶段。

2. 描述编译过程中的语法分析阶段的主要任务。

答案:语法分析阶段的主要任务是检查源代码是否符合语言的语法规则,构建抽象语法树(AST),并进行语法制导的语义分析。

这一阶段使用诸如自顶向下的递归下降分析、自底向上的移进-规约分析等技术来识别语言结构,并为后续的语义分析和代码生成打下基础。

最新《编译原理》模拟期末试题汇总-6套-含答案资料

最新《编译原理》模拟期末试题汇总-6套-含答案资料

《编译原理》模拟试题一一、是非题(请在括号内,正确的划√,错误的划×)(每个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.简单优先文法允许任意两个产生式具有相同右部。

(×)二、选择题(请在前括号内选择最确切的一项作为答案划一个勾,多划按错论)(每个4分,共40分)1.一个编译程序中,不仅包含词法分析,_____,中间代码生成,代码优化,目标代码生成等五个部分。

A.( ) 语法分析B.( )文法分析C.( )语言分析D.( )解释分析2.词法分析器用于识别_____。

A.( ) 字符串B.( )语句C.( )单词 D.( )标识符3.语法分析器则可以发现源程序中的_____。

A.( ) 语义错误 B.( ) 语法和语义错误C.( ) 错误并校正D.( ) 语法错误4.下面关于解释程序的描述正确的是_____。

(1) 解释程序的特点是处理程序时不产生目标代码(2) 解释程序适用于 COBOL 和 FORTRAN 语言(3) 解释程序是为打开编译程序技术的僵局而开发的A.( ) (1)(2) B.( ) (1)C.( ) (1)(2)(3) D.( ) (2)(3) 5.解释程序处理语言时 , 大多数采用的是_____方法。

编译原理考试题及答案

编译原理考试题及答案

编译原理考试题及答案一、选择题(每题2分,共20分)1. 编译器的主要功能是将高级语言源程序转换成机器语言目标程序。

(对/错)答案:对2. 编译过程中,词法分析器的主要任务是识别源程序中的各种词法单位。

(对/错)答案:对3. 在语法分析阶段,编译器使用的数据结构是栈。

(对/错)答案:错4. 语义分析的主要目的是检查程序的语法结构是否正确。

(对/错)答案:错5. 编译器的优化阶段可以提高目标程序的执行效率。

(对/错)答案:对6. 编译器的代码生成阶段负责将中间代码转换为目标代码。

(对/错)答案:对7. 编译器的运行时系统包括内存管理、输入输出处理等功能。

(对/错)答案:对8. 编译器的前端主要负责源程序的分析,后端负责目标代码的生成。

(对/错)答案:对9. 编译器的词法分析阶段不涉及对标识符的识别。

(对/错)答案:错10. 编译器的语法分析阶段可以识别出所有的语法错误。

(对/错)答案:对二、填空题(每题2分,共20分)1. 编译器在进行语法分析时,通常采用________算法。

答案:LL(1)或LR(1)2. 编译器在语义分析阶段,需要对变量的________进行检查。

答案:作用域和生命周期3. 编译器在代码优化阶段,常用的优化技术包括________和循环优化。

答案:常量传播4. 编译器在目标代码生成阶段,需要考虑________的约束。

答案:目标机器5. 编译器的运行时系统包括________、内存管理、输入输出处理等。

答案:程序启动和异常处理6. 编译器在词法分析阶段,需要识别的词法单位包括________、标识符、常量等。

答案:关键字7. 编译器在语法分析阶段,使用的分析表可以是________表或ACTION 表。

答案:GOTO8. 编译器在语义分析阶段,需要对表达式的________进行计算。

答案:类型9. 编译器的代码生成阶段,需要将中间代码转换为________代码。

答案:目标机器10. 编译器的运行时系统在内存管理中,需要处理________和垃圾收集。

编译原理第一套模拟卷

编译原理第一套模拟卷

编译原理第一套模拟卷总分:100分时间:90分钟一、选择题(每小题2分,共20分)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.构造编译程序应掌握______。

A.源程序B.目标语言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∨8. 优化可生成_____的目标代码。

A.运行时间较短B.占用存储空间较小C.运行时间短但占用内存空间大 D.运行时间短且占用存储空间小9.下列______优化方法不是针对循环优化进行的。

A. 强度削弱 B.删除归纳变量C.删除多余运算 D.代码外提10.编译程序使用_____区别标识符的作用域。

A. 说明标识符的过程或函数名B.说明标识符的过程或函数的静态层次C.说明标识符的过程或函数的动态层次D. 标识符的行号二、是非题(请在括号内,正确的划√,错误的划×)(每小题2分,共20分)1.编译程序是对高级语言程序的解释执行。

( )2.一个有限状态自动机中,有且仅有一个唯一的终态。

编译原理试题及答案

编译原理试题及答案

编译原理试题及答案一、选择题1. 编译器的主要功能是什么?A. 代码优化B. 语法分析C. 代码生成D. 所有以上选项答案:D2. 下列哪个阶段属于编译过程的前端?A. 语法分析B. 代码生成C. 运行时库链接D. 目标代码优化答案:A3. 在编译原理中,什么是“产生式系统”?A. 一种编程语言的规范B. 一种用于描述语法的系统C. 一种代码优化技术D. 一种代码生成方法答案:B4. 以下哪个是自顶向下的语法分析方法?A. LR分析B. LALR分析C. LL分析D. CYK算法答案:C5. 在编译器的哪个阶段会进行类型检查?A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:C二、填空题1. 编译器在进行________时,会识别源代码中的各种标识符、常量、运算符等,并将其转换成相应的符号。

答案:词法分析2. 在编译原理中,________图是一种用于描述程序执行过程中变量状态的图,它以节点表示变量的值,以有向边表示程序的控制流。

答案:控制流3. 语法分析的主要任务是根据________规则来分析和构建源程序的语法结构。

答案:语法4. 在编译过程中,________是将源程序中的高级表示转换为机器语言或中间代码的过程。

答案:代码生成5. 编译器的________阶段负责将优化后的代码转换为目标机器可执行的指令序列。

答案:目标代码生成三、简答题1. 简述编译器的一般工作流程。

答:编译器的一般工作流程包括以下几个阶段:首先是词法分析,将源代码文本分解成一系列的记号;其次是语法分析,根据语言的语法规则构建抽象语法树;接着是语义分析,检查源代码的语义正确性并进行类型检查;然后是中间代码生成,将抽象语法树转换为中间表示形式;之后是代码优化,对中间代码进行各种优化以提高效率;最后是代码生成,将优化后的中间代码转换为目标机器的机器代码。

2. 描述自顶向下和自底向上语法分析方法的主要区别。

答:自顶向下的语法分析方法从开始符号开始,尝试将输入的记号序列归约为语法中的产生式规则,直到得到完整的抽象语法树。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

编译原理与技术模拟试题一
一、填空题(20分)
1.1编译程序的工作过程可划分为词法分析、语法分析、、中间代码生
成、代码优化、等阶段,一般在阶段对表达式中运算对象的类型进行检查。

1.2 和预测分析法是自上而下的语法分析方法。

1.3常用的存储分配策略有存储分配和动态存储分配,其中,动态存储分配
策略包括分配和分配。

1.4移进、归约是分析中的典型操作。

1.5对于数组M[1..6, 1..8],如果每个元素占k个存储单元,且起始地址为a,则以行为主序存放时元素M[4,4]的地址是_________________,以列为主序存放时元素M[4,4]的地址是_________________。

二、单选题(20分)
2.1词法分析器不能。

A. 识别出数值常量
B. 过滤源程序中的注释
C. 扫描源程序并识别记号
D. 发现括号不匹配
2.2给定文法A→bA|ca,是该文法的句子。

A. bba
B. cab
C. bca
D. cba
2.3一个句型中的最左称为该句型的句柄。

A. 短语
B. 直接短语
C. 非终结符号
D. 终结符号
2.4已知文法G[S]:S→A1A→A1|S0|0。

与G等价的正规式是。

A. 0(0|1)*
B. 1*|0*1
C. 0(1|10)*1
D. 1(10|01)*0
2.5源程序是句子的集合,可以较好地反映句子的结构。

A. 线性表
B. 树
C. 完全图
D. 堆栈
2.6与逆波兰式ab+c*d+对应的中缀表达式是。

A. a+b+c*d
B. (a+b)* c+d
C. (a+b)* (c+d)
D. a+b*c+d
2.7识别上下文无关语言的自动机是。

A. 下推自动机
B. NFA
C. DFA
D. 图灵机
2.8是与规范归约(最左归约)互逆的一个过程。

A. 最左推导
B. 最右推导
C. 词法分析
D. 语义分析
2.9文法G产生的的全体是该文法描述的语言,
A. 句子
B. 短语
C. 终结符
D. 非终结符
2.10在表达式x:=y+1中,作为左值出现(其中,“:=”表示赋值)。

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.
3.2 (10分)请计算下面文法G(E)中各非终结符的FIRST和FOLLOW集合。

请说明该文法为什么不是LL(1)文法。

G(E):E→E* T | T T→T - F | F F→(E) | id
3.3(10分)下图所示的分析树用到了某个上下文无关文法的所有产生式。

(a) 给出该文法的所有非终结符号集合N和终结符号集合T。

(b) 给出该文法的产生式集合。

S
a A c B
A a
B b S c A
c b B
d c
ε
3.4(5分)某程序执行到某一时刻时控制栈中的内容如下所示(其中M是主程序,P、Q、R、S均是过程),给出所有在生存期的活动的调用关系(提示:若A调用B,则记为A→B)。

四、综合题(40分)
4.1(15分)设有正规式r=1(0|1)*1,试给出:
(a)(5分)识别该正规集的NFA;
(b)(10分)识别该正规集的DFA(要有计算过程);
4.2(15分)设有上下文无关无法G及其语法制导翻译如下(注:G中终结符id仅由单个英文字母组成,如a, b等):
E→E1*T {E.place=newtemp; emit(*, E1.place, T.place, E.place;}
| T {E.place=T.place;}
T→T1-F {T.place=newtemp; emit(-, T1.place, F.place, T.place;}
| F {T.place=F.place;}
F→(E) {F.place=E.place;}
| id {F.place=;}
(a)(4分)画出句子a-b*c的分析树;
(b)(3分)写出当a=1、b=2、c=3时的计算结果;(*表示算术乘、-表示算术减)
(c)(8分)将文法G简化为:E→E*T|T,T→T-F|F,F→id,给出其识别活前缀的DFA,该DFA的项目集中有冲突吗?若有,是哪种类型的冲突。

4.3(10分)阅读以下程序代码
if (y > 0 and x > 0)
while (x > y) do x = x - y
else y = 1
(a)(4分)请画出其代码结构图(流程图);
(b)(6分)给出其三地址码序列。

参考答案
一、填空题
1.1语义分析、目标代码生成、语义分析
1.2 递归下降法
1.3静态、栈、堆
1.4自下而上或LR
1.5 a+27*k,a+21k
二、单选题
2.1 D 2.2 C 2.3 B 2.4 C 2.5 B
2.6 B 2.7 A 2.8B 2.9 A 2.10 A
三、简答题
3.1
传值调用方式:5 10
引用调用方式:-24 -5
3.2
FIRST(F) = FIRST(T) = FIRST(E) = { (,id }
FOLLOW(E) = {#,*,)} FOLLOW(T) = {-, *, #,) } FOLLOW(F) = {-, *, #,) } 3.3
N = {S, A, B}
T = {a, b, c, d}
S → aAcB | Bd A → AaB | c B → bScA | b | ε
3.4
M → P → R → Q → S → S
四、综合题
4.1 (a)NFA如下图所示
(b) s0 = {A}
ε_闭包(s0) = s0 初态
ε_闭包(smove(s0,1)) = {B} 记为s1
ε_闭包(smove(s1,0)) = {B} = s1
ε_闭包(smove(s1,1)) = {B,C} 记为s2,终态
ε_闭包(smove(s2,0)) = {B} = s1
ε_闭包(smove(s2,1)) = {B,C } = s2
DFA如下图所示
4.2(a)
E
E*T
T-F
T
F a b
F
c
(b) -3
(c)拓广文法,增加产生式:S→E,识别活前缀的DFA如下图所示
存在移进-归约冲突
4.3(10分)阅读以下程序代码
if (y > 0 and x > 0)
while (x > y) do x = x - y
else y = 1
(a)(4分)请画出其代码结构图(流程图);
(b)(6分)给出其三地址码序列。

(a)
(b)
101 if y>0 goto 103
102 goto 104
103 if x>0 goto 105
104 goto 110
105 if x>y goto 107 106 goto 111
107 t1 = x – y
108 x = t1
109 goto 105
110 y = 1
111。

相关文档
最新文档