编译原理复习整理(重点含答案)

合集下载

编译原理习题及答案(整理后)

编译原理习题及答案(整理后)

第一章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.中间代码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、编译程序各阶段得工作都涉及到。

a.语法分析b.表格管理c.出错处理d.语义分析e.词法分析2、编译程序工作时,通常有阶段。

a.词法分析b.语法分析c.中间代码生成d.语义检查e.目标代码生成三、填空题1、解释程序与编译程序得区别在于。

2、编译过程通常可分为5个阶段,分别就是、语法分析、代码优化与目标代码生成。

3、编译程序工作过程中,第一段输入就是,最后阶段得输出为程序。

4、编译程序就是指将程序翻译成程序得程序。

单选解答1、将编译程序分成若干个“遍”就是为了使编译程序得结构更加清晰,故选b。

2、构造编译程序应掌握源程序、目标语言及编译方法等三方面得知识,故选d。

3、对编译而言,变量既持有左值又持有右值,故选c。

4、编译程序打交道最多得就就是各种表格,因此选d。

5、目标代码包括汇编指令代码、可重定位指令代码与绝对指令代码3种,因此不就是目标代码得只能选d。

最新编译原理复习题及答案

最新编译原理复习题及答案

编译原理复习题及答案一、选择题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、给出下面语言的相应文法。

L1={a n b n c i|n≥1,i≥0}从n,i的不同取值来把L1分成两部分:前半部分是anbn:A→aAb|ab后半部分是ci:B→Bc|ε所以整个文法G1[S]可以写为:G1(S):S→AB ;A→aAb|ab ;B→cB|ε3、构造一个DFA,它接受 ={a,b}上所有包含ab的字符串。

(要求:先将正规式转化为NFA,再将NFA确定化,最小化)4、对下面的文法G:E →TE’ E’→+E|ε T →FT’ T’→T|εF →PF’ F’ →*F’|ε P →(E)|a|b|∧(1)证明这个文法是LL(1)的。

(2)构造它的预测分析表。

(1)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,^,+,),#} (2)考虑下列产生式:'→+'→'→'→E E T T F F P E a b ||*|()|^||εεεFIRST(+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)文法. (3)+ * ( ) a b ^ # EE TE →'E TE →' E TE →' E TE →'E' '→+E E'→E ε'→E εTT F T →' T F T →' T F T →' T F T →' T' '→T ε'→T T '→T ε '→T T '→T T '→T T '→T εFF P F →'F P F →' F P F →' F P F →'F' '→F ε '→'F F * '→F ε '→F ε '→F ε '→F ε '→F ε '→F εPP E →() P a → P b → P →^5、考虑文法: S →AS|b A →SA|a (1)列出这个文法的所有LR(0) 项目。

编译原理复习题有答案

编译原理复习题有答案

编译原理复习题有答案编译原理复习题及答案一、选择题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. 论述编译原理中的错误处理机制。

答案:编译原理中的错误处理机制主要包括错误检测、错误恢复和错误报告。

错误检测是指在编译过程中识别出源代码中的语法或语义错误;错误恢复是指在检测到错误后,编译器采取的措施以继续编译过程,避免因单个错误而中断整个编译;错误报告则是向程序员提供错误信息,帮助其定位和修复错误。

编译原理复习重点含答案

编译原理复习重点含答案

编译原理复习重点含答案编译原理复习重点编译原理是计算机科学中的一门重要课程,它研究的是如何将高级语言程序转化为机器语言的过程。

在编译原理的学习中,我们需要掌握一些重要的概念和技术,以便能够理解和应用编译器的工作原理。

本文将重点介绍编译原理的几个重要主题,并提供相应的答案供参考。

一、词法分析词法分析是编译器的第一个阶段,它的任务是将输入的字符序列划分为一个个有意义的词素(token)。

词法分析器通常使用有限自动机(DFA)来实现,其工作原理是将输入字符序列逐个读入,并根据事先定义好的词法规则进行匹配和识别。

