编译技术复习题答案

合集下载

编译练习题答案..

编译练习题答案..

一、填空题 :1-01. 编译程序的工作过程一般能够区分为词法剖析 , 语法剖析 , 语义剖析,之间代码生成 , 代码优化等几个基本阶段 , 同时还会伴有表格办理和犯错办理 .1-02. 若源程序是用高级语言编写的, 目标程序是机器语言程序或汇编程序, 则其翻译程序称为编译程序 .1-03. 编译方式与解说方式的根本差异在于能否生成目标代码 .1-04. 翻译程序是这样一种程序, 它能够将用甲语言书写的程序变换成与其等价的用乙语言书写的程序 .1-05. 对编译程序而言 , 输入数据是源程序 , 输出结果是目标程序 .1-06. 假如编译程序生成的目标程序是机器代码程序, 则源程序的履行分为两大阶段 : 编译阶段和运行阶段 . 假如编译程序生成的目标程序是汇编语言程序, 则源程序的履行分为三个阶段: 编译阶段 ,汇编阶段和运转阶段 .1-07. 若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序,则其翻译程序称为编译程序。

1-08. 一个典型的编译程序中,不单包含词法剖析、语法剖析、中间代码生成、代码优化、目标代码生成等五个部分,还应包含表格办理和犯错办理。

此中,词法剖析器用于辨别单词。

1-09. 编译方式与解说方式的根本差异为能否生成目标代码。

2-01. 所谓最右推导是指:任何一步αβ 都是对α 中最右非终结符进行替代的。

2-02. 一个上下文没关文法所含四个构成部分是一组终结符号、一组非终结符号、一个开始符号、一组产生式。

2-03. 产生式是用于定义语法成分的一种书写规则。

2-04. 设 G[S] 是给定文法,则由文法G所定义的语言 L(G) 可描绘为: L(G) = {x │ S*。

Tx,x ∈ V }2-05. 设 G是一个给定的文法, S 是文法的开始符号,假如 S*),则称 x 是文法的一个句型。

