c语言lr文法还是ll文法,编译原理第五章语法分析课后题

(先补到这里,后面如果有需要的话,垃圾博主还会回来继续更的。。。)

5.1 递归子程序法属于()语法分析方法

A. 自顶向下

B. 自底向上

C. 自左向右

D. 自右向左

5.2 采用确定的自顶向下分析时,必须()

A. 消除左递归

B. 消除右递归

C. 避免回溯

D. 提取左公因子

5.3 自上而下语法分析的主要分析动作是

A. 推导

B. 移进

C. 归约

D. 匹配

5.4 一个字符属于FOLLOW(S),这个字符的含义是()

A. 一定会有一个句型中后随S的终结符

B. S可能推导出第一个字符

C. S可能推导出最后一个字符

D. 在某句型中直接跟在S后的字符

5.5 在递归子程序方法中,若文法存在左递归,则会使分析过程产生()

A. 回溯

B. 非法调用

C. 有限次调用

D. 无限循环

5.6 编译程序中的语法分析器接受已()为单位的输入,并产生有关信息供以后各阶段使用

A. 表达式

B. 产生式

C. 单词

D. 语句

5.7 构造一个不带回溯的自顶向下语法分析器,要求文法满足

A. 对每个形如A→x1|x2|…|xn的产生式,要求FIRST(xi)与FIRST(xj)的交集为空集(i≠j)

B. 对每个形如A→x1|x2|…|xn的产生式,若xi能推出ε,则要求FIRST(xj)与FOLLOW(A)的交集为空集(i≠j)

C. 不含左递归

D. A和B同时满足

E. A、B和C同时满足

5.8 LL(1)文法()二义性的

A. 都是有

B. 都没有

C. 不一定有

D. 极少具有

5.9 语法分析器的常用方法是

A. 自顶向下

B. 自底向上

C. 自左向右

D. 自右向左

5.10 LL(1)文法又称为预测分析方法

正确

错误

5.11 左递归会造成自顶向下分析过程出现无穷的重复

正确

错误

5.12 LL(k)文法不一定都是二义性的

正确

错误

5.13 考虑文法G[A]:A→A∨B|B B→B∧C|C C→┓C|D D→(A)|i 该文法是LL(1)文法

正确

错误

5.14 一个算符优先文法可能不存在算符优先函数与之对应

正确

错误

5.15 LR分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。

正确

错误

5.16 最左简单子树的末端结点构成的符号串称为( )

A. 简单短语

B. 句柄

C. 最左素短语

D. 素短语

5.17若a为终结符,则A→α·aβ为( )项目

A. 待约

B. 接受

C. 移进

D. 归约

5.18下面哪种不是自底向上的语法分析文法( )。

A. LR(1)

B. SLR(1)

C. LL(K)

D. 算符优先法

5.19 LR(k)方法是( )。

A. 从左到右分析,每次向前预测k步的一种编译方法

B. 从左到右分析,是否归约句柄要向后看k个输入符号的一种编译方法

C. 从左到右分析,共经过k步的一种编译方法

D. 从左到右分析,每次走k步的一种编译方法

5.20 算符优先分析是一种自底向上的分析方法,它是以( )作为每一步归约的对象。

A. 句柄

B. 最右直接短语

C. 最左素短语

D. 最右素短语

5.21 在通常的语法分析方法中,( )特别适用于表达式的分析。

A. 简单优先法

B. LR分析法

C. 算符优先法

D. LL(1)分析法

5.22 若项目集Ik含有A->α·,则在状态k时,仅当面临的输入符号a∈FOLLOW(A)时,才采取“A->α·”动作的一定是( )

A. LALR文法

B. LR(0)文法

C. LR(1)文法

D. SLR(1)文法

5.23 在规范归约中,任何可归约串的出现都在( )

A. 栈的内部

B. 剩余的输入串中

C. 栈顶

D. 在栈顶和输入串中

5.24 一个LR分析器实质上是一个带有先进后出存储栈的( )

A. DFA

B. NFA

C. ACTION表

D. LR分析表

5.25 自下而上语法分析的主要分析动作是( )

A. 移进

B. 推导

C. 归约

D. 匹配

5.26 LR分析法属于( )

A. 自顶向下分析法

B. LALR分析法

C. SLR分析法

D. 自底向上分析法

5.27 自下而上语法分析的主要分析动作是( )