常见的词法单元包括关键字、标识符、常量、运算符等。

常见的词法规则包括:1. 关键字:例如if、while、for等。

2. 标识符:由字母、数字和下划线组成,且以字母或下划线开头。

3. 常量:包括整数常量、浮点数常量、字符常量和字符串常量等。

4. 运算符:例如加法运算符+、减法运算符-等。

5. 分隔符:例如逗号、分号等。

词法分析的结果是一个个词法单元,每个词法单元包含一个词素和对应的词法单元类型。

例如,对于输入程序"int a = 10;",词法分析的结果可能是[("int", "关键字"), ("a", "标识符"), ("=", "运算符"), ("10", "整数常量"), (";", "分隔符")]。

二、语法分析语法分析是编译器的第二个阶段,它的任务是将词法分析器输出的词法单元序列转化为抽象语法树(AST)。

语法分析器通常使用上下文无关文法(CFG)来描述语言的语法结构,并使用递归下降、LL(1)分析、LR分析等算法进行分析。

常见的语法规则包括: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) 可以较好地反映句子的结构。

编译原理复习题目集答案

编译原理复习题目集答案

编译原理复习题⽬集答案第4章词法分析重点内容:正规式转化为DFAa、正规式->NFAb、NFA -> DFA(⼦集法)c、DFA化简(分割法)题⽬1:课件例题:a、为R=(a|b)*(aa|bb)(a|b)*构造NFAb、从NFA构造DFA的算法c、化简题⽬2:4.7 例1:构造正规式相应的DFA:1(0|1)*101按照以下三步:(1)由正规表达式构造转换系统(NFA)(2)由转换系统(NFA)构造确定的有穷⾃动机DFA(3)DFA的最⼩化答:(1)构造与1(0|1)*101等价的NFA(2)将NFA转换成DFA:采⽤⼦集法,即DFA的每个状态对应NFA的⼀个状态集合:除X,A外,重新命名其他状态:1、将M 的状态分成⾮终态和终态集{X,A,B,C}和{D}。

2、寻找⼦集中不等价状态{X,A,B,C}=>{X},{A,B}{C}=>{X}{A}{B}{C},⽆需合并。

最后⽣成DFA :题⽬3:⾃习、书本练习4.7,参考答案见《z4 书本练习4.7.doc 》已知⽂法G[S]:S →aA|bQ A →aA|bB|b B →bD|aQ Q →aQ|bD|b E →aB|bF F →bD|aE|b 1、构由于不可到达,去除E 、F 相关的多余产⽣式2、由新的G[S]构造NFA 如下5、使⽤分割法化简以上DFA G:5.1 令G={(0,1,3,4,6),(2,5)}// 分别为⾮终态和终态集5.2 由{0,1,3,4,6}a={1,3},{0,1,3,4,6}b={3,2,5,6,4}将{0,1,3,4,6}划分为 {0,4,6}{1,3},得G={(0,4,6),(1,3),(2,5)}5.3 由{0,4,6}b={3,6,4},将之划分为{0},{4,6},得G={(0),(4,6),(1,3),(2,5)}5.4 观察后,G中状态不可再分,为最⼩化DFA。

6、分别⽤ 0,4,1,2代表各状态,DFA状态转换图如下:造相应的最⼩的DFA第5章⾃顶向下的语法分析重点内容:LL(1)⽂法a、去除左递归b、LL(1)⽂法的判定(first、follow、select集)c、预测分析表d、使⽤栈和预测分析表对输⼊串的分析题⽬1:课件例题:消除左递归+判定+分析算术表达式⽂法GE→E+T│TT→T*F│FF→(E)│Id、分析输⼊串i+i*i#(1)消除G的左递归得到⽂法G‘E→TE 'E'→+TE'│εT→FT 'T'→*FT'│εF→(E)│i(2)求出每个产⽣式的select集,G’是LL(1)⽂法SELECT(E→TE' ) = { (,i }SELECT(E'→+TE' ) = { + } SELECT(E'→ε ) = { ),# }SELECT(T→FT' ) = { (,i } SELECT(T'→*FT' ) = { * }SELECT(T'→ε ) = { +,),# } SELECT(F→(E) ) = { ( }SELECT(F→ i ) = { i }(3)依照选择集合把产⽣式填⼊分析表注:表中空⽩处为出错题⽬2:作业、习题5.1:消除左递归+判定+分析G[S]:S->a|^|(T) T->T,S|Sd、分析输⼊串(a,a)#⽂法G[S]:S->a|^|(T),T->T,S|S(1)给出对(a,(a,a))的最左推导(2)改写⽂法,去除左递归(3)判断新⽂法是否LL1⽂法,如是,给出其预测分析表(4)给出输⼊串(a,a)#的分析过程,判断其是否⽂法G的句⼦。

