编译原理复习(有答案)

合集下载

编译原理试题及答案

编译原理试题及答案

编译原理试题及答案一、选择题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.用高级语言编写的程序经编译后产生的程序叫(B)A.源程序 B.目标程序C.连接程序D.解释程序12.(C)不是编译程序的组成部分。

A.词法分析程序B.代码生成程序C.设备管理程序D.语法分析程序13.通常一个编译程序中,不仅包含词法分析,语法分析,语义分析,中间代码生成,代码优化,目标代码生成等六个部分,还应包括(C)。

A.模拟执行器B.解释器 C.表格处理和出错处理D.符号执行器14.源程序是句子的集合,(B)可以较好地反映句子的结构。

A. 线性表B. 树C. 完全图D. 堆栈15.词法分析器的输出结果是(D)。

A、单词自身值B、单词在符号表中的位置C、单词的种别编码D、单词的种别编码和自身值16.词法分析器不能(D)A. 识别出数值常量B. 过滤源程序中的注释C. 扫描源程序并识别记号D. 发现括号不匹配17.文法:G:S→xSx | y所识别的语言是(D)。

编译原理复习题有答案

编译原理复习题有答案

编译原理复习题有答案编译原理复习题及答案一、选择题1. 编译器的主要功能是什么?A. 代码格式化B. 代码优化C. 将源代码转换为机器码D. 错误检测和修复答案:C2. 词法分析阶段的主要任务是什么?A. 语法分析B. 语义分析C. 识别源程序中的词法单元D. 代码生成答案:C3. 下列哪个不是编译原理中的常见数据结构?A. 栈B. 队列C. 哈希表D. 链表答案:D4. 语法分析通常采用哪种方法?A. 递归下降分析B. 动态规划C. 贪心算法D. 深度优先搜索答案:A5. 代码优化的目的是什么?A. 增加程序长度B. 减少程序运行时间C. 提高程序的可读性D. 增加程序的复杂性答案:B二、简答题1. 简述编译过程的主要阶段。

答案:编译过程主要分为四个阶段:词法分析、语法分析、语义分析和代码生成。

词法分析负责将源代码分解成词法单元;语法分析构建语法树,检查源代码的语法结构;语义分析检查程序的语义正确性;代码生成将源代码转换成目标代码或机器码。

2. 什么是自底向上的语法分析方法?答案:自底向上的语法分析方法是一种从叶子节点开始,逐步向上构建语法树的方法。

它通常使用移进-归约分析技术,通过将输入符号与栈顶符号进行匹配,不断地将它们归约成非终结符,直到整个输入被归约为起始符号。

3. 请解释什么是中间代码,并说明其作用。

答案:中间代码是一种介于源代码和目标代码之间的代码形式,通常用于代码优化和目标代码生成。

它具有高级语言的可读性,同时又能表达程序的控制流和数据流信息。

中间代码使得编译器可以在不同的阶段对程序进行优化,提高程序的执行效率。

三、论述题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.BASIC B.C C.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)上。

编译原理试题及答案

编译原理试题及答案

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

编译原理复习题有答案版

编译原理复习题有答案版

1、给出下面语言的相应文法。

L1={a n b n c i|n≥1,i≥0}答案:S→AB|BA→a|aAB→bBc|bc2.给出下面语言的相应文法L1={a n b n c m d m| m,n≥1,n为奇数,m为偶数}。

答案:文法G(S):S→ACA→aaAbb/abC→ccCcc/cc3、构造一个DFA,它接受 ={a,b}上所有包含ab的字符串。

(要求:先将正规式转化为NFA,再将NFA确定化,最小化)(一)相应的正规式为(a|b)*ab(a|b)*(二)①与此正规式对应的NFA为答案;在自己写的纸上4、对下面的文法G:E→TE’E’→+E|εT→FT’T’→T|εF→PF’F’→*F’|εP→(E)|a|b|∧(1)证明这个文法是LL(1)的。

