程序设计语言编译原理考试重点

合集下载

编译原理复习重点含答案

编译原理复习重点含答案

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

常见的语法规则包括:1. 表达式:例如算术表达式、布尔表达式等。

编译原理考试重点整理

编译原理考试重点整理

第一章1.编译程序:能够把某一种语言程序转换成另一种语言程序,而后者与前者在逻辑上是等价的一种程序。

通常是从高级语言转换成为低级语言。

2.解释程序:它以该语言写的源程序作为输入,但是不产生目标代码,而是边解释边执行源程序本身。

3.诊断编译程序:专门用于帮助程序开发和调试的编译程序。

4.优化编译程序:着重于提高目标代码效率的编译程序。

5.宿主机:运行编译程序的计算机。

6.目标机:运行编译程序所产生目标代码的计算机。

7.交叉编译程序:一个程序产生不同于宿主机的机器代码的程序。

8.可变目标编译程序:如果不需要重新编译程序中与机器无关的部分就能改变目标机,则该编译程序就叫做可变目标编译程序。

PS:世界上第一个编译程序——FORTRAN编译程序——20世纪50年代9.编译过程●第一阶段:词法分析——词法分析器1)任务:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词(亦称单词符号或简称符号),标示符,常熟,算符和界符。

2)单词符号是语言的基本组成成分,是人们理解和编程的基本要素。

3)描述词法规则的有效工具是:正规式和有限自动机●第二阶段:语法分析——(词法)分析器1)任务:在词法分析的基础上,根据语言的语法规则,把单词符号分解成各类语法单位,如“短语”、“子句”、“句子”、“程序段”和“程序”等。

通过语法分析,确定整个输入串是否构成语法上正确的“程序”。

2)语法分析所依据的是语言的语法规则。

通常是上下文无关文法描述、3)词法分析是一种线性分析,而语法分析是一种层次结构分析。

●第三阶段:语义分析和中间代码产生——语义分析器1)任务:对语法分析所识别出的各类语法范畴,分析其含义,并进行初步翻译(产生中间代码)。

2)对每种语法范畴进行静态语义检查—>进行中间代码的翻译。

3)语义分析所依据的是语言的语义规则,通常使用属性文法描述语义规则。

4)中间代码:一种含义明确、便于处理的记号系统,它通常独立于具体的硬件。

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

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