A. 移进

B. 推导

C. 归约

D. 匹配

5.28 LR分析法属于( )

A. 自顶向下分析法

B. LALR分析法

C. SLR分析法

D. 自底向上分析法

注意:答案就是标红的那个,有多选,单选和判断题,如有错误,欢迎指正。

编译原理课后答案第一章 第 1 章引论 第 1  解释下列术语: (1)编译程序 (2)源程序 (3)目标程序 (4)编译程序的前端 (5)后端 (6)遍 答案: (1) 编译程序:如果源语言为高级语言,目标语言为某台计算机上的汇编语言或机器语 言,则此翻译程序称为编译程序。 (2) 源程序:源语言编写的程序称为源程序。 (3) 目标程序:目标语言书写的程序称为目标程序。 (4) 编译程序的前端:它由这样一些阶段组成:这些阶段的工作主要依赖于源语言而与 目标机无关。通常前端包括词法分析、语法分析、语义分析和中间代码生成这些阶 段,某些优化工作也可在前端做,也包括与前端每个阶段相关的出错处理工作和符 号表管理等工作。 (5) 后端:指那些依赖于目标机而一般不依赖源语言,只与中间代码有关的那些阶段, 即目标代码生成,以及相关出错处理和符号表操作。 (6) 遍:是对源程序或其等价的中间语言程序从头到尾扫视并完成规定任务的过程。 第 2  一个典型的编译程序通常由哪些部分组成?各部分的主要功能是什么?并画出编译程 序的总体结构图。 答案: 一个典型的编译程序通常包含 8 个组成部分,它们是词法分析程序、语法分析程序、语 义分析程序、中间代码生成程序、中间代码优化程序、目标代码生成程序、表格管理程序和 错误处理程序。其各部分的主要功能简述如下。 词法分析程序:输人源程序,拼单词、检查单词和分析单词,输出单词的机内表达形式。 语法分析程序:检查源程序中存在的形式语法错误,输出错误处理信息。 语义分析程序:进行语义检查和分析语义信息,并把分析的结果保存到各类语义信息表 中。 中间代码生成程序:按照语义规则,将语法分析程序分析出的语法单位转换成一定形式 的中间语言代码,如三元式或四元式。 中间代码优化程序:为了产生高质量的目标代码,对中间代码进行等价变换处理。 盛威网(www.snwei.com)专业的计算机学习网站1 《编译原理课后答案第一章 目标代码生成程序:将优化后的中间代码程序转换成目标代码程序。 表格管理程序:负责建立、填写和查找等一系列表格工作。表格的作用是记录源程序的 各类信息和编译各阶段的进展情况,编译的每个阶段所需信息多数都从表格中读取,产生的 中间结果都记录在相应的表格中。可以说整个编译过程就是造表、查表的工作过程。需要指 出的是,这里的“表格管理程序”并不意味着它就是一个独立的表格管理模块,而是指编译 程序具有的表格管理功能。 错误处理程序:处理和校正源程序中存在的词法、语法和语义错误。当编译程序发现源 程序中的错误时,错误处理程序负责报告出错的位置和错误性质等信息,同时对发现的错误 进行适当的校正(修复),目的是使编译程序能够继续向下进行分析和处理。 注意:如果问编译程序有哪些主要构成成分,只要回答六部分就可以。如果搞不清楚, 就回答八部分。 第 3  何谓翻译程序、编译程序和解释程序?它们三者之间有何种关系? 答案: 翻译程序是指将用某种语言编写的程序转换成另一种语言形式的程序的程序,如编译程 序和汇编程序等。 编译程序是把用高级语言编写的源程序转换(加工)成与之等价的另一种用低级语言编 写的目标程序的翻译程序。 解释程序是解释、执行高级语言源程序的程序。解释方式一般分为两种:一种方式是, 源程序功能的实现完全由解释程序承担和完成,即每读出源程序的一条语句的第一个单词, 则依据这个单词把控制转移到实现这条语句功能的程序部分,该部分负责完成这条语句的功 能的实现,完成后返回到解释程序的总控部分再读人下一条语句继续进行解释、执行,如此 反复;另一种方式是,一边翻译一边执行,即每读出源程序的一条语句,解释程序就将其翻 译成一段机器指令并执行之,然后再读人下一条语句继续进行解释、执行,如此反复。无论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值