考虑下列产生式:E’ ->E|εT’ ->T|εF’ ->*F’ |εP ->(E) |∧a|bFIRST(+E)∩FIRST(ε)={+}∩{ε}=φFIRST(+E)∩FOLLOW(E')={+}∩{#,)}=φFIRST(T)∩FIRST(ε)={(,a,b,^}∩{ε}=φFIRST(T)∩FOLLOW(T')={(,a,b,^}∩{+,),#}=φFIRST(*F')∩FIRST(ε)={*}∩{ε}=φFIRST(*F')∩FOLLOW(F')={*}∩{(,a,b,^,+,),#}=φFIRST((E))∩FIRST(a) ∩FIRST(b) ∩FIRST(^)=φ所以,该文法式LL(1)文法.计算这个文法的每个非终结符的FIRST和FOLLOW。

(8分)答案:FIRST(E)={(,a,b,^}FIRST(E')={+,ε}FIRST(T)={(,a,b,^}FIRST(T')={(,a,b,^,ε}FIRST(F)={(,a,b,^}FIRST(F')={*,ε}FIRST(P)={(,a,b,^}FOLLOW(E)={#,)}FOLLOW(E')={#,)}FOLLOW(T)={+,),#}FOLLOW(T')={+,),#}FOLLOW(F)={(,a,b,^,+,),#}FOLLOW(F')={(,a,b,^,+,),#}FOLLOW(P)={*,(,a,b,^,+,),#}(3)构造它的预测分析表。

编译原理复习题一(含答案)

编译原理复习题一(含答案)

一、单选题(每题2分,共20分)1. 编译器的()阶段可将源程序的字符流收集到若干记号中。

A. 语法分析B. 语义分析C. 代码生成D. 词法分析2. 文法A aA | b属于正则文法,正则文法在乔姆斯基层次中对应于()文法。

A. 1型B. 2型C. 3型D. 0型3. 某C语言源代码文件包含#include <stdio.h>,()将对源代码进行处理,把文件stdio.h 包含进去。

A.编译器B.解释器C.汇编器D.预处理器4. LL(1)文法的充要条件是()。

A.对于文法中的每条产生式Uα1|α2|…|αn,要求FIRST(αi)∩FIRST(αj)=Φ(i≠j)B.该文法对应的LL(1)分析表中每个项目最多只有一条产生式。

C.A和BD.都不是5. 以下说法中正确的是()。

A.任何语言都可以描述为一个正则表达式。

B.对于任何一个NFA M,都存在一个DFA M’,满足L(M)= L(M’)。

C.任何一个DFA只有一个终态。

D.NFA的弧上标记只含输入字母表中的元素。

6.合成属性的计算可以通过对语法树进行()遍历进行。

A. 前序B.中序C.后序D.任意7.乔姆斯基的2型文法是这样一种语言,其产生式限制为()。

A. α->βB. P->βC. P->a或P->aβD. αPγ->αβγ8. 正则式的“*”读作()。

A. 并且B.连接C.正则闭包D.闭包9. 编译程序中的语义分析器接受以()为单位的输入,并产生信息供以后各阶段使用。

A. 语法树B.子程序C.单词D.语句10.文法A->aAb|ab生成的语言是()。

A. {ab}B.{aAb}C. {anbn|n≥1}D.{anbn|n≥0}二、判断题(每题2分,共10分,对的打√,错的打×)1. 一个LR(0)文法一定是SLR(1)文法。

()2. 在类型声明文法中,类型属性type是继承属性。

编译原理考试题及答案

编译原理考试题及答案

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

素和 FIRST(Yi)都包含在 FIRST(X)中 (e) 当 (d) 中 所 有 Yi 则 ∪FIRST(Yn)∪{} 计算 FOLLOW(A): (a) 设 S 为文法中开始符号,把{#} 加入 FOLLOW(S)中(这里“#”为句子括号)。 (b) 若 A→ B 是 一 个 产 生 式 , 则把 FIRST()的非空元素加入 FOLLOW(B)中。 如果 FOLLOW(B)中。 计算 SELECT(A->): A→, A∈VN, ∈V ,
DFA 的状态图:

正规式与 NFA 的相互转换
例:构造正规式 1(0|1)*101 相应的 DFA 答:先构造 NFA:
生 式 X→Y1Y2…Yn; 当 Y1Y2…Yi-1 都 时 ,( 其 中 1≤i≤n),

则 FIRST(Y1) 、
FIRST(Y2) 、 … 、 FIRST(Yi-1) 的所有非 { } 元
*
各候选式的 FIRST 集,各非终结符的 FOLLOW 集 为 .产 生 式 S→ PS' S'→ aPS' → fS' → P→ qP' P' → bP {b} {a,f,#}
, (i=1, 2, …n),
FIRST(X)=FIRST(Y1) ∪ FIRST(Y2) ∪ …
SELECT FOLLOW 集 {q} {a} {f} {#} {q} {a,f,#} 集 {#} {#}
第六章 自底向上优先分析 算符文法的定义 如果不含空产生式的上下文无关文法 G 中没有形如 A…BC…的产生式, 其中 B, C ∈VN,则称 G 为算符文法(OG) 。 最左素短语的概念 设有文法 G[S],其句型的素短语是一个短 语,它至少包含一个终结符,且除自身外 不再包含其他素短语。处于句型最左边的 素短语为最左素短语 例: 给定文法 G 如下: E→E+T|T; T→T*F|F; F→P↑F|P;P→(E)|i 句型 P*P+i 的最左素短语为( A ) 。 A. P*P ; C. P+i; 第七章 LR 分析 LR(K)的含义 D. P*P+i B. P ;
例: (
A. 词法分析器; C. 语法分析程序; 4. 遍的概念
对源程序(或其中间形式)从头至尾扫描一次并进行 有关加工处理,生成新的中间形式或最终目标程序, 称为一遍。 5. 编译程序与解释程序的区别 D ) 。 B. 对用户程序的差 例:解释程序和编译程序是两类程序语言处理程序, 它们的主要区别在于( 错能力 C. 机器执行效率 码 第三章文法和语言 文法的概念 字母表、符号串和集合的概念及运算 例:(ab|b) c 与下面的那些串匹配?( ACD )

L R K 号
从左至右扫描输入符号串 构造一个最右推导的逆过程 向右顺序查看输入串的 K 个符
状态 (State) a
Action Goto d #
LR 分析器的逻辑结构及活前缀等概念 LR 分析对文法的要求 构造 LR(0)分析表、SLR(1)分析表 用 SLR 分析法分析非二义性的文法和二义性 的文法。 例:已知文法 A→aAd|aAb| 判断该文法是否是 SLR(1)文法,若是构造 相应分析表,并对输入串 ab#给出分析过 程。 答:文法: A→aAd|aAb|ε 拓广文法为 G′,增加产生式 S′→A 若产生式排序为: 0 1 2 3 S' →A A →aAd A →aAb A →ε 0 1 2 3 4 5
例:已知文法 G[S] S→aB|bA A→a|aS|bAA B→aBB|bS|b 句型 aabbAb 的句柄是( D ) A.a 第四章 词法分析 词法输出的 token 表示法 词法记号、模式、词法单元的概念 词法输出的 token 表示 : 二元式表 示(单词种别,单词自身的值) 例:扫描器的任务是从 别出一个个 单词 。 正规式的概念及其代数性质 源程序 中识 B.ab C.b D.bA
∪FOLLOW(A) 例: 文法: S→iCtS|iCtSeS|a, C→b 中 first(S) 为( A ) ,follow(S)为( B ) 。 A. {i,a}; C. {i,e,#}; LL(1)文法的条件 例:LL(1)文法的条件是___C___。 A. B. 若 C. 对形如 U::=x1 | x2 | … | xn 的规则, 对形如 U::=x1 | x2 | … | xn 的规则, xi=>* , a 和 b 则 要 求 First(xj)∩ 要求 First(xi)∩ First(xj)=,(i≠j); B. {e,#}; D. {e,b}
Follow(U)=,(i≠j) D. 都不是 构造 LL(1)分析表 S → SaP | Sf | P P → qbP | q 将 G[S] 改造成 LL(1)文法, 并给出 LL(1) 分析表。 答:改造后的文法: S → PS' S' → aPS'| fS' | P → qP' P' → bP | 例:已给文法 G[S] :
则把 FOLLOW(A) 也加入
若 若
,则 SELECT(A→)=FIRST() ,则 SELECT(A→)=(FIRST()-{})
→ { a,f,#} LL(1) 分析表为 a S S' P P' bP aPS' fS' qP' b f q PS' #
QUZ VZ QUZ 重新命名状态子集,令 VQ 为 A、QU 为 B、VZ 为 C、V 为 D、QUZ 为 E、Z 为 F。 . S A B C D E F 0 A C D F F C F 1 B B E F . E F
DFA 的状态图::
第五章 自顶向下语法分析方法 语法分析常用的方法是__B___。 ① 自顶向下 ④ 自右向左 A.①②③④ D.①②③ 会求 FIRST、FOLLOW 集 计算 FIRST(X): (a) 若 X∈VT, 则 FIRST(X)={X} (b) 若 X∈ VN, 且有产生式 X→a…, a∈ VT, 则 a∈FIRST(X) (c) 若 X∈VN, X→, 则∈FIRST(X) (d) 若 X ∈ VN, Y1, Y2, …, Yi ∈ VN, 且有产 B.①② C.③④ ② 自底向上 ③ 自左向右
例:令文法 G[E]为:
xyyxyxyxxy
用子集法将 NFA 确定化 . NFA 和 DFA 的相互转换 例:将下图确定化: X A 0 . 1 A
A AB
AB AC AB AC A ABY ABY AC AB 除 X,A 外,重新命名其他状态,令 AB 为 B、AC 答:用子集法将 NFA 确定化: . 0 1 S VQ QU VQ VZ QU QU V QUZ VZ Z V Z Z Z Z . Z 为 C、ABY 为 D,因为 D 含有 Y(NFA 的终态), 所以 D 为终态。 . X A B C D 0 . A C A C 1 A B B D B
词法分析中的单词符号的描述工具 正规式代表的集合 例: 请描述下面正规式定义的串,字母表 S = {0, 1}。 1(0|1)*0 答:必须以 1 开头 0 结尾的串 例:为下边所描述的串写正规式,字母表是 {0, 1}。 以 01 结尾的所有串 答:(0|1)*01 正规文法和正规式相互转换 正规文法到正规式的转换规则: 正规文法 A xB, B y A=xy A xA y A=xy A x, A y A=xy 例:给出下述文法所对应的正规式: S→0A|1B A→1S|1 B→0S|0 答: S->0A | 1B ->01S | 01 | 10S | 10 ->(01|10)S | (01|10) -> (01|10) (01|10)* (01|10) (01|10)* NFA 和 DFA NFA 和 DFA 的组成 例:指出哪些串是自动机可接受的 (②④) xy ② xyxxy ③ yyyx ④ 即 : r= 转换成: 转换成: 正规式 转换成:
例:文法 S→abC|c,bC→d 是几型文法?0 型 例:文法 S→abC,bC→ad 是几型文法?1 型 例: 文法 G[A]: A→, A→aB, B→Ab, B→a 是几型文法?2 型 例:文法 S→a|bC , C→d 是几型文法? 3
型 最左(右)推导 规范推导 :最右推导被称为规范推导 规范句型 :由规范推导所得的句型称为规范句型 规范归约:左归约为规范归约 二义性 二义的 。 例:如果一个文法存在某个句子对应两棵不同的语 法树,则称这个文法是 ( 例 : 已 知 文 法 G1 : P->PaP|PbP|cP|Pe|f , G1 是 A ) 。 A 二义文法;B 无二义的 例:证明下述文法 G[<表达式>]是二义的。 < 表达式>→a|(< 表达式>)|<表达式>< 运算符>< 表达 式> <运算符>→+|-|*|/ 答:可为句子 a+a*a 构造两个不同的最右推导: 最右推导 1 〈表达式〉 〈表达式〉 〈运算符〉 〈表达式〉 〈表达式〉 〈运算符〉a 〈表达式〉* a 〈表达式〉 〈运算符〉 〈表达式〉* a 〈表达式〉 〈运算符〉a * a 〈表达式〉+ a * a a+a*a 最右推导 2 〈表达式〉 〈表达式〉 〈运算符〉 〈表达式〉 〈表达式〉 〈运算符〉 〈表达式〉 〈运算符〉 〈表 达式〉 〈表达式〉 〈运算符〉 〈表达式〉 〈运算符〉 a 〈表达式〉 〈运算符〉 〈表达式〉 * a 〈表达式〉 〈运算符〉a * a 〈表达式〉+ a * a a+a*a 短语、句柄、直接短语 E->E+T|E-T T->T*F|T/F|F F->(E)|i 证明 E+T*F 是它的一个句型 , 指出这个句型的所有 短语、直接短语和句柄。
相关文档
最新文档