一、单选题(每题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是继承属性。

编译原理考试题

编译原理考试题

编译原理考试题
1. 编译器的作用是什么?简述编译器的基本工作流程。

2. 解释什么是词法分析。

描述词法分析器的基本工作原理。

3. 什么是语法分析?描述语法分析器的基本工作原理。

4. 解释语义分析的概念。

语义分析器的基本工作原理是什么?
5. 请简要解释编译器的前端和后端分别是做什么的。

6. 什么是中间代码?为什么编译器要生成中间代码?
7. 解释什么是符号表。

符号表在编译过程中起到什么作用?
8. 简述优化在编译过程中的作用。

列举并解释两种常见的优化技术。

9. 解释静态链接和动态链接的区别。

10. 请解释解释器和编译器之间的区别。

描述它们各自的工作
原理。

11. 解释冲突解析算法中的"移进-归约"冲突和"归约-归约"冲突。

12. 简述LL(1)文法和LR(1)文法的特点及区别。

13. 解释编程语言中的数据类型检查和类型推导的概念。

14. 简要描述语法制导翻译的概念和基本原理。

15. 请解释正则表达式和有限自动机之间的关系。

注意:以上为编译原理考试相关的问题,文中不含有标题相同的文字。

编译原理重点

编译原理重点

编译原理重点第⼀章1. 机器语⾔:计算机能执⾏的语⾔。

2. 翻译器:能够完成⼀种语⾔到另⼀种语⾔的转换的软件。

3. 源语⾔:需要翻译的语⾔。

4.⽬标语⾔:被翻译成的语⾔。

编译的各阶段:每个阶段的输⼊输出(注意顺序)字符流第⼆章1. 词法分析:词法分析是编译的第⼀阶段,它的主要任务是扫描输⼊字符流,产⽣⽤于词法分析的词法记号序列。

源程序2. 词法记号:由记号名和属性值构成的⼆元组,属性值有时不必要。

记号名是代表⼀类词法单元的抽象名字,如标识符、某个特定的关键字。

3. 模式:记号的模式描述属于该记号的词法单元的形式。

在⼀个关键字作为⼀个记号的情况下,它的模式就是构成该关键字的字符序列。

4.词法单元:单词,是源程序中匹配⼀个记号模式的字符序列,它有词法分析器标识为该记号的实例。

5.例2.1Position = initial + rate * 60 的记号⽤⼆元组序列表⽰:-------唯⼀的,所以可以省略属性值6.字母表:表⽰符号的有限集合。

7.串:字母表中符号的⼜穷序列。

8.串的长度:串s的长度是出现在s中的符号的个数,写为|s|;空串长度为0 记为ε。

9.语⾔:表⽰字母表上的⼀个串集,属于该语⾔的串称为该语⾔的句⼦或字。

10.P17:表2.2语⾔运算的定义,例2.2、例2.3、表2.3正规式的代数定理11.P23:不确定的有限⾃动机(NFA)、P24:确定的有限⾃动机(DFA)-------NFA—DFA转化、DFA 化简。

12.P36—37: 习题2.3、2.7、2.8、2.11、2.12.● 2.3叙述由下列正规式描述的语⾔0(0|1)*0—以0开头和结尾的,长度⾄少是2的01串。

((ε|0)1*)*—所有的01串。

(0|1)*0(0|1)(0|1)—倒数第3位是0的01串。

0*10*10*10*—含有3个1的01串。

(00|11)*((01|10)(00|11)*(01|10)(00|11)*)* —含有偶数个0和偶数个1的01串。

编译原理期末考试复习整理(详细列出考试重点+重点例题)

编译原理期末考试复习整理(详细列出考试重点+重点例题)

编译原理期末考试复习整理(详细列出考试重点+重点例题)本页仅作为文档封面,使用时可以删除This document is for reference only-rar21year.March目录第一章 (3)词法分析: (3)语义法分析 (3)中间代码 (3)第二章 (3)1.根据语言写出文法 (4)2.根据文法写语,描述其特点(必考大题2-3类型) (4)3.文法的规范推导、语法树、短语、句柄(必考大题,2-7,2-11) (6)第三章 (11)1.给出一个正规文法 (左线性、右线性方法),写出其状态转换图(必考) (11)1.1右线性文法写出状态转换图 (必考) (11)1.2状态转换图写出右线性文法G (12)1.3左线性文法写出状态转换图 (必考) (13)2.非确定自动机的确定化 (14)第四章 (15)第五章 (15)属性文法与属性翻译文法 (15)逆波兰式(大题) (16)四元式(大题) (16)第一章词法分析:分析源程序的结构,判断它是否是相应程序设计语言的合法程序语义法分析的任务是根据语言的语义规则对语法分析得到的语法结构进行静态的语义检查(确定类型、类型与运算合法性检查、识别含义等),并且转换成另一种内部形式(语义树)表示出来或者直接用目标语言表示出来。

中间代码是一种结构简单、含义明确的记号系统,这种记号系统可以设计为多种多样的形式,重要的设计原则为两点:一是容易生成;二是便于优化、移值;三是容易将它翻译成目标代码第二章文法G定义为四元组(V N,V→,P,S )其中V N为非终结符号(或语法实体,或变量)集;V→为终结符号集;P为产生式(也称规则)的集合; V N,V→和P是非空有穷集。

S称作识别符号或开始符号,它是一个非终结符,至少要在一条产生式中作为左部出现。

V N和V→不含公共的元素,即V N ∩V→ = φ,通常用V 表示V N∪ V→,V称为文法G的字母表或字汇表。

程序设计语言编译原理考试重点

程序设计语言编译原理考试重点

第一章引论1.编译程序分几个阶段,每个阶段的任务是什么?五个阶段:词法分析、语法分析、语义分析、中间代码生成、优化、目标代码生成词法分析任务:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词。

(如基本字,标识符,常数,算符和界符)。

语法分析任务:在词法分析基础上,将单词符号串转化为语法单位(语法范畴) (短语、子句、句子、程序段、程序),并确定整个输入串是否构成语法上正确的程序。

语义分析和中间代码生成任务:对语法分析所识别出的各类语法范畴,分析其含义,并进行初步翻译(产生中间代码) 。

代码优化任务:对于代码(主要是中间代码)进行加工变换,以期能够产生更为高效(省时间和空间)的目标代码。

目标代码生成任务:将中间代码变换成特定机器上的低级语言代码2.表格管理和出错处理:编译各阶段均须维持表格并进行表格管理,建表的技术支持是数据结构,表格的分类、结构、处理方法决定于语言及机器,还有优化措施。

一个好的编译程序应该:全,最大限度发现错误;准,准确指出错误的性质和发生地点;局部化,将错误的影响限制在尽可能小的范围内。

源程序中的错误通常分为:语法错误,不符合语法(或词法)规则的错误,如单词拼写错误、括号不匹配…语义错误,不符合语义规则的错误,如说明错误、作用域错误、类型不匹配…3.前端、后端:编译前端主要由与源语言有关,但与目标机无关的那些部分组成。

编译后端包括编译程序中与目标机有关的那些部分。

4.遍:根据系统资源的状况、运行目标的要求……等,可以将一个编译程序设计成多遍扫描的形式,在每一遍扫描中,完成不同的任务。

遍可以和阶段相对应,也可无关。

单遍代码不太有效。

遍是对源程序或源程序的中间结果从头到尾扫描一次,并作有关的加工处理,生成新的中间结果或目标程序。

5.“运算符与运算对象类型不符”属于语义错误6.算法逻辑上的错误属于语义错误第二章高级语言及其语法描述1.程序语言是由语法和语义两方面定义的。

编译原理考点

编译原理考点

1、编译程序涉及的三个语言(源语言目标语言实现语言)2、编译程序的概念及其结构(五个)编译程序(compiler)是一种翻译程序,它特指把某种高级程序设计语言翻译成具体计算机上的低级程序设计语言。

结构:词法分析,语法分析,语义分析及中间代码产生,优化,目标代码产生3、什么是二义文法。

若文法中存在这样的句型,它具有两棵不同的语法树(两个不同的最左、最右推导),则称该文法是二义性文法。

4、超前搜索技术词法分析程序在读取单词时,为了判断是否已读入整个单词的全部字符,常采取向前多读取字符并通过读取的字符来判别,即所谓超前搜索技术。

5、“遍”的概念编译程序对源程序或等价程序从头至尾扫描的次数。

根据语言和环境的不同,编译程序实现时是把各阶段划分成若干遍;典型的情况是两遍的编译程序:第一遍:词法分析、语法分析和语义分析。

即前端完成分析,一般与机器无关。

第二遍:目标代码生成和目标代码优化。

即后端完成综合,一般与机器有关。

6、上下文无关文法的定义所定义的语法范畴是完全独立于这种范畴可能出现的环境的。

包括四个组成部分,一组终结符号,一组非终结符号,一个开始符号,以及一组产生式7、词法分析,自上而下以及自下而上语法分析的基本概念,输入,输出,分析方法。

8、LL(k)的含义,以及LL(1)文法的判定。

P73**9、LR分析法10、中间代码生成的依据,形式,目的。

P166中间代码的几种形式:后缀式(逆波兰式),三地址代码(包括三元式、四元式、间接三元式),图表示法(包括DAG图、抽象语法树)11、四元式p172一个四元式是一个带有四个域(field)的记录结构,这四个域分别称为op、arg1、arg2及result。

12、栈式存储分配p255 p24513、循环优化的具体措施。

P28714、编译程序,翻译程序的异同。

⑴前者有目标程序而后者无目标程序;⑵前者运行效率高而后者便于人机对话。

15、NFA、DFA的定义,区别,以及转换。

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

第一章引论1.编译程序分几个阶段,每个阶段的任务是什么?五个阶段:词法分析、语法分析、语义分析、中间代码生成、优化、目标代码生成词法分析任务:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词。

(如基本字,标识符,常数,算符和界符)。

语法分析任务:在词法分析基础上,将单词符号串转化为语法单位(语法范畴) (短语、子句、句子、程序段、程序),并确定整个输入串是否构成语法上正确的程序。

语义分析和中间代码生成任务:对语法分析所识别出的各类语法范畴,分析其含义,并进行初步翻译(产生中间代码) 。

代码优化任务:对于代码(主要是中间代码)进行加工变换,以期能够产生更为高效(省时间和空间)的目标代码。

目标代码生成任务:将中间代码变换成特定机器上的低级语言代码2.表格管理和出错处理:编译各阶段均须维持表格并进行表格管理,建表的技术支持是数据结构,表格的分类、结构、处理方法决定于语言及机器,还有优化措施。

一个好的编译程序应该:全,最大限度发现错误;准,准确指出错误的性质和发生地点;局部化,将错误的影响限制在尽可能小的范围内。

源程序中的错误通常分为:语法错误,不符合语法(或词法)规则的错误,如单词拼写错误、括号不匹配…语义错误,不符合语义规则的错误,如说明错误、作用域错误、类型不匹配…3.前端、后端:编译前端主要由与源语言有关,但与目标机无关的那些部分组成。

编译后端包括编译程序中与目标机有关的那些部分。

4.遍:根据系统资源的状况、运行目标的要求……等,可以将一个编译程序设计成多遍扫描的形式,在每一遍扫描中,完成不同的任务。

遍可以和阶段相对应,也可无关。

单遍代码不太有效。

遍是对源程序或源程序的中间结果从头到尾扫描一次,并作有关的加工处理,生成新的中间结果或目标程序。

5.“运算符与运算对象类型不符”属于语义错误6.算法逻辑上的错误属于语义错误第二章高级语言及其语法描述1.程序语言是由语法和语义两方面定义的。

2.上下文无关文法的定义:四个组成部分:一组终结符号、一组非终结符号、一个开始符号、一组产生式。

一个上下文无关文法G是一个四元式(VT,VN,S, P ),其中:VT:是非空有限集,它的每个元素是终结符号;VN是非空有限集,它的每个元素是非终结符号,VTA VN=O, VTU VN=V;S S€ VN称为开始符号;P :产生式集合(有限),每个产生式形式是{ P-> a | P€ VN a€ (VTU VN)*,S 至少一次为P };3.推导、最左推导、最右推导:1、推导:如两个串uO、un,存在一个串序列uO=>u仁>-=>un,则我们称这个序列是从u0到un 的一个推导。

—I-U1----- 、un:表示从u0出发,经一步或若干步,可推导出un.U1—;un:表示从u0出发,经0步或若干步,可推导出un.最左推导是指,任何一步a =>B都是对a中的最左非终结符进行替换的。

最右推导是指,任何一步a =>B都是对a中的最右非终结符进行替换的。

4.语法树:在编译中产生语法树是为了语法分析。

5.什么是句型?什么是句子?什么是语言?假定G是一个文法,S是它的开始符号。

如果S=> a,则称a是一个句型。

仅含终结符的句型是一个句子。

文法G所产生的句子的全体是一个语言。

语言是由句子组成的集合,是由一组记号所构成的集合。

6.乔姆斯基把文法分成4种类型,即0型文法、1型文法、2型文法和3型文法。

0型文法也称为短语文法。

1型文法也称为上下文有关文法。

2型文法也称为上下文无关文法。

3型文法也称为正规文法。

与程序语言语法有关的文法是上下文无关文法。

第三章词法分析1.状态转换图:使用状态转换图是设计词法分析程序的一种好途径,状态转换图是一张有限方向图。

在状态转换图中,结点代表状态,用圆圈表示。

一个状态转换图可用于识别(或接受)一定的字符串。

2.确定的有限自动机(DFA、非确定有限自动机(NFA)。

五元式:有限状态集合、有穷字母表、转换函数、唯一的初始状态、终止状态集合。

一个确定有限自动机(DFA M是一个五元式:M = (S,刀,8 ,s0 ,F),其中S是一个有限集,它的每个元素称为一个状态,二是一个有穷字母表,它的每个元素称为一个输入字符,3是一个从SXE至S的单值部分映射。

8 (s,a)=s ' 意味着:当现行状态为、输入字符为a时,将转换到下一状态s 我们称s'为s的一个后继状s0€ S是唯一的初态F是一个终态集(可空)。

一个非确定有限自动机(NFA M是一个五元式:M = (S, E, 8 ,S0 ,F),其中S是一个有限集,它的每个元素称为一个状态,二是一个有穷字母表,它的每个元素称为一个输入字符,8是一个从SXE*至S的子集的映射,即8: SXE*-2s,S0€ S是唯一的初态,F是一个终态集(可空)。

3.设有确定的有限自动机DFA M = ({0,1,2,3},{a,b}, 8 ,0,{3}),其中8 为:8 (0,a)=1 8 (0,b)=2 8 (1,a)=38 (1,b)=2 8 (2,a)=1 8 (2,b)=3 8 (3,a)=3 8 (3,b)=37. 两种实现方法:递归下降分析法、预测分析程序。

第五章 语法分析一一自下而上分析1. 简述自下而上的语法分析方法:就是从输入串开始,逐步进行“规约” 开始,逐步向上规约,直至规约到根节点。

2. 一个句型的句柄是该句型的最左直接短语。

3. 规范规约是指最右推导的逆过程。

4. 算符优先分析法1 )特别适应于表达式分析的方法 2)算符优先分析法中,优先表中存储的是优先关系 3)算符优先分析法的可规约串是句型的最左素短语。

5.LR 分析法:1 ) LR ( K )文法是从左到右分析,每次向貌似句柄的符号串后看 K 个输入符号的一种编译方法 2)四种分析表3) LR(0)项目的含义4)例给定文法:S — AS|b A — SA|a 要求列出这个文法的所有 LR(0)项目。