《编译原理》复习题(看完必过)

《编译原理》复习题(看完必过)

《编译原理》复习题(看完必过)一、单项选择题1.将编译程序分成若干个“遍”是为了( B )A.提高程序的执行效率B. 使程序的结构更加清晰C.利用有限的机器内存并提高机器的执行效率D.利用有限的机器内存但降低了机器的执行效率2.不可能是目标代码的是( D )A.汇编指令代码 B.可重定位指令代码C.绝对指令代码 D.中间代码3.词法分析器的输入是( B )A.单词符号串 B.源程序C.语法单位 D.目标程序4.中间代码生成时所遵循的是( C )A.语法规则 B.词法规则C.语义规则 D.等价变换规则5.编译程序是对( D )A.汇编程序的翻译 B.高级语言程序的解释执行C.机器语言的执行 D.高级语言的翻译6.词法分析应遵循( C )A.语义规则 B.语法规则C.构词规则 D.等价变换规则7.词法分析器的输出结果是( C )A.单词的种别编码 B.单词在符号表中的位置C.单词的种别编码和属性值 D.单词属性值8.正规式M1和M2等价是指( C )A.M1和M2的状态数相等 B.M1和M2的有向弧条数相等C.M1和M2所识别的语言集相等 D.M1和M2状态数和有向弧条数相等9.词法分析器作为独立的阶段使整个编译程序结构更加简洁、明确,因此,( B ) A.词法分析器应作为独立的一遍B.词法分析器作为子程序较好C.词法分析器分解为多个过程,由语法分析器选择使用.D.词法分析器并不作为一个独立的阶段10.如果L(M1)=L(M2),则M1与M2( A )A .等价B .都是二义的C .都是无二义的D .它们的状态数相等 11.文法G :S →xSx|y 所识别的语言是( C )A .xyxB .(xyx)* c .x n yx n (n ≥0) d .x *yx *12.文法G 描述的语言L(G)是指( A ) A.⎭⎬⎫⎩⎨⎧∈⇒=+*,|)(T V S G L αααB .⎭⎬⎫⎩⎨⎧⋃∈⇒=+*)(,|)(N T V V S G L ααα C .⎭⎬⎫⎩⎨⎧∈⇒=**,|)(T V S G L αααD .⎭⎬⎫⎩⎨⎧⋃∈⇒=**)(,|)(N T V V S G L ααα 13.有限状态自动机能识别( C )A .上下文无关文法B .上下文有关文法C .正规文法D .短语文法14.如果文法G 是无二义的,则它的任何句子( A ) A .最左推导和最右推导对应的语法树必定相同 B .最左推导和最右推导对应的语法树可能不同 C .最左推导和最右推导必定相同D .可能存在两个不同的最左推导,但它们对应的语法树相同 15.由文法的开始符经0步或多步推导产生的文法符号序列是( C ) A .短语 B .句柄 C .句型 D .句子 16.文法G :E →E+T|T T →T*P|P P →(E)|i则句型P+T+i 的句柄为( B )A .P+TB .PC .P+T+iD .i 17.文法G :S →b|∧|(T) T →T ∨S|S 则FIRSTVT(T)=( C )A .{ b ,∧,( }B .{ b ,∧,) }C .{ b ,∧,(,∨ }D .{ b ,∧,),∨ } 18.产生正规语言的文法为( D )A .0型B .1型C .2型D .3型19.任何算符优先文法( D )优先函数。

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

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

L1={a n b n c i|n≥1,i≥0}从n,i的不同取值来把L1分成两部分:前半部分是anbn:A→aAb|ab后半部分是ci:B→Bc|ε所以整个文法G1[S]可以写为:G1(S):S→AB ;A→aAb|ab ;B→cB|ε3、构造一个DFA,它接受 ={a,b}上所有包含ab的字符串。

(要求:先将正规式转化为NFA,再将NFA确定化,最小化)4、对下面的文法G:E →TE’ E’→+E|ε T →FT’ T’→T|εF →PF’ F’ →*F’|ε P →(E)|a|b|∧(1)证明这个文法是LL(1)的。

(2)构造它的预测分析表。

(1)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,^,+,),#} (2)考虑下列产生式:'→+'→'→'→E E T T F F P E a b ||*|()|^||εεεFIRST(+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)文法. (3)+ * ( ) a b ^ # EE TE →'E TE →' E TE →' E TE →'E' '→+E E'→E ε'→E εTT F T →' T F T →' T F T →' T F T →' T' '→T ε'→T T '→T ε '→T T '→T T '→T T '→T εFF P F →'F P F →' F P F →' F P F →'F' '→F ε '→'F F * '→F ε '→F ε '→F ε '→F ε '→F ε '→F εPP E →() P a → P b → P →^5、考虑文法: S →AS|b A →SA|a (1)列出这个文法的所有LR(0) 项目。

