编译原理考试

合集下载

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

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

编译原理期末考试试题及答案一、选择题(每题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. 程序翻译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. 给定一个简单的四则运算表达式,请写出其对应的逆波兰表达式。

完整版编译原理复习题及答案

完整版编译原理复习题及答案

编译原理复习题及答案一、选择题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 .BASICB .CC.FORTRAN D.PASCAL12.把汇编语言程序翻译成机器可执行的目标程序的工作是由(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) A .出错处理B.词法分析C.目标代码生成D.表格管理17.源程序是句子的集A. 线性表(B) 可以较好地反映句子的结构。

完整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.扫描器的任务是从()中识别出一个个()。

7.符号表中的信息栏中登记了每个名字的有关的性质,如()等等。

编译原理考试题

编译原理考试题

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

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. 请分析该编译器的设计思路和实现方法,并说明其优缺点。

编译原理考试试卷

编译原理考试试卷

编译原理考试试卷一、选择题(每题2分,共20分)1. 编译器的主要功能是将源代码转换成目标代码,以下哪个不是编译器的基本组成部分?A. 词法分析器B. 语法分析器C. 代码优化器D. 运行时环境2. 词法分析器通常不负责以下哪项任务?A. 识别关键字B. 识别标识符C. 进行语义分析D. 去除空白字符3. 语法分析中,递归下降分析是一种:A. 确定性分析方法B. 非确定性分析方法C. 基于语法制导的分析方法D. 基于语法树的分析方法4. LR分析器是用于处理: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. 所有选项都是二、简答题(每题10分,共30分)1. 简述编译原理中词法分析器的作用及其实现方式。

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

3. 解释编译优化的重要性,并给出一个优化的例子。

三、计算题(每题25分,共50分)1. 给定一个简单的算术表达式 "3 + 4 * 2 - 1",请说明如何使用递归下降分析器来解析这个表达式,并给出相应的语法树。

2. 假设你有一个简单的编译器后端,需要将四元式 "(a, b, +, c)" 转换成目标代码。

编译原理试题及答案

编译原理试题及答案

编译原理试题及答案
试题:
1. 解释编译原理的定义,同时给出编译器的作用。

2. 简要描述编译过程中的四个基本步骤。

3. 解释词法分析器的功能和作用。

4. 解释语法分析器的功能和作用。

答案:
1. 编译原理是研究如何将高级语言程序转化为等价机器语言程序的一门学科。

编译器是将高级语言文本转换成等价的机器语言的软件工具。

它负责将源代码转化为目标代码,以便计算机能够理解和执行。

2. (1) 词法分析:将源代码分解成一系列单词或标记。

(2) 语法分析:根据语法规则组织单词或标记形成语法树。

(3) 语义分析:分析语法树以检测语义错误。

(4) 代码生成:根据语法树生成目标代码。

3. 词法分析器的功能是将源代码分解成一系列单词或标记。

它将源代码读取为字符流,然后将这些字符组成单词,同时可以去除空格、注释等不具有实际意义的内容。

词法分析器的作用是为语法分析器提供正确的单词序列,为后续的语义分析和代
码生成步骤建立基础。

4. 语法分析器的功能是根据语法规则组织单词或标记形成语法树。

它通过构建语法树来分析源代码的语法结构,同时可以检测语法错误。

语法分析器的作用是为后续的语义分析和代码生成步骤提供一个结构化的表示形式,便于后续的处理和转换。

编译原理期末试题(含答案+大题集+重要知识点)

编译原理期末试题(含答案+大题集+重要知识点)

《编译原理》期末试题(一)一、是非题(请在括号内,正确的划√,错误的划×)(每个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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

编译原理考试————————————————————————————————作者:————————————————————————————————日期:一、判断对错:(对√;错 ;每小问2分共24分)<1>算符优先分析法是一种规范归约分析法。

( )<2>若文法Gs中不含形如T→…BD…的产生式,T、B、D∈V N,则称Gs为算符文法。

(√)<3>若一个语言是有穷集合,则定义该语言的文法一定是递归的。

( )<4>若两个正规式所表示的正规集相同,则认为二者是等价的。

(√)<5>LR分析法是一种规范归约分析法。

(√)<6>一个LR(0)项目集I={B →α.bβ, P →aA.},则说I中含有“移进—归约”冲突。

(√)<7>SLR(1)文法是无二义性文法。

(√)<8>消除左递归后的文法一定是LL(1)文法。

( )<9>对任何编译程序而言,代码优化是必不可少的。

( )<10>编译程序与具体的机器无关。

( )<11>在自动机的概念中,终态与非终态是可区别的。

(√)<12>逆波兰式ab+cd+*所代表的中缀表达式是:(a+b)*(c+d)(√)1. 一个语言有文法是不惟一的。

(√)2. 若一个语言是无穷集合,则定义该语言的文法一定是递归的。

(√)3. 紧跟在条件转移语句后面的语句是基本块的入口语句。

(√)4. 算符优先分析法是一种规范归约分析法。

( )5. 自下而上语法自导翻译的特点:当栈顶形成句柄时,在归约的同时执行其语义动作。

(√)6. LR(0)文法、SLR(1)文法都是无二义性文法。

(√)7.K、∑分别表示有限状态集和有穷字母表, DFA M的转换函数f是一个从K ⨯∑到K的单值映射。

(√)8. 对任何编译程序而言,代码优化是必不可少的。

( )9. 直接短语是某规则的右部,它对应简单子树叶结点从左到右排列形成的符号串。

(√)10. 两个有穷自动机等价是指它们的状态数和有向弧数相等。

( )11. 一个LR(0)项目集为:I={A→α.bβ, D→β.},则说I中含有“移进--归约”冲突。

(√)12. 若两个正规式所表示的正规集相同,则认为二者是等价的。

(√)13. 无左递归的文法是LL(1)文法。

( )14. 逆波兰式abcde/+*+所代表的中缀表达式是:a+b*(c+d/e)(√)15. 编译程序结构中,中间代码优化及目标代码生成两个阶段与具体的机器有关。

( )16. LALR分析法中,同心集的合并不会产生“移进--归约”冲突。

(√)<1>算符优先分析法是一种规范归约分析法。

(错)<2>若文法Gs中不含形如T→…BD…的产生式,T、B、D∈V N,则称Gs为算符文法。

(对)<3>若一个语言是有穷集合,则定义该语言的文法一定是递归的。

(错)<4>若两个正规式所表示的正规集相同,则认为二者是等价的。

(对)<5>LR分析法是一种规范归约分析法。

(对)<6>一个LR(0)项目集I={B →α.bβ, P →aA.},则说I中含有“移进—归约”冲突。

(对)<7>SLR(1)文法是无二义性文法。

(对)<8>消除左递归后的文法一定是LL(1)文法。

(错)<9>对任何编译程序而言,代码优化是必不可少的。

(错)<10>编译程序与具体的机器无关。

(错)二、<1>将下图所示的NFA确定化。

(状态转换矩阵4分;状态转换图2分)解:<1> 状态转换矩阵4分状态转换图2分<2>给出语言L={ d a n b | n≥1}相应的文法。

G A:A → dBb G A:A → dBB→ aB |a B → aB | ab三、①编译程序的工作过程一般划分为五个基本阶段: B;D 、语义分析和中间代码生成、代码优化和目标代码生成。

A.出错处理B.词法分析C.表格管理D.语法分析②已知文法G E:E→E+T | T T→T*F | F F→(E) | b 那么,该文法终结符集合V T= A;C ,G E称2型文法或上下文无关文法。

A. {+,(,),*,b}B. {+,(,),*,E}C. {+,*,(,),b}D. {E,T,F}③已知文法G E:E→E+T | T T→T*F | F F→(E) | b 那么,该文法的非终结符集V N= B ,G E称2型文法或上下文无关文法。

A. {+,(,),*,b}B. {E,T,F}C. {+,*,(,),b}D. {E,T,F,*,+}④文法用于描述语言的语法结构,它由如下四个部分组成: A;C;D 和文法开始符号。

A.文法终结符集B.字母数字串C. 文法非终结符集D.文法产生式集⑤一个文法被称为是二义性的,如果 A , D 。

A.文法的某一个句子有两个以上的最右或最左推导。

B.文法的预测分析表中有多重入口。

C.文法的某个LR(0)项目集中有冲突项目。

D.文法的某一个句子有两棵以上不同的语法树。

⑥程序设计语言的单词符号一般可分为五种,它们是保留字、 A;D 及运算符和定界符。

A.常数B.表达式C.注解D.标识符⑦设有一个LR(0)项目集I={A→β.bδ, B→β. ,D→δ.},I中存在冲突项目,它们是 A;D 。

A.“移进-归约”冲突B. “移进-接受”冲突C. “移进-待约”冲突D. “归约-归约”冲突⑧一个文法的SLR(1)方法和与其相应的LR(0)方法的状态数 A 。

A.相同B.不相同的C.前者大于后者D.后者大于前者1.编译程序的工作过程一般划分为五个基本阶段:词法分析、 B D 、中间代码优化、目标代码生成。

A.出错处理B.语法分析C.表格管理D.语义分析与中间代码生成2.识别某文法所有LR(0)项目集簇的DFA中,若项目集k中含有项目“A→δ.”,且仅当输入符号a∈FOLLOW(A)时,才用规则“A →δ”归约的语法分析方法是 D 。

A.LALR分析法B.LR(0)分析法C.LR(1)分析法D.SLR(1)分析法3.程序设计语言的单词符号一般可分为五种,它们是常数、 C D 及运算符和定界符。

A.注解B.表达式C.标识符D.保留字4.文法用于描述语言的语法结构,它由如下四个部分组成: A C D 和文法开始符号。

A.文法终结符集B.字母数字串C. 文法非终结符集D.文法产生式集5.一个文法被称为是二义性的,如果 A C 。

A.文法的某一个句子有两个以上的最右或最左推导。

B.文法的预测分析表中有多重入口。

C.文法的某一个句子有两棵以上不同的语法树。

D.文法的某个LR(0)项目集中有冲突项目。

6.已知文法G B:B→B+T | T T→T*F | F F→(B) | b 那么,该文法终结符集合V T= A B , G E称2型文法或上下文无关文法。

A. V T={+,*,(,),b}B. V T={ b,(, +,* ,)}C. V T={B,T,F}D. V T={B,T,F,+,*,(,b,)}7.在动态存储分配时,可以采用的分配方法有 B C 。

A.分时动态存储分配B.栈式动态存储分配C. 堆式动态存储分配D.最佳动态存储分配8.设有一个LR(0)项目集I={A→β.dδ;A→b.Bδ; B→βd. ;D→dB. },I中存在冲突项目,它们是 A B 。

A.“移进-归约”冲突B.“归约-归约”冲突C. “移进-待约”冲突D. “移进-接受”冲突9.在编译程序采用的优化方法中, B C D 是在循环语句范围内进行的。

A. 删除多余运算B.代码外提C. 删除归纳变量D.强度消弱10.编译程序生成的目标代码通常有3种形式,它们是 A C D 。

A.能够立即执行的机器语言代码B.中间语言代码C.汇编语言程序D.待装配的机器语言代码①编译程序的工作过程一般划分为五个基本阶段: BD 、语义分析和中间代码生成、代码优化和目标代码生成。

A.出错处理B.词法分析C.表格管理D.语法分析②已知文法G E:E→E+T | T T→T*F | F F→(E) | b 那么,该文法终结符集合V T= AC ,G E称2型文法或上下文无关文法。

A. {+,(,),*,b}B. {+,(,),*,E}C. {+,*,(,),b}D. {E,T,F}③已知文法G E:E→E+T | T T→T*F | F F→(E) | b 那么,该文法的非终结符集V N=B ,G E称2型文法或上下文无关文法。

A. {+,(,),*,b}B. {E,T,F}C. {+,*,(,),b}D. {E,T,F,*,+}④文法用于描述语言的语法结构,它由如下四个部分组成: ACD 和文法开始符号。

A.文法终结符集B.字母数字串C. 文法非终结符集D.文法产生式集⑤一个文法被称为是二义性的,如果 D 。

A.文法的某一个句子有两个以上的最右或最左推导。

B.文法的预测分析表中有多重入口。

C.文法的某个LR(0)项目集中有冲突项目。

D.文法的某一个句子有两棵以上不同的语法树。

⑥程序设计语言的单词符号一般可分为五种,它们是保留字、 AD 及运算符和定界符。

A.常数B.表达式C.注解D.标识符⑦设有一个LR(0)项目集I={A→β.bδ, B→β. ,D→δ.},I中存在冲突项目,它们是 AD 。

A.“移进-归约”冲突B. “移进-接受”冲突C. “移进-待约”冲突D. “归约-归约”冲突⑧一个文法的SLR(1)方法和与其相应的LR(0)方法的状态数 A 。

A.相同B.不相同的C.前者大于后者D.后者大于前者四、计算题(共10分;画出语法树4分;其余按要求分别得:1分+1分+2分+2分)对于如下文法G B:B → B + D| DD→ D * F| F 给出句型D + D *d+d 的最左素短语、句柄、F→ ( B ) | d 所有直接短语、短语。

解:已知NFA如下图所示。

(8分=6分+2分)<1>确定化。

(状态转换矩阵4分;状态转换图2分) <2>写出与其等价的右线性文法。

解:<1> 计算出DFA的状态转换矩阵4分;画出相应的状态转换图2分<2>与其等价的右线性文法为:G A:A → dA | bB | b A → dA | bA | bB | B A代表结点1B → bB | dA | b B → bC | b B代表结点2按确定化后的DFA构造的结果;按NFA构造的结果对于文法G E:(共8分:语法树2分;其余按要求分别得1分、1分、2 分、2分)E → E + B| BB→ B * F| F 给出句型B + B * b + b 的最左素短语、句柄、F→ ( E ) | b 直接短语和所有短语。

相关文档
最新文档