S —.AS S — A.S S — AS. S^ .b S — b A — .SA A —S.A A — SA. A — .a A —a.5) 写出LR(0)分析表的构造步骤:①确定G 的LR(0)项目②以LR(0)项目为状态,构造一个能识别文法 G 的所有活前缀的NF/③利 用子集法,将NFA 确定化,成为以项目集合为状态的 DFA 根据④利用上述DFA 可直接构造出LR 分析表。

6) 比较LR(0)、SLR( 1)、LR (1 )、LALR(1 )分析表的优缺点:这4种分析表都能识别对应文法的全部句子,其共同特征就是用规范规约的方法寻找句柄进行规约。

在这4种方法中,LR(0)分析表对文法的要求较高, 其构造方法是其它表构造方法的基础;SLR( 1)分析表对文法的要求有所降低,容易实现,因而很有实用价值; LR (1)分析表对文法的要求最低,适用于一大类文法, 故其分析能开始 5.词法分析的流程第四章语法分析一一自上而下分析1. 语法分析器的功能:识别语法成分,并作语法检查.2. 自上而下语法分析方法遇到的主要问题是回溯和左递归。

3. 把一个文法改造成任何非终结符的所有候选式首符集两两不相交的方法是提取公共左因子。

4. LL (1)分析法中,第一个L 表示从左到右扫描输入串,第二个L 表示最左推导。