0.'→⋅S S 1.'→⋅S S 2.S AS →⋅ 3.S A S →⋅ 4.S AS →⋅ 5.S b →⋅ 6.S b →⋅7.A SA →⋅8.A S A →⋅ 9.A SA →⋅ 10.A a →⋅ 11.A a →⋅ (2)给出识别文法所有活前缀的DFA 。

S A εSε ε ε ε aε ε εA S ε εb确定化:S A a b {0,2,5,7,10} {1,2,5,7,8,10} {2,3,5,7,10} {11} {6} {1,2,5,7,8,10} {2,5,7,8,10} {2,3,5,7,9,10} {11} {6} {2,3,5,7,10} {2,4,5,7,8,10} {2,3,5,7,10} {11} {6} {2,5,7,8,10} {2,5,7,8,10} {2,3,5,7,9,10} {11} {6} {2,3,5,7,9,10} {2,4,5,7,8,10} {2,3,5,7,10} {11} {6} {2,4,5,7,8,10}{2,5,7,8,10}{2,3,5,7,9,10}{11} {6} {11} φ φ φ φ {6} φφφφ0 15 7 61 112 3 48 9A SS A abS a A S b S A b a AA Sba ab b aDFA6、设有文法:P →P+Q|Q Q →Q*R|R R →(P)|i(1)证明Q*R+Q+Q 是它的一个句型。

(3分) P=>P+Q=>P+Q+Q=>Q+Q+Q=>Q*R+Q+Q(2)给出Q*R+Q+Q 的所有短语,直接短语和句柄。

(4分) 短语: Q*R,Q*R+Q,Q*R+Q+Q 直接短语: Q*R 句柄: Q*R (3)给出句子i+i*i的最右推导。

(4分) (4)给出句子i+i*i的最左推导。

(4分)7、设有文法:E →E+T|T T →T*F|F F →(E)|i(1)证明E+T*F 是它的一个句型。

(3分)E E T E T F ⇒+⇒+* (2)给出E+T*F 的所有短语,直接短语和句柄。

(4分)短语: E+T*F, T*F, 直接短语: T*F 句柄: T*F(3)给出句子i+i*i的最右推导。

