编译原理和技术期末考试复习题
编译原理期末考试试题及答案

编译原理期末考试试题及答案一、选择题(每题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. 静态作用域规则是指变量的作用域在编译时确定,而动态作用域规则是指变量的作用域在运行时确定。
编译原理期末复习题

编译原理期末复习题(包含上一份N多答案)(总28页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--编译原理复习题一、填空题:1、编译方式与解释方式的根本区别在于(是否生成目标代码)。
2、对编译程序而言,输入数据是(源程序),输出结果是(目标程序)。
3、如果编译程序生成的目标程序是机器代码程序,则源程序的执行分为两大阶段:(编译阶段)和(运行阶段)。
4、如果编译程序生成的目标程序是汇编语言程序,则源程序的执行分成三个阶段:(编译阶段)、(汇编阶段)和(运行阶段)。
5、自顶向下语法分析方法会遇到的主要问题有(回溯)和((左递归带来的)无限循环)。
6、LL(k)分析法中,第一个L的含义是(从左到右进行分析),第二个L的含义是(每次进行最左推导),“k”的含义是(向输入串中查看K个输入符号)。
7、LL(1)分析法中,第一个L的含义是(从左到右进行分析),第二个L的含义是(每次进行最左推导),“1”的含义是(向输入串中查看1个输入符号)。
8、自顶向下语法分析方法的基本思想是:从(识别符号)出发,不断建立(直接推导),试图构造一个推导序列,最终由它推导出与输入符号相同的(符号串)。
9、自底向上语法分析方法的基本思想是:从待输入的符号串开始,利用文法的规则步步向上进行(直接归约),试图(归约)到文法的(识别符号|开始符号)。
10、LR(0)分析法的名字中,“L”的含义是(从左到右进行分析),“R”的含义是(采用最右推导的逆过程---最左归约),“0”的含义是(向貌似句柄的符号串后查看0个输入符号)。
11、LR(1)分析法的名字中,“L”的含义是(从左到右进行分析),“R”的含义是(采用最右推导的逆过程---最左归约),“1”的含义是(向貌似句柄的符号串后查看1个输入符号)。
12、SLR(1)分析法的名字中,“S”的含义是(简单的),“L”的含义是(从左到右进行分析),“R”的含义是(采用最右推导的逆过程---最左归约),“1”的含义是(向貌似句柄的符号串后查看1个输入符号)。
编译原理复习题有答案

编译原理复习题有答案编译原理复习题及答案一、选择题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.DFA和NFA的区别是什么?答:dfa与nfa的区别表现为两个方面:一是nfa可以若干个开始状态,而dfa仅只一个开始状态。
另一方面,dfa的映象m是从k×∑到k,而nfa的映象m是从k×∑到k的子集,即映象m将产生一个状态集合(可能为空集),而不是单个状态。
2、何谓优化?按所涉及的程序范围可分为哪几级优化?1)优化:对程序进行各种等效转换,以便从转换后的程序开始,生成更有效的目标代码。
(2)三个层次:局部优化、循环优化和全局优化。
3.短语、简单短语和句柄之间的关系?语法树子树的末端节点符号串既是语法树所描述与对子子树的根的短语;简单子树的标点符号串既是简单短语;最左简单子树的末端符合既是句柄。
4、语法分析的任务是什么?输入、输出分别是什么?任务是在词法分析识别出单词符号串的基础上。
分析并判定程序的语法结构是否符合语法规则;输入:源程序;输出:单词符号串。
5.静态链和动态链分别存储哪些值?为了什么?静态链是指向静态直接外层最新活动记录地址的指针,作用是用来访问非局部数据;动态链是指向调用该过程前的最新活动记录的指针。
作用是运行时使运行栈上个数据区按动态建立次序结成链。
6.综合属性和继承属性的区别是什么?它的值在语法树中的传递方向是什么?区别:综合属性用于自上而下传递信息,继承属性用于自上而下传递信息。
方向:在语法树中,一个节点的综合属性的值由其子节点的综合属性值决定;一个节点的继承属性由此节点的父节点和/或兄弟节点的属性确定的。
7.什么是优化?优化效果的两个方面是什么?对程序进行各种等价变换,使得从变化后的程序出发,能生成更有效的目标代码。
通称为优化。
①、在目标代码生成以前,对语法分析后的中间代码进行的,这类优化不依赖于具体的计算机;②、在目标代码生成时进行的,它在很大程度上依赖于具体的计算机。
8、编译程序和解释程序的区别?哪个更通用?区别:编译器是一种程序,其中源语言是高级语言,目标语言是汇编语言或机器语言的低级语言。
《编译原理》期末复习资料汇总

《编译原理》期末复习资料【题1】1.(a|b)*(aa|bb)(a|b)*画出状态转换图。
Ia Ib①1,2,3 2,3,4 2,3,5②2,3,4 2,3,4,6,7,8 2,3,5③2,3,5 2,3,4 2,,3,5,6,7,8④2,3,4,6,7,8 2,3,4,6,7,8 2,3,5,7,8⑤2,3,5,6,7,8 2,3,4,7,8 2,3,5,6,7,8⑥2,3,5,7,8 2,3,4,7,8 2,3,5,6,7,8⑦2,3,4,7,8 2,3,4,6,7,8 2,3,5,7,8Ia Ib1 2 32 4 33 2 54 4 65 7 56 7 57 4 6新的状态转换图如下:(1)A={1,2,3},B={4,5,6,7} Aa={2,4} ×(2)A={1,3},B={2},C={4,5,6,7} Aa={2}⊂B,Ab={3,5} ×(3)A={1},B={2},C={3},D={4,5,6,7}(单元素可以不用看,必有,古先看D)Da={4,7}⊂D,Db={5,6}⊂D,Aa={2}⊂B,Ab={3}⊂C,Ba={4}⊂D,Bb={3}⊂C,Ca={2}⊂B,Cb={5}⊂C,则有baA B CB D CC B DD D D2.(a*|b*)b(ba)*的状态转换图。
Ia Ib①1,2,3,4 2,4 3,4,5,6,8②2,4 2,4 5,6,8③3,4,5,6,8 --- 3,4,5,6,7,8④5,6,8 --- 7⑤3,4,5,6,7,8 6,8 3,4,5,6,7,8⑥7 6,8 ---⑦6,8 --- 7Ia Ib1 2 32 2 43 --- 54 --- 65 7 56 7 ---7 --- 6新的状态转换图如下:化简:(用终结状态与非终结状态,然后输出状态一致分一类)。
(1)A={1,2,6},B={3,4,5,7} Aa={2} ×(2)A={1,2},B={6},C={3,4,7},D={5} Cb={5,6} ×(只要有一个不属于任何一个集合,就不行) (3)A={1,2},B={6},C={3},D={4,7},E={5} Ab={3,4} × (4) A={1},B={2},C={6},D={3},E={4,7},F={5} Aa={2}⊂B ,Ab={3}⊂D ,Ba={2}⊂B ,Bb={4}⊂E ,Ca={7}⊂E ,Db={5}⊂F ,Eb={6}⊂C ,Fa={7}⊂E ,Fb={5}⊂Fa b A B D B B E C E --- D --- F E --- C FEF[注意事项]:[知识要点]:正则表达式:******|,|,)|(,)|(,)(,,|,ab a b a a b a a b a ab ab b a a{}a a aaa aa a a ,,,,*ε⇔;{}b a a b a ,)b (|⇔或;{}ab b a ab ⇔)(和;(){},,,,*ababab abab ab ab ε⇔;()()()(){} ,,,,,,||||*baba aabb aab b a b a b a b a b a ε⇔⇔()*|b a a 是最左边一个字母一定是a ,其余字母为b a 、的任意组合,不包括ε。
编译原理期末复习题(答案)

北方工业大学《编译原理》课程期末复习题(答案)A 卷开课学院考试方式:闭卷考试时间:120 分钟班级 姓名 学号 一判断题(每个小题1分,共10分)1. 程序语言主要由语法和语义两方面定义。
( )2. 自上而下分析方法会遇到的主要问题有左递归和回溯。
( )3. 已知文法G :E →i | EAE ,A →+|* ,其中的终结符号集包括{i ,+}。
( )4. 编译程序是将高级语言程序翻译成机器语言程序。
( )5. 只含有综合属性的属性文法称为S-属性文法。
( )6. LL(1)文法中第一个L 的含义是从左到右扫描输入串。
( )7. 在编译中进行语法检查的目的是为了发现程序中所有错误。
( )8. 一个语义子程序描述了一个文法所对应的翻译工作。
( )9. 一个句型的直接短语是唯一的。
( ) 10. 确定的自动机以及不确定的自动机都能正确地识别正规集。
( ) 解:1.√ 2.√ 3.× 4.× 5.√ 6.√ 7.× 8.× 9.× 10.√二、选择题(每个小题1分,共20分)1. 文法分为四种类型,即0型、1型、2型、3型。
其中3型文法是____。
A. 短语文法 B. 正规文法 C. 上下文有关文法 D. 上下文无关文法2. 不可能是目标代码。
A. 汇编指令代码B. 可重定位指令代码C. 绝对指令代码D. 中间代码 3. 将编译程序分成若干个“遍”是为了 。
A. 提高程序的执行效率B. 利用有限的机器内存并提高机器的执行效率C. 使程序的结构更加清晰D. 利用有限机器内存但降低了机器的执行效率 4. 后缀式ab+cd+/可用表达式 来表示。
订线装A. a+b/c+dB. (a+b)/(c+d)C. a+b/(c+d)D. a+b+c/d5. 文法G:S→xSx|y所识别的语言是。
A. xyxB. (xyx)*C. x n yx n(n≥0)D. x*yx*6. 文法G[E]:E→E+T|TT→T*P|PP→(E)|i则句型P+T+i的句柄和最左素短语为。
编译原理期末复习题

---------------------------------------------------------------最新资料推荐------------------------------------------------------编译原理期末复习题一、名词解释(每小题6分,共5 *6分=3 0 分) 1、什么叫编译程序?什么叫解释程序?它们两者的区别是什么?编译程序是把源程序翻译成目标语言的程序.编译得到的目标程序再经过连接装配形成可执行程序文件.用户运行可执行程序文件时不再需要源程序和编译程序. 解释程序是把源程序翻译成目标语言并执行的程序.解释程序的工作方式是逐条读入源程序中的语句,将该语句翻译成目标语言并执行.用户每次执行同样的程序都需要源程序文件和解释程序. 2、请解释源程序,目标程序,遍。
源程序是一种计算机的代码。
它会符合一定的语法,经过编译器编译或解释后生成具有一定功能的可执行文件或组件,也可以是某种接口。
是用程序设计语言编写的程序。
目标程序又称目的程序。
由语言处理程序(汇编程序,编译程序,解释程序)将源程序处理(汇编,编译,解释)成与之等价的由机器码构成的,计算机能够直接运行的程序,该程序叫目标程序。
遍指游历,即指令的顺序。
有三种顺序:左根右,左右根,根左右。
3、请解释字母表,符号串,推导。
1 / 4字母表是符号的非空有穷集合。
符号串是由字母表中的符号所组成的任何有穷序列。
推导:分直接推导产生式右部代替左部。
4、请解释正规式。
5、请解释句子,句型,上下文无关文法。
二、填空题(每空 2 分,共 10*2分=2 0 分)1、有穷自动机分为:和2、 .有穷自动机接受的是语言. 3、已知文法 G[S]的产生式如下:S(L) ∣ a L L, S∣ S 属于 L(G[S])的句子是 A ,(a, a)是 L(G[S])的句子,这个句子的最左推导是 B ,最右推导是C ,语法树是 D 。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.1 考虑文法G[S],其产生式如下:S→(L)|a L→L,S|S(1)试指出此文法的终结符号、非终结符号。
终结符号为:{(,),a,,,}非终结符号为:{S,L}开始符号为:S(2)给出下列各句子的分析树:①②(a,(a,a))③ (a,((a,a),(a,a)))(a,a)(3)构造下列各句子的一个最左推导:① (a,a)S (L) (L,S) (S,S) (a,S) (a,a)② (a,(a,a))S (L) (L,S) (S,S) (a,S) (a,(L) (a,(L,S))(a,(S,S)) (a,(a,S)) (a,(a,a))③ (a,((a,a),(a,a)))S (L) (L,S) (S,S) (a,S) (a,(L)) (a,(L,S))(a,(S,S)) (a,((L),S)) (a,((L,S),S)) (a,((S,S),S))(a,((a,S),S)) (a,((a,a),S)) (a,((a,a),(L)))(a,((a,a),(L,S))) (a,((a,a),(S,S))) (a,((a,a),(a,S)))(a,((a,a),(a,a)))(4)构造下列各句子的一个最右推导:①(a,a)S (L) (L,S) (L,a) (S,a) (a,a)②(a,(a,a))S (L) (L,S) (L,(L)) (L,(L,S)) (L,(L,a))(L,(S,a)) (L,(a,a)) (S,(a,a)) (a,(a,a)③(a,((a,a),(a,a))S (L) (L,S) (L,(L)) (L,(L,S)) (L,(L,(L)))(L,(L,(L,S))) (L,(L,(L,a))) (L,(L,(S,a)))(L,(L,(a,a))) (L,(S,(a,a))) (L,((L),(a,a)))(L,((L,S),(a,a))) (L,((L,a),(a,a))) (L,((S,a),(a,a)))(L,((a,a),(a,a))) (S,((a,a),(a,a))) (a,((a,a),(a,a)))(5)这个文法生成的语言是什么?L(G[S]) = (α1,α2,...,αn)或a其中αi(1≤i≤n),即L(G[S])是一个以a为原子的纯表,但不包括空表。
2.2 考虑文法G[S] S→aSbS|bSaS|ε(1)试说明此文法是二义性的。
可以从对于句子abab有两个不同的最左推导来说明。
S aSbS abS abaSbS ababS ababS aSbS abSaSbS abaSbS ababS abab所以此文法是二义性的。
(2)对于句子abab构造两个不同的最右推导。
S aSbS aSbaSbS aSbaSb aSbab ababS aSbS aSb abSaSb abSab abab(3)对于句子abab构造两棵不同的分析树。
(一) (二)(4)此文法所产生的语言是什么?此文法产生的语言是:所有a的个数与b的个数相等的由a和b组成的字符串。
2.4 已知文法G[S]的产生式如下:S → (L)|a L → L,S|S属于L(G[S])的句子是 A ,(a,a)是L(G[S])的句子,这个句子的最左推导是 B ,最右推导是 C ,分析树是 D ,句柄是 E 。
A:① a② a,a ③ (L) ④ (L,a)B,C:① S (L) (L,S) (L,a) (S,a) (a,a)② S (L) (L,S) (S,S) (S,a) (a,a)③ S (L) (L,S) (S,S) (a,S) (a,a)D:E:① (a,a) ② a,a ③ (a) ④ a解答: A:① B:③ C:① D:② E:④3.1有限状态自动机可用五元组(V T,Q,δ,q0,Q f)来描述,设有一有限状态自动机M的定义如下:V T={0,1},Q={q0,q1,q2},Q f={q2},δ的定义为:δ(q0,0)=q1δ(q1,0)=q2δ(q2,1)=q2δ(q2,0)=q2M是一个 A 有限状态自动机,它所对应的状态转换图为 B ,它所能接受的语言可以用正则表达式表示为 C 。
其含义为 D 。
A: ①歧义的②非歧义的③确定的④非确定的B:C:①(0|1)*②00(0|1)*③(0|1)*00 ④0(0|1)*0D:①由0和1所组成的符号串的集合;②以0为头符号和尾符号、由0和1所组成的符号串的集合;③以两个0结束的,由0和1所组成的符号串的集合;④以两个0开始的,由0和1所组成的符号串的集合。
答案 A:③ B:② C:② D:④3.2 (1)有穷自动机接受的语言是正则语言。
()(2)若r1和r2是Σ上的正规式,则r1|r2也是。
()(3)设M是一个NFA,并且L(M)={x,y,z},则M的状态数至少为4个。
(4)令Σ={a,b},则Σ上所有以b为首的字构成的正规集的正规式为b*(a|b)*。
(5)对任何一个NFA M,都存在一个DFA M',使得L(M')=L(M)。
()(6)对一个右线性文法G,必存在一个左线性文法G',使得L(G)=L(G'),反之亦然。
()答案 (1) T (2) T (3) F (4) F (5) T3.3描述下列各正规表达式所表示的语言。
(1) 0(0|1)*0(2) ((ε|0)1*)*(3) (0|1)*0(0|1)(0|1)(4) 0*10*10*10*(5) (00|11)*((01|10)(00|11)*(01|10)(00|11)*)*答案 (1) 以0开头并且以0结尾的,由0和1组成的所有符号串(2) {α|α∈{0,1}*}即由0和1组成的所有符号串。
(3) 由0和1组成的符号串,且从右边开始数第3位为0。
(4) 含3个1的由0和1组成的所有符号串。
{α|α∈{0,1}+,且α中含有3个1 }(5) {α|α∈{0,1}*,α中含0和1的数目为偶数。
}4.10 已知文法G[S],其产生式如下:S→(L)|a L→L,S|S文法G[S]的算符优先关系由下表给出。
建立与下表相应的算符优先函数并用算符优先分析法分析句子(a,(a,a))。
文法G[S]的算符优先关系表:解:对每个终结符或$建立符号f与g,把f(和g)分成一组。
根据G[S]的算符优先关系表,画出如下的有向图:优先函数如下:用算符优先分析法分析句子(a,(a,a))4.19 (1) 存在有左递归规则的文法是LL(1)的。
(2) 任何算符优先文法的句型中不会有两个相邻的非终结符号。
(3) 算符优先文法中任何两个相邻的终结符号之间至少满足三种关系(<·,·>,)之一。
(4) 任何LL(1)文法都是无二义性的。
(5) 每一个SLR(1)文法也都是LR(1)文法。
(6) 存在一种算法,能判定任何上下文无关文法是否是LL(1)的。
(7) 任何一个LL(1)文法都是一个LR(1)文法,反之亦然。
(8)' LR(1)'括号中的1是指,在选用产生式A→α进行分析,看当前读入符号是否在FIRST(α)中。
答案:(1)×(2)√(3)×(4)√(5)√(6)√(7)× (8)×4.20 在编译程序中,语法分析分为自顶向下分析和自底向上分析两类。
__A__和LL(1)分析法属于自顶向下分析;__B__和LR分析法属于自底向上分析。
自顶向下分析试图为输入符号串构造一个__C__;自底向上分析试图为输入符号串构造一个__D__。
采用自顶向下分析方法时,要求文法中不含有__E__。
A、B:①深度分析法②宽度优先分析法③算符优先分析法④预测递归分析法C、D:①语法树②有向无环图③最左推导④最右推导E:①右递归②左递归③直接右递归④直接左递归A:④ B:③ C:③ D:④ E:②4.21 自底向上语法分析采用__A__分析法,常用的是自底向上语法分析有算符优先分析法和LR分析法。
LR分析是寻找右句型的 __B__;而算符优先分析是寻找右句型的__C__。
LR分析法中分析能力最强的是__D__;分析能力最弱的是__E__。
A:①递归②回溯③枚举④移进-规约B、C:①短语②素短语③最左素短语④句柄D、E:①SLR(1) ②LR(0) ③LR(1) ④LALR(1)A:④ B:④ C:③ D:③ E:②5.5 用S的综合属性val给出在下面的文法中的S产生的二进制数的值(例如,对于输入101.101,S.val=5.625):S→L.L|L L→LB|B B→0|1(1)试用各有关综合属性决定S.val。
(2)试用一个语法制导定义来决定S.val,在这个定义中仅有B的综合属性,设为c,它给出由B 生成的位对于最后的数值的贡献。
例如,在101.101中的第一位和最后一位对于值5.625的贡献分别为4和0.125。
注:L.p表示恢复L.val的因子。
(2)分析:设B.c是B的综合属性,是B产生的位对最终值的贡献。
要求出B.c,必须求出B 产生位的权,设B.i。
B.i的求法请参看下面的图示:另外,设L.fi为继承因子,L.fs为综合因子,语法制导定义如下:5.15描述文法符号语义的属性有两种,一种称为( A ),另一种称为( B )。
( A )值的计算依赖于分析树中它的( C )的属性值;( B )的值的计算依赖于分析树中它的( D )的属性值。
A,B: ①L-属性②R-属性③综合属性④继承属性C,D: ①父结点②子结点③兄弟结点④父结点与子结点⑤父结点与兄弟结点解答: A ③ B ④ C ② D ⑤5.16(1) 语法制导定义中某文法符号的一个属性,既可以是综合属性,又可以是继承属性。
(2) 只使用综合属性的语法制导定义称为S-属性定义。
(3) 把L-属性定义变换成翻译模式,在构造翻译程序的过程中前进了一大步。
(4)一个特定的翻译模式既适于自顶向下分析,又适于自底向上分析。
(5) 用于自顶向下分析的翻译模式,其基础文法中不能含有左递归。
(6) 在基础文法中增加标记非终结符不会导致新的语法分析冲突。
解答:(1) FALSE (2) TRUE (3) TRUE (4) FALSE(5) TRUE (6) FALSE6.7 (1) 对于允许递归调用的程序语言,程序运行时的存储分配策略不能采用静态的存储分配策略。
()(2) 若一个程序语言的任何变量的存储空间大小和相互位置都能在编译时确定,则可采用静态分配策略。
()(3) 在不含嵌套过程的词法作用域中,若一个过程中有对名字a的非局部引用,则a必须在任何过程(或函数)外被说明。
()(4) 在允许嵌套的词法作用域的语言中,过程不能作为参数,原因时不能建立其运行环境的存取链。