1表示分析时每步只需向前看一个符号。

5. LL (1)文法的条件:1文法不含左递归2) FIRST(a )仃FIRST( B )= 首符集包含£,则 FIRST ( A)A6. 对下文法,计算每个非终结符的 F '— *F ' | £ P — (E)|a|b|First(E)= First (T)= First(F)={(,a,b,First(E ' )={+, £ } First(F ' )={*, £ } Follow (T)= Follow(T Follow(F)= Follow(FFollow(P)={*, (,a,b, ©3)对文法中的每个非终结符 A ,若它存在某个候选 FOLLOW ; A )=①。

FIRST 集合和 FOLLOW 集合。

E — TE' 人E ' — +E| £ T — FT T 'T T| £F — PF ,First (T ,Follow(E)= Follow(E ')={+,#,)}')={(,a,b,卜' ,+,),#} 人,+,),#}卜'} ')={(,a,b,人,£ } ')={#, )}直至规约到文法的开始符号;或者说从语法树的树叶aa2={(0}上能被5整除的二4.设计一个DFA 要求能够识别刀进制数。

o开1力最强,但其实现代价过高;LALR (1)分析表的分析能力介于SLR( 1 )和LR ( 1)之间,实现代价比LR (1)低。

第六章属性文法和语法制导定义1.语法制导翻译法就是在语法分析的过程中,随分析的过程, 根据为每个产生式添加的语义动作进行翻译的方法。

2.写出产生式、语义规则和语义子程序之间的关系。

①产生式:一个产生式描述了一个语法单位,但它只说明了该语法单位能产生的符号串, 并未指明所产生的符号串有什么实际意义,即该符号串究竟要做什么。

②语义规则: 一个产生式的语义规则描述了该产生式的具体的动作意义, 即该产生式产生的符号串要做什么。

③语义子程序:按照产生式的语义规则生成某种中间代码,实现相应的动作。

3.对于文法的每个产生式都配备了一组属性的计算规则,称为属性。

4.文法符号的属性有两种,一种称为综合属性,一种称为继承属性。

综合属性传递信息的方向是自下而上。

继承属性传递信息的方向是自上而下。

5.在分析树中,一个结点的综合属性值是从其子结点的属性值计算出来的。

一个结点的继承属性由此结点的父结点或兄弟结点的某些属性确定。

6.为文法S -( L ) | a L - L , S | S 写一个语法制导定义,它输出括号的对数。

S' —S prin t (S. num)S -( L ) S. num := L.num + 1S - a S. num := 0L -L1 , S L. num :=max{ L1. num , S. num}L -S L. num := S.num7.为文法4( L ) | a L - L , S | S 写一个翻译方案,它输出每个a的嵌套深度。

例如,对于(a , ( a , a)),输出的结果是 1 2 2 。

相关文档
最新文档