(4分)0:'→⋅S SS AS →⋅ S b →⋅ A SA →⋅ A a →⋅ 4:S A S →⋅ S AS →⋅ S b →⋅A SA →⋅ A a →⋅ 3:'→⋅S SA S A →⋅ A SA →⋅ A a →⋅ S AS →⋅S b →⋅2:S b →⋅1:A a →⋅ 5:A S A →⋅ S AS →⋅ S b →⋅A SA →⋅ A a →⋅ 6:A SA →⋅S A S →⋅S AS →⋅ S b →⋅A SA →⋅A a →⋅7:S AS →⋅ A S A →⋅S AS →⋅ S b →⋅A SA →⋅A a →⋅11、构造下面正规式相应的DFA1(0|1)*10114、对下面的文法G:Expr→- Expr Expr→(Expr)|Var ExprTail ExprTail→- Expr|εVar→id VarTail VarTail→(Expr) |ε(1)构造LL(1)分析表。

(12分)(2)给出对句子id—id((id))的分析过程。

(8分)16、已知文法G[S] 为: S ->a|^|(T) T ->T,S|S①消除文法G[S]中的左递归,得文法G ´[S]。

ε|,)(||^)(T S T T S T T a S S G '→''→→'② 文法G ´[S]是否为LL(1)的?若是,给出它的预测分析表。

FIRST(S)={a,^,(} FIRST(T)={a,^,(} FIRST()={,,} FOLLOW(S)={),,,#} FOLLOW(T)={)} FOLLOW()={)}预测分析表a^() , # ST是LL(1)文法17、对下面的文法G:S → S ∨ a T | a T | ∨ a T T → ∧ a T | ∧ a (1) 消除该文法的左递归和提取左公因子;构造各非终结符的FIRST 和FOLLOW 集合;'T ε'T S a →S →^S T →()T ST →'T ST →'T ST →''T '→T ε'→'T ST ,18、文法G(S)及其LR分析表如下,请给出串baba#的分析过程。

(1) S → DbB(2) D → d(3) D →ε(4) B → a(5) B → Bba(6) B →εLR分析表2、写出表达式a=b*c+b*d对应的逆波兰式、四元式序列和三元式序列。

答:逆波兰式: abc*bd*+:=四元式序列:三元式序列: OP ARG1 ARG2 (1) (*, b, c, t1) (1) (* b, c )(2) (*, b, d, t2) (2) (* b, d )(3) (+, t1, t2,t3) (3) (+ (1), (2))(4) (:=, t3, /, a) (4) (:= (3), a)八、语义分析题1、将语句if ((A<0) (B>0)) then while (C>0) do C:=C-D翻译成四元式答案:100 (j<,A,0,104)101 (j,-,-,102)102 (j>,B,0,104)103 (j,-,-,109)104 (j>,C,0,106)105 (j,-,-,109)106 (-,C,D,T1)107 (:=,T1,-,C)108 (j,-,-,104)1092、写出下面语句经语法制导翻译后所生成的四元式代码序列。

if x<y then while e>c do c:=c+1 else x:=x+5答案:假设初始为100,则四元式代码序列为100 if x<ygoto 102101 goto 107102 if e>c goto 104 103 goto 109104 M:=C+ 1105 C:=M106 goto 102107 N:=X+ 5108 X:=N1098、写出表达式a+b*(c-d)对应的逆波兰式和三元式序列。

答案:逆波兰式:(abcd-*+)三元式序列:OP ARG1 ARG2(1) - c d(2) * b (1)(3) + a (2)1.编译程序是对高级语言程序的解释执行。

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

(×)3.一个算符优先文法可能不存在算符优先函数与之对应。

(√ )4.语法分析时必须先消除文法中的左递归。

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

(√) 6.逆波兰表示法表示表达式时无须使用括号。

(√ )7.静态数组的存储空间可以在编译时确定。

(×)8.进行代码优化时应着重考虑循环的代码优化,这对提高目标代码的效率将起更大作用。

(×)9.两个正规集相等的必要条件是他们对应的正规式等价。

(× )10.一个语义子程序描述了一个文法所对应的翻译工作。

相关文档
最新文档