x(此中 x∈ V2-06. 设 G是一个给定的文法,S 是文法的开始符号,假如S*x( 此中 x∈ V T ), 则称 x 是文法的一个句子。

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

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

编译原理期末考试试题及答案一、选择题(每题2分,共20分)1. 编译器的前端主要负责以下哪项工作?A. 代码优化B. 目标代码生成C. 词法分析和语法分析D. 运行时支持2. 词法分析器的主要任务是什么?A. 识别语法结构B. 识别词法单元C. 构建语法树D. 代码优化3. 语法分析中,使用哪种方法可以避免回溯?A. 递归下降分析B. LR分析C. LL分析D. 自顶向下分析4. 下列哪个选项不是中间代码的形式?A. 三地址代码B. 四元组C. 抽象语法树D. 汇编语言5. 代码优化的目标不包括以下哪项?A. 提高代码执行速度B. 减少程序占用的内存C. 增加程序的可读性D. 减少程序的执行时间二、简答题(每题10分,共30分)1. 简述编译器的主要组成部分及其功能。

2. 解释什么是语法制导翻译,并举例说明其在编译过程中的应用。

3. 描述静态作用域规则和动态作用域规则的区别。

三、计算题(每题15分,共30分)1. 给定一个简单的算术表达式 `3 + (4 * 5) - 2`,请使用逆波兰表示法表示,并说明其转换过程。

2. 假设有一个简单的文法如下:```S -> A BA -> a A | εB -> b B | ε```请写出使用该文法生成字符串 "ab" 的所有派生树。

四、论述题(每题20分,共20分)1. 论述编译器中代码优化的重要性,并举例说明常见的优化技术。

参考答案一、选择题1. C2. B3. B4. D5. C二、简答题1. 编译器的主要组成部分包括前端、中端和后端。

前端负责词法分析和语法分析,中端进行语义分析和中间代码生成,后端则负责代码优化和目标代码生成。

2. 语法制导翻译是一种基于文法规则的翻译技术,它将源程序的语法结构映射到相应的语义操作上。

例如,在编译过程中,语法制导翻译可以用于将源代码中的条件语句转换为中间代码中的跳转指令。

3. 静态作用域规则是指变量的作用域在编译时确定,而动态作用域规则是指变量的作用域在运行时确定。

编译技术作业辅导

编译技术作业辅导

编译技术作业辅导:单选:1 一个正规语言只能对应()?A 一个正规文法;B 一个最小有限状态自动机;正确答案:B2 文法G[A]:A→εA→aB B→Ab B→a是():A 正规文法B 二型文法正确答案:B3 文法G产生式为S→aSb|a|ab,句子aaaabbb句柄是A 最左边的a ;B 最右边的a;C ab ;D aSb正确答案:B4 给定文法G如下:E→E+T T→T*F|F F→P↑F|P D→(E)|i 句型P*P+i的最左直接短语为A P*P;B P ;C P+i ;D P*P+i正确答案:B5 文法:S→iCtS|iCtSeS|a C→b中follow(S)为A {i,a}B {e,$}C {i,e,$}D {e,b}正确答案:B6 文法G产生式如下:S→aA|a|bC A→aS|bB B→aC|bA|b C→aB|bS下列哪个不是L(G)的句子A x:=a+b+c*d-e/fB x:=a+(b+c)*d-e/fC x:=a+b+c*(d-e)/fD x:=a+b+c+(c*d)-e/f正确答案:B7 一个上下文无关文法消除了左递归,提取了左公共因子后是满足LL(1)文法的():A 必要条件B 充分必要条件正确答案:A8 给定文法如下:S→AB A→aA|a B→bB|b 句型aAB相对于A的短语是A aB AC aAD aAB正确答案:C9 表达式(A∨B)∧(C∨¬D∧E)的逆波兰表示为()。

A AB∨CD¬∨E∧∧B AB∨CDE∧¬∨∧C AB∨CD¬E∧∨∧D AB∨CD∨¬E∧∧正确答案:A10 编译程序与具体的机器()A 有关B 无关正确答案:A11 下面说法正确的是:A 一个正规文法也一定是二型文法B 一个二型文法也一定能有一个等价的正规文法正确答案:A12 文法G[A]:A→b A→AB B→Ab B→a是():A 二型文法B 正规文法正确答案:A13 一个LR(1)文法合并同心集后,如果不是LALR(1)文法必定存在():A 移进--归约冲突B 归约--归约冲突正确答案:B14 PL/0语言编译程序使用递归子程序法进行语法分析,他的文法必须满足():A LL(1)文法B SLR(1) 文法正确答案:A15 文法S→abC|c,bC→d是几型文法?A 0型文法B 1型文法D 3型文法正确答案:A16 文法S→abC , bC→ad;是几型文法?A 0型文法B 1型文法C 2型文法D 3型文法正确答案:B17 文法S→abC, C→bd;是几型文法?A 0型文法B 1型文法C 2型文法D 3型文法正确答案:C18 文法S→a | bC , C→d;是几型文法?A 0型文法B 1型文法C 2型文法D 3型文法正确答案:D19 要在某台机器上为某种语言构造编译程序,必须掌握下述那些内容____。

编译原理试题及答案

编译原理试题及答案

编译原理试题及答案一、选择题1. 编译器的主要功能是什么?A. 程序设计B. 程序翻译C. 程序调试D. 数据处理答案:B2. 下列哪一项不是编译器的前端处理过程?A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:D3. 在编译原理中,词法分析器的主要作用是什么?A. 识别程序中的关键字和标识符B. 将源代码转换为中间代码C. 检查程序的语法结构D. 确定程序的运行环境答案:A4. 语法分析通常采用哪种方法?A. 自顶向下分析B. 自底向上分析C. 正则表达式匹配D. 直接解释执行答案:B5. 语义分析的主要任务是什么?A. 检查程序的语法结构B. 检查程序的类型安全C. 识别程序中的变量和常量D. 将源代码转换为机器代码答案:B二、简答题1. 简述编译器的工作原理。

答案:编译器的工作原理主要包括以下几个步骤:词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成。

词法分析器将源代码分解成一系列的词素;语法分析器根据语法规则检查词素序列是否合法;语义分析器检查程序的语义正确性;中间代码生成器将源代码转换为中间代码;代码优化器对中间代码进行优化;最后,目标代码生成器将优化后的中间代码转换为目标机器代码。

2. 什么是词法分析器,它在编译过程中的作用是什么?答案:词法分析器是编译器前端的一个组成部分,负责将源代码分解成一个个的词素(tokens),如关键字、标识符、常量、运算符等。

它在编译过程中的作用是为语法分析器提供输入,是编译过程的基础。

三、论述题1. 论述编译器中的代码优化技术及其重要性。

答案:代码优化是编译过程中的一个重要环节,它旨在提高程序的执行效率,减少资源消耗。

常见的代码优化技术包括:常量折叠、死代码消除、公共子表达式消除、循环不变代码外提、数组边界检查消除等。

代码优化的重要性在于,它可以显著提高程序的运行速度和性能,同时降低程序对内存和处理器资源的需求。

四、计算题1. 给定一个简单的四则运算表达式,请写出其对应的逆波兰表达式。

编译技术考试试题及答案

编译技术考试试题及答案

编译技术考试试题及答案考试试题一:编译过程的基本原理是什么?答案:编译过程是将源代码转化为目标代码的过程。

它主要包括以下几个步骤:词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成。

其中,词法分析将源代码划分为一个个的词法单元;语法分析将词法单元按照语法规则进行组织和分析;语义分析对语法正确的代码进行语义检查;中间代码生成将源代码转化为一种中间表示形式;代码优化对中间代码进行优化以提高程序执行效率;目标代码生成将中间代码转化为目标机器代码。

考试试题二:什么是LL(1)文法?答案:LL(1)文法是一种上下文无关文法。

它的特点是每个非终结符的任意一个产生式的开始符号的集合都是不相交的,并且对于任意一个非终结符的产生式,它的所有后继符号串的FIRST集合也是不相交的。

LL(1)文法主要用于LL(1)语法分析器的构建。

考试试题三:请解释一下语法制导翻译的概念。

答案:语法制导翻译是指将源语言的语法结构翻译为目标语言的过程。

它通过在语法分析的同时进行翻译动作,将源语言的语义信息传递到目标语言中。

语法制导翻译可以通过语法制导定义的方式来实现,即在语法规则中嵌入翻译动作。

这样,在语法分析的过程中,每次使用某个产生式进行规约时,都会执行相应的翻译动作。

考试试题四:简述基于栈的中间代码生成方法。

答案:基于栈的中间代码生成方法是将源代码转化为中间代码的一种常用方法。

它利用栈数据结构来辅助生成中间代码。

具体步骤如下:1. 初始化栈,将栈底设置为$2. 读入源代码的符号串3. 从左到右扫描输入符号串,遇到终结符号则入栈,遇到非终结符号则查找相应的产生式,并将产生式右部符号入栈4. 重复步骤3,直到栈顶为$且输入符号串为空时停止5. 栈中剩余的中间代码即为生成的结果基于栈的中间代码生成方法简单高效,能够准确地将源代码转化为中间代码,为后续的代码优化和目标代码生成提供了便利。

考试试题五:编译过程中常见的代码优化技术有哪些?答案:编译过程中常见的代码优化技术包括:常量传播、复制传播、死代码删除、公共子表达式消除、循环优化、函数内联、代码重排等。

编译技术复习题答案

编译技术复习题答案

第一章:编译系统概述一.单项选择题1.编译程序前三个阶段完成的工作是〔C〕。

A.词法分析, 语法分析和代码优化B.代码生成, 代码优化和词法分析C.词法分析, 语法分析, 语义分析和中间代码生成D.词法分析, 语法分析和代码优化2.编译程序绝大多数时间花在〔D〕上。

A.出错处理 B.词法分析 C.目标代码生成D.表格管理3.编译程序是对〔C〕。

A.汇编程序的翻译 B.高级语言程序的说明执行C.高级语言的翻译 D.机器语言的执行4.在运用高级语言编程时,首先可通过编译程序发觉源程序的全部〔A〕错误。

A.语法 B.语义 C.语用 D.运行二.填空题1.编译程序首先要识别出源程序中每个(单词),然后再分析每个(句子)并翻译其意义。

2.通常把编译过程分为分析前端及后端两大阶段。

词法, 语法和语义分析是对源程序的(分析),中间代码生成, 代码优化及目标代码的生成那么是对源程序的(综合)。

3.对编译程序而言,输入数据是(源程序),输出结果是(目标程序)。

4.对以下错误信息,请指出可能是编译的哪个阶段〔词法分析, 语法分析, 语义分析,代码生成〕报告的。

〔1〕 else 没有匹配的if 〔语法分析〕〔2〕数组下标越界〔语义分析〕〔3〕运用的函数没有定义〔语法分析〕〔4〕在数中出现非数字字符〔词法分析〕5.假如编译程序生成的目标程序是机器代码程序,那么源程序的执行分为两大阶段:〔编译阶段〕和〔运行阶段〕。

假如编译程序生成的目标程序是汇编语言程序,那么源程序的执行方式分成三个阶段:〔编译阶段〕〔汇编阶段〕和〔运行阶段〕。

6.编译程序在其工作过程运用最多的数据构造是〔表〕,它记录着源程序中各种信息,以便查询或修改,在这些〔表〕中,尤以〔符号表〕最重要,它的生存期最长,运用也最频繁。

三.简述题:1.编译程序的工作分为那几个阶段答:词法分析, 语法分析和语义分析是对源程序进展的分析(称为编译程序的前端),而中间代码生成, 代码优化和代码生成三个阶段合称为对源程序进展综合(称为编译程序的后端),它们从源程序的中间表示建立起和源程序等价的目标程序。

编译技术习题及参考答案2

编译技术习题及参考答案2

编译技术习题及参考答案2单项选择题1.由于受到具体机器主存容量的限制,编译程序几个不同阶段的工作往往被组合成( )。

A、过程B、程序C、批量D、遍答案:D2.正规集合L={A的n次幂|n≥0}相应的正规表达式是( )。

A、a*B、a+C、aa*D、aa+答案:A3.正规式的“.”读作( )。

A、并且B、或者C、连接D、闭包答案:C4.以下中间代码的表示形式中,( )更便于优化。

A、三元式B、四元式C、树D、后缀式答案:B5.规范规约分析法每次都是对( )进行归约。

A、简单短语B、句柄C、最左短语D、素短语答案:B6.正规文法( )二义性的。

A、可以是B、一定不是C、一定是答案:A7.图的正规表达式为( )。

A、{0,1}*B、{0,1}*-1|0{0,1}*C、{0,1}*-10{0,1}*D、{0,1}*-{10}*答案:C8.与正规式r=(a|b)*等价的是( )。

A、a*b*B、(ab)*C、(a|b)(a|b)+D、((a|b)*)*答案:D9.高级语言编译程序常用的语法分析方法中,递归下降分析法属于( )分析方法。

A、自顶向下B、自底向上C、自左向右D、自右向左答案:A10.解释程序和编译程序是两类程序语言处理程序,它们的主要区别在于( )。

A、单用户与多用户的差别B、对用户程序的差错能力C、机器执行效率D、是否生成目标代码答案:D11.文法G所描述的语言是( )的集合。

A、文法G的字汇表V中所有符号组成的符号串B、文法G的字汇表V的闭包V*中的所有符号串C、由文法的识别符号推出的所有符号串D、由文法的识别符号推出的所有终结符号串答案:B12.一个语言的文法是( )。

A、有限的B、不唯一的C、唯一的答案:B13.编译程序是将___翻译成___。

( )A、汇编语言程序;机器语言程序B、高级语言程序;汇编语言程序或机器语言程序C、汇编语言程序或高级语言程序;机器语言程序或高级语言程序D、高级语言程序;机器语言程序或高级语言程序答案:B14.若文法G 定义的语言是无限集,则文法必然是( )。

编译技术习题及参考答案4分析

编译技术习题及参考答案4分析

编译技术习题及参考答案4单项选择题1.已知文法G1:P→PaP|PbP|cP|Pe|f,G1是( )。

A、二义文法B、无二义的答案:A2.一个上下文无关文法消除了左递归,提取了左公共因子后是满足LL(1)文法的( )。

A、必要条件B、充分必要条件答案:A3.语法分析常用的方法是( )。

①自顶向下②自底向上③自左向右④自右向左A、①②③④B、①②C、③④D、①②③答案:B4.LR语法分析栈中存放的状态是识别( )的DFA状态。

A、前缀B、活前缀C、项目D、句柄答案:B5.某个语言,它能用正规表达式表示,但是不能使用任何正规文法表示,这个语言必然是( )。

A、含二义性的语言B、不存在的语言C、1型文法所对应的语言D、既含左递归又含右递归的语言答案:B6.LL(1)文法的条件是( )。

A、对形如U::=x1 | x2 | … | xn 的规则,要求First(xi)∩ First(xj)=Φ,(i≠j)B、a 和 cC、对形如 U::=x1 | x2 | … | xn 的规则,若xi=>*ε, 则要求First(xj)∩Follow(U)=Φ,(i≠j)D、都不是答案:C7.高级语言编译程序常用的语法分析方法中,LL分析法属于( )分析方法。

A、自左至右B、自顶向下C、自底向上D、自右至左答案:B8.程序基本块是指( )。

A、一个子程序B、一个仅有一个入口和一个出口的语句C、一个没有嵌套的程序段D、一组顺序执行的程序段,仅有一个入口和一个出口答案:D9.文法G产生式为S→aSb|a|ab,句子aaaabbb句柄是( )。

A、最左边的aB、最右边的aC、abD、aSb答案:B10.一个上下文无关文法消除了左递归,提取了左公共因子后是满足LL(1)文法的( )。

A、必要条件B、充分条件C、充分必要条件D、无关条件答案:A11.规范规约中的可归约串都是( )。

A、句柄B、素短语C、最左素短语D、最左终结符答案:A12.给定文法G如下:E→E+T T→T*F|F F→P↑F|P D→(E)|i,句型P*P+i的最左直接短语为( )。

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

第一章:编译系统概述一.单选题1.编译程序前三个阶段完成的工作是(C)。

A.词法分析、语法分析和代码优化B.代码生成、代码优化和词法分析C.词法分析、语法分析、语义分析和中间代码生成D.词法分析、语法分析和代码优化2.编译程序绝大多数时间花在(D)上。

A.出错处理B.词法分析C.目标代码生成D.表格管理3.编译程序是对(C)。

A.汇编程序的翻译B.高级语言程序的解释执行C.高级语言的翻译D.机器语言的执行4.在使用高级语言编程时,首先可通过编译程序发现源程序的全部(A)错误。

A.语法B.语义C.语用D.运行二.填空题1.编译程序首先要识别出源程序中每个( 单词),然后再分析每个( 句子)并翻译其意义。

2.通常把编译过程分为分析前端与后端两大阶段。

词法、语法和语义分析是对源程序的( 分析),中间代码生成、代码优化与目标代码的生成则是对源程序的(综合)。

3.对编译程序而言,输入数据是( 源程序),输出结果是( 目标程序)。

4.对下列错误信息,请指出可能是编译的哪个阶段(词法分析、语法分析、语义分析、代码生成)报告的。

(1)else 没有匹配的if (语法分析)(2)数组下标越界(语义分析)(3)使用的函数没有定义(语法分析)(4)在数中出现非数字字符(词法分析)5.如果编译程序生成的目标程序是机器代码程序,则源程序的执行分为两大阶段:(编译阶段)和(运行阶段)。

如果编译程序生成的目标程序是汇编语言程序,则源程序的执行方式分成三个阶段:(编译阶段)(汇编阶段)和(运行阶段)。

6.编译程序在其工作过程使用最多的数据结构是(表),它记录着源程序中各种信息,以便查询或修改,在这些(表)中,尤以(符号表)最重要,它的生存期最长,使用也最频繁。

三.简述题:1.编译程序的工作分为那几个阶段?答:词法分析、语法分析和语义分析是对源程序进行的分析(称为编译程序的前端),而中间代码生成、代码优化和代码生成三个阶段合称为对源程序进行综合(称为编译程序的后端),它们从源程序的中间表示建立起和源程序等价的目标程序。

第二章词法分析一.单选题:1.语言是(A)。

A.句子的集合B.产生式的集合C.符号串的集合D.句型的集合2.扫描器所完成的任务是从字符串形式的源程序中识别出一个个具有独立含义的最小语法单位即(B)。

A.字符B.单词C.句子D.句型3.词法分析的任务是(A)。

A.识别单词B.分析句子的含义C.识别句子D.生成目标代码4.DFA(如图所示)接受的字集为(D )。

A.以0开头的二进制数组成的集合B.以0结尾的二进制组成的集合C.含奇数个0的二进制组成的集合D.含偶数个0的二进制组成的集合5.词法分析器的输出结果是(C)。

A.单词的种别编码B.单词在符号表中的位置C.单词的种别编码和自身的值D.单词自身值二.填空题:1.描述程序设计语言的词法的机制是(正则表达式),识别机制是(有穷状态自动机)。

2.最小状态DFA的含义是(没有多余状态,没有两个状态等价)。

3.确定有限自动机DFA是(NFA )的一个特例。

4.确定的有穷自动机是一个(五元组),通常表示为(DFA = ( S,∑,f , s0Z ) )。

三、简述题:1.词法分析答:词法分析的主要任务是从左向右扫描每行源程序的符号,按照词法规则从构成源程序的字符串中识别出一个个具有独立意义的最小语法单位,并转换成统一的内部表示(token),送给语法分析程序。

四.综合应用题:1.设有非确定的有自限动机NFA M=({A,B,C},{0,1},δ,{A},{C}),其中:δ (A,0)={C} δ (A,1)={A,B} δ (B,1)={C} δ (C,1)={C}。

请画出状态转换距阵和状态转换图。

解:状态转换距阵为:状态转换图为:2.有一台自动售货机,接收1分和2分硬币,出售3分钱一块的硬糖。

顾客每次向机器中投放≥3分的硬币,便可得到一块糖(注意;只给一块并且不找钱)。

(1)写出售货机售糖的正则表达式;(2)构造识别上述正则式的最简DFA。

解:(1)设a = 1, b = 2,,则售货机售糖的正则表达式为:a (b | a (a | b)) | b (a | b) 。

(2)画出与正则表达式a (b | a (a | b)) | b (a | b)对应的NFA,如图所示:3.设∑={0,1}上的正规集S由倒数第二个字符为1的所有字符串组成,请给出该字集对应的正规式,并构造一个识别该正规集的DFA。

解:构造相应的正规式:(0|1)*1(0|1)NFA:0 04.构造一个DFA ,使其接受∑ = {0, 1}上0和1的个数都是偶数的字符串。

解:5.构造一个字母表{0,1}上的DFA ,其接受的串中所含0的数目能被3除尽。

解:6.写出在∑ = {a , b}上不是a 开头的,以aa 结尾的的字符串集合的正规表达式,并直接构造与之等价的状态最少的DFA 。

解: 7.写一个文法使其语言为L(G)={a n b n c m | m ,n ≥ 1,n 为奇数,m 为偶数}。

解: 文法G(S):ccCcc | cc C baaAbb | a A AC S →→→8.构造一个DFA ,它接受∑={a ,b}上所有包含ab 的字符串。

解:构造相应的正规式:(a|b)*ab(a|b)*b b b aa a a a3 4 5a b b最小化:{0,1,2} {3,4,5} {0, 2},1, {3,4,5}第三章程序设计语言的语法描述一.单选题:1.如果文法G是无二义的,则它的任何句子α( A )。

A.最左推导和最右推导对应的语法树必定相同B.最左推导和最右推导对应的语法树可能不同C.最左推导和最右推导必定相同D.可能存在两个不同的最左推导,但它们对应的语法树相同2.正规式 M 1 和 M 2 等价是指(C)。

A.M1和M2的状态数相等 B.M1和M2的有向边条数相等C.M1和M2所识别的语言集相等D.M1和M2状态数和有向边条数相等3.文法G所描述的语言是( D )的集合。

A.文法G的字符表V中所有符号组成的符号串。

B.文法G的字符表V的闭包V*中的所有符号串。

C.由文法的识别符号推出的所有符号串。

D.由文法的识别符号推出的所有4.已知语言L = { a n bb n | n ≥ 1 } ,则下述文法,( D )可以产生语言L。

A.Z →aZb|aAb|b B.A →aAbA →aAb | b A →bC.Z →AbB D.Z →aAbA →aA | a A →aAb | bB →bB | b5.正则表达式的运算符的优先顺序为( C )。

A.| > * >·B.* > | > ·C.* >·>| D.| >·>*6. ab3的另一种表示方法是()。

A. abbbB. abababC.abbaabD.aaabbb二.填空题:1.如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是(二义性的)。

2.最右推导亦称为(规范推导),由此得到的句型称为(规范)句型。

3.对于文法G,仅含终结符号的句型称为 ( 句子 )。

4.2型文法又称为(上下文无关)文法;3型文法又称为(正则)文法。

5.一个文法G是一个四元式( V T,V N,S,P )组成的。

6.文法G产生的(句子)的全体是该文法描述的语言。

7.L+可以写成(LL* )。

三.简述题1.一个文法是由哪几部分组成的,各部分的功能是什么?解:一个文法G是一个四元式(V T, V N,S, P)其中:V T是一个终结符的非空有限集合,终结符通常用小写字母表示;V N是一个非终结符的非空有限集合,非终结符通常用大写字母表示;S是一个特殊的非终结符(S∈V N),称为开始符号。

P是一个产生式(规则)的有限集合,每个产生式的形式是A→α,其中A∈V N,α∈(V T∪V N)*。

第四章自上而下的语法分析一.单选题:1.文法G[S]: S →xSx|y 所识别的语言是(C)。

A.xyxB.(xyx)*C.x n yx n (n ≥ 0)D.x*yx*2.编译过程中,语法分析器的任务是()。

A.分析单词是怎样构成的B.分析单词串是如何构成语句和说明的C.分析语句和说明是如何构成程序的D.分析程序的结构3.下列关于标识符和名字的叙述中,正确的为( C )。

A.标识符有一定的含义B.名字是一个没有意义的字符序列C.名字有确切的属性D.都不对二.填空题:1.编译器常用的语法分析方法有( 自底向上)和( 自顶向下)两种。

2.在LL(1)文法,其中的第一个L代表(从左向右扫描输入),第二个L表示产生(最左推导),1代表在决定分析器的每步动作时(向前看一个输入符号)。

3.一个上下文无关文法所含四个组成部分是(非终结符有限集合、终结符有限集合、产生式有限集合、开始符)。

4.一个文法G[Z],若存在推导序列Z →+…Z…,则称G[Z]是(递归)文法,这类文法所产生的句子有(无数)个。

5.描述语言L = { a m b n | n ≥ m ≥1 }的文法是:(Z → aAb、A→Ab | aAb |ε)。

三.简述题1.简述自顶向下的语法分析方法。

答:所谓自顶向下的语法分析方法就是从文法的开始符开始,根据给定的输入串并按照文法的产生式一步一步的向下进行最左推导,试图推导出文法的,使之与给定的输入串。

四.综合应用题:1.试验证如下文法 G[E] 是 LL(1)文法:E → [F] E′E’ → E| εF → aF’F’ →aF’ | ε其中E,F,E’,F’为非终结符解:各非终结符的FIRST 集和FOLLOW 集如下:FIRST(E)= { [ } FOLLOW(E)= {#}FIRST(E′)= { [ ,ε} FOLLOW(E′)= {#}FIRST(F)= { a } FOLLOW(F)= { ] }FIRST(F′)= { a ,ε} FOLLOW(F′)= { ] }对于E’ → E |ε FIRST(E) ∩ FOLLOW(E’)= φ对于F’ →aF’|ε FIRST(aF’)∩ FOLLOW(F’)= φ所以, 文法G[E]是LL(1)文法。

2.设有文法G[A]的产生式集为:A→BaC|CbBB→Ac|cC→Bb|b试消除G[A]的左递归。

解:不妨以A、B、C 排序.先将A 代入B 中,然后消除B 中左递归;再将A、B 代入C 中。

再消除C 中左递归。

最后结果为:G[A]:A→BaC|CbB B→CbBcB'|cB' B'→aCcB'|εC→cB'bC'|bC' C'→bBcB'bC'|ε3. 对文法G[S]:S→a|∧|(T)T→T,S|S(1) 给出(a,(a,a)的最左推导。

相关文档
最新文档