2021年编译原理知识点

合集下载

编译原理知识点

编译原理知识点

编译原理知识点
1.1 翻译程序的三种方式
1.编译:将高级语言编写的源程序翻译成等价的机器语言或汇编语言。

2.解释:将高级语言编写的源程序翻译一句执行一句,不生成目标文件,直接执行源代码文件。

3.汇编:用汇编语言编写的源程序翻译成与之等价的机器语言。

1.2 编译程序的五个阶段
1.词法分析:对源程序的字符串进行扫描和分解,识别出每个单词符号。

2.语法分析:根据语言的语法规则,把单词符号分解成各类语法单位。

3.语义分析与中间代码生成:对各种语法范畴进行静态语义检查,若正确则进行中间代码翻译。

4.代码优化:遵循程序的等价变换规则。

5.目标代码生成:将中间代码变换成特定机器上的低级语言代码。

2.1.1 字母表
1.定义:字母表是有穷非空的符号集合。

2.表示:通常用字母表大写字母A,B,…Z和希腊字母Σ表示。

eg:A={0,1},Σ={a,b,c,d}
3.说明
1)字母表包含了语言中所允许出现的一切符号。

2)字母表中的符号也称字符。

2.1.2 符号串
1.定义:由字母表中的符号组成的有穷序列。

2.表示:通常由t,u,v,w,x,y,z等小写英文字母来表示。

3.说明
1)符号串由构成的符号的种类、数量、顺序共同决定。

2)不包含任何符号的符号串称为空符号串,简称空串,用ε表示。

4.对于给定的字母表Σ,符号串的递归定义如下:
1)ε是Σ上的一个符号串。

2)若x是Σ上的符号串,a是Σ的符号,则xa是Σ上的符号串。

并规定。

编译原理知识点概括

编译原理知识点概括
编译原理知识点概括
于永涛
1.正则表达式(RE)和DFA(或NFA) --给定语言描述写出正则表达式或描述正则表达式定义的语言 --正则表达式和DFA(或NFA)的相互转换 2.上下文无关文法(CFG) --给定语言描述写出上下文无关文法 --判断给定的语言是不是上下文无关文法 --语法分析树 --消除左递归 --提取左公因子 3.自顶向下语法分析 --计算FIRST和FOLLOW集以及语法分析表的构造 --判断是否是LL(1)文法
4.自底向上语法分析 --增广文法 --构造SLR(1)项目集规范族 --构造SLR(1)语法分析表的ACTION表和GOTO表 --判断是否是SLR(1)文法 5.语法制导定义和翻译 --S属性和L属性(区分综合属性和继承属性) --给定文法,(定义符号的属性并)给出语法制导定义
(SDD) 或翻译(SБайду номын сангаасT) --根据语法制导翻译模式画出给定串的带语义动作的语法分 析树 --注释分析树(左继承右综合)
祝大家期末考个好成绩!
6.中间代码生成 --根据语法制导定义给出表达式(或程序段)的三地址语句 --构造表达式的DAG --编写生成三地址语句的语法制导定义 --回填 7.运行时环境 --活动树及活动记录(栈式分配) 8.代码生成 --目标指令的编写以代价计算 --基本块和流图 --基本块的DAG表示以及通过DAG进行优化

编译原理部分知识点

编译原理部分知识点

编译原理部分知识点①编译程序的工作过程一般划分为5个阶段:词法分析,语法分析,语义分析与中间代码生成,优化,目标代码生成【还有表格管理还有出错管理】②编译器常用的语法分析方法两种。

自顶向下,自下而上分析方法。

LR方法(自下而上),LL(1)属于什么方法(自上而下)、算符优先分析法(自下而上)③概念:句子(仅含终结符号的句型是一个句子)、最左素短语(语法树中最左边的素短语为最左素短语)、句柄、(一个句型的最左直接短语)二义:(如果一个文法存在某个句子对应两颗不同的语法树,则称这个文法是二义的)正规文法(左线性文法和右线性文法统称为正规文法)④程序语言的单词符号分为5种(关键字、标识符、常数、运算符、界符)⑤属性通常分为两类(综合属性)(继承属性)⑥LR分析器的实质是一个后进先出确定有限状态自动机。

⑦常用的参数传递方式(传地址),(传值),(传名)(传结果)⑧一个LL(1)文法一定是无二义的。

⑨解释程序、编译处理语言时的特点(源语言程序作为输入,但不产生目标程序,而是边解释边执行源程序本身。

①边解释边执行②有利于程序的调试③ 1次运算)⑩语法分析器作用(按文法的产生式,识别输入符号串是否为一个句子)⑪任何算符优先文法与优先函数的关系(任何算符优先文法可能有若干个优先函数,不一定存在优先函数)⑫确定有限自动机的化简是要实现目的(寻找一个状态数比M少的DFA M’,使得L(M)=L(M’))⑬间接三元式表示法的优点为(采用间接码表,节省三元式空间,便于优化处理)⑭词法分析器任务(从左到右逐个字符地对源程序进行扫描,产生一个个的单词符号,把作为字符串的源程序改造成为单词符号串的中间程序)2、设文法G(S)S→(T)|aT→T+S | S计算FIRSTVT和LASTVT;构造优先关系表。

(1) FIRSTVT(S)={a, ( }FIRSTVT(T)={+, a a, (}LASTVT(S)={a, ) }LASTVT(T)={+, a, )}(2)a + ( )a .> .>+ <. .> <. .>( <. <. <. =.) .> .> >.3、设文法G(S):S→( T ) | aS | aT→T, S | S消除左递归和提取公因子;构造相应的FIRST和FOLLOW集合;构造预测分析表。

编译原理要点整理

编译原理要点整理

编译原理要点整理//红色字体标注的是重点中的重点,大题的归宿第一章引论1.翻译器,编译器的定义2.编译器工作步骤和流程3.编译器前端后端的概念,理解为什么要有前端后端4.“遍”的概念第二章词法分析1.词法分析器的定义2.词法分析器所要完成的任务3.记号,模式,词法单元概念区分4.串的运算(和,连接,指数,闭包,正闭包)5.正规定义6.转换图(注意开始状态和结束状态以及需要将指针回退的状态)7.不确定的有限自动机(NFA)定义8.确定的有限自动机(DFA)定义9.从正规式到NFA(明确通过正规式如何构造连接运算,和运算,闭包运算的NFA)10.此方法产生的NFA的性质11.从NFA到DFA(子集构造法)12.DFA的化简(合并不可区别状态)13.从语言描述直接到DFA14.了解Lex学完本章:能语言描述改写成正规定义,能将正规定义转化为语言描述,给出一个正规式,能转换成相应的NFA,DFA并化简。

第三章语法分析1.上下文无关文法定义2.区分句子和句型3.最左推导&& 最右推导4.分析树5.文法二义性6.消除左递归&& 提左因子7.了解语言鸟瞰(0型文法:短语文法;1型文法:上下文有关文法;2型文法:上下文无关文法;3型文法:正规式)8.FIRST集合&& FOLLOW集合定义及计算方法9.LL(1)文法定义10.了解自上而下的递归下降的预测分析11.自上而下非递归的预测分析(详细明确预测分析器接受某一输入串时的具体过程,明确栈如何变化,输入输出如何变化)12.预测分析表的构造13.句柄的概念14.自下而上的分析方法:用栈实现移近-归约分析(详细明确预测分析器接受某一输入串时的具体过程,明确栈如何变化,输入输出如何变化)15.LR文法和LR分析算法16.构造SLR分析表(从文法构造识别活前缀的DFA(LR(0)项目集规范族),从DFA构造SLR分析表)17.构造规范的LR分析表(从文法构造识别活前缀的DFA(LR(1)项目集规范族),从DFA构造规范的LR分析表)18.构造LALR分析表(从文法构造识别活前缀的DFA(合并同心的LR(1)项目集),从DFA构造规范的LR分析表)(合并同心项目集可能会引起归约-归约冲突,不会引起新的移进-归约冲突)学完本章:能计算FIRST集合和FOLLOW集合;给定一个文法,能判断是否是LL(1)文法,并为其构造分析表;能构造LR(1)文法的三种预测分析表;明确移近归约分析中的每一个步骤,明确栈如何变化。

编译原理全复习(完整版)

编译原理全复习(完整版)

1》编译程序的框架图与功能块:(1)画出编译程序的总体结构,并简述各部分的主要功能:七个部分(2)编译程序的结构分为几个阶段,各阶段的任务是什么?答编译程序总框架(1)词法分析器,又称扫描器,输入源程序,进行词法分析,输出单词符号。

(2)语法分析器,简称分析器,对单词符号串进行语法分析(根据语法规则进行推导或规约),识别出各类语法单位,最终判断输入串是否构成语法上正确的“程序”。

(3)语义分析与中间代码产生器,按照语义规则对语法分析器归约出(或推导出)的语法单位进行语义分析并把它们翻译成一定形式的中间代码。

(4)优化器,对中间代码进行优化处理。

(5)目标代码生成器,把中间代码翻译成目标程序。

(6)表格管理,登记源程序的各类信息,编译各阶段的进展状况。

(7)出错管理,把错误信息报告给用户。

编译程序的结构分为五个阶段:(1)词法分析.任务是:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词(亦称单词符号或简称符号),如基本字,标识符,常熟,算符和界符。

(2)。

语法分析,任务是:在词法分析的基础上,根据语言的语法规则,把单词符号串分解成各类语法单位(语法范畴)。

(3)语义分析与中间代码产生。

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

(4)优化。

任务在于对前段产生的中间代码进行加工变换,以期在最后阶段能产生出更为高效(省时间和空间)的目标代码。

(5)目标代码生成。

任务是:把中间代码(或优化出理之后)变换成特定机械上的低级语言代码。

2》.重要概念:a. 编译程序:是指能够把源语言程序转换成逻辑上等价的目标语言程序的一个程序。

b. 单词符号:是语言的基本组成成分,是人们理解和编写程序的基本要素,是语言中具有独立意义的最基本结构,它一般包括:基本字、标识符、常数、运算符和界符等c. 中间代码:是一种含义明确,便于处理的记号系统,它通常独立于具体的硬件。

《编译原理》重点知识总结

《编译原理》重点知识总结

《编译原理》知识点总结目录第一章引论第二章高级语言及其语法描述第三章语法分析——自上而下分析第四章属性文法和语法制导翻译第五章语义分析和中间代码产生第六章优化第一章引论一.编译程序(compiler):把某一种高级语言程序等价地转换成另一种低级语言程序(如汇编语言或机器语言程序)的程序二.编译程序的工作的五个阶段:词法分析、语法分析、中间代码产生、优化、目标代码产生1.词法分析任务: 输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个单词符号。

依循的原则:构词规则描述工具:有限自动机FOR I := 1 TO 100 DO保留字标识符等符整常数保留字整常数保留字2.语法分析任务:在词法分析的基础上,根据语言的语法规则把单词符号串分解成各类语法单位。

依循的原则:语法规则述工具:上下文无关文法3.语义分析与中间代码产生任务:对各类不同语法范畴按语言的语义进行初步翻译。

(变量是否定义、类型是否正确等)依循的原则:语义规则中间代码:三元式,四元式,逆波兰记号,树形结构等。

是一种独立于具体硬件的记号系统。

例:将Z:=X + 0.618 * Y 翻译成四元式为(1) * 0.618 Y T1(2) + X T1 T2(3) := T2 _ Z4. 优化任务:对于前阶段产生的中间代码进行加工变换,以期在最后阶段产生更高效的目标代码。

依循的原则:程序的等价变换规则FOR K:=1 TO 100 DOBEGINM := I + 10 * K;N := J + 10 * K;END4.目标代码产生任务: 把中间代码变换成特定机器上的目标代码。

依赖于硬件系统结构和机器指令的含义目标代码三种形式:a)绝对指令代码: 可直接运行b)可重新定位指令代码: 需要连接装配c)汇编指令代码: 需要进行汇编第二章高级语言及其语法描述2.1.1语法词法规则:单词符号的形成规则。

a)单词符号是语言中具有独立意义的最基本结构。

编译原理知识点

编译原理知识点

编译原理知识点(总7页) -CAL-FENGHAI.-(YICAI)-Company One1-CAL-本页仅作为文档封面,使用请直接删除1.解释程序:不生成目标代码编译程序:生成目标代码2.编译程序组成:8个分析< 前端 >:(词法分析程序、语法分析程序、语义分析程序、中间代码生成程序)综合< 后端 >:(代码优化程序、目标代码生成程序)贯穿始末:表格管理程序、出错处理程序3.文法四元组:终结符号集合Vt 、非终结符号集合Vn、产生式集合P、识别符号(开始符号)SV T∩V N=Φ文法 -> 语言(推导、规约)唯一;语言 -> 文法(凑规则)不唯一。

4.文法分类:0型文法(短语结构文法):左侧至少含有一个非终结符1型文法(上下文有关文法):左侧长度 <= 右侧长度 S->ε除外, S不能出现在右侧2型文法(上下文无关文法):左侧只能有一个非终结符 ( 语法分析 )3型文法(正规文法):A-> aB A->a 右线性; ( 词法分析 )A->Ba 或A->a 左线性(看非终结符位置)5.A*= A0 ∪A+ A0 ={ε} != { } =Φ空集A+ = AA* = A*A6.句型:符号串x是从识别符号S推导出来的,x称为一个句型句子:x仅由终结符号组成,仅含终结符号的句型是一个句子短语:子树的末端(叶子)从左至右连成的串(包括整棵语法树)简单子树:只含有单层分枝的子树直接短语( 简单短语 ):由简单子树的叶子组成句柄:最左边的直接短语(不一定含终结符)素短语:至少含有一个终结符的短语,并且除它自身之外不再含任何更小的素短语最左素短语:最左边的素短语短语:P(相对于T、E)、 P+T(相对于E)、i(相对于P、F)、P+T+i(相对于E)直接短语:P、i 句柄:P (最左边的直接短语)素短语:P+T 、i (至少含有一个终结符的短语)最左素短语:P+T7.二义性文法:有两个不同的最左推导或有两个不同的最右推导或能产生两棵语法树8.文法产生式正规式规则1 A xB B y A = xy规则2 A xA|y A = x*y 右线性A Ax|y A = yx* 左线性规则3 A x A y A = x|y9.DFA 初态唯一,转换函数为单值映射表示方式:转移矩阵、状态转换图状态转换图上若存在一条从初态到某一终态的道路,且这条路上所有弧的标记符连成的字符串为t,则称t被DFA接受。

《编译原理》之常规知识点.

《编译原理》之常规知识点.

《编译原理》之常规知识点一、编译程序1、编译器是一种翻译程序,它用于将源语言(即用某种程序设计语言写成的)程序翻译为目标语言(即用二进制数表示的伪机器代码写成的)程序。

后者在windows操作系统平台下,其文件的扩展名通常为.obj。

该文件通常还要经过进一步的连接,生成可执行文件(机器代码写成的程序,文件扩展名为.exe)。

通常有两种方式进行这种翻译,一种是编译,另一种是解释。

后者并不生成可执行文件,只是翻译一条语句、执行一条语句。

这两种方式相编译比解释运行的速度要快得多。

2、编译过程的5个阶段:词法分析;语法分析;语义分析与中间代码产生;优化;目标代码生成。

3、在这五个阶段中,词法分析的任务是识别源程序中的单词是否有误,编译程序中实现这种功能的部分一般称为词法分析器。

在编译器中,词法分析器通常仅作为语法分析程序的一个子程序以便在它需要单词符号时调用。

在这一编译阶段中发现的源程序错误,称为词法错误。

4、语法分析阶段的目的是识别出源程序的语法结构(即语句或句子)是否错误,所以有时又常为句子分析。

编译程序中负责这一功能的程序称为语法分析器或语法分析程序。

在这一阶段中发现的错误称为语法错误。

5、C语言的(源)程序必须经过编译才能生成目标代码,再经过链接才能运行。

PASCAL 语言、FORTRAN语言的源程序也要经过这样的过程。

通常将C、PASCAL、FORTRAN这样的语言统称为高级语言。

而将最终的可执行程序称为机器语言程序。

6、在编译C语言程序的过程中,发现源程序中的一个标识符过长,超过了编译程序允许的范围,这个错误应在词法分析阶段发现,这种错误通常被称作词法错误。

✧词法分析器的任务是以词法规则为依据对输入的源程序进行单词及其属性的识别,识别出一个个单词符号。

✧词法分析的输入是源程序,输出是一个个单词的特殊符号,称为Token(标记或符号)。

✧有两种方法可以实现词法分析器:一,手工编写词法分析程序。

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

1.解释程序:不生成目的代码编译程序:生成目的代码2.编译程序构成:8个分析< 前端>:(词法分析程序、语法分析程序、语义分析程序、中间代码生成程序) 综合< 后端>:(代码优化程序、目的代码生成程序)贯穿始末:表格管理程序、出错解决程序3.文法四元组:终结符号集合Vt 、非终结符号集合Vn、产生式集合P、辨认符号(开始符号)SV T∩V N=Φ文法-> 语言(推导、规约)唯一;语言-> 文法(凑规则)不唯一。

4.文法分类:0型文法(短语构造文法):左侧至少具有一种非终结符1型文法(上下文关于文法):左侧长度<= 右侧长度S->ε除外,S不能出当前右侧2型文法(上下文无关文法):左侧只能有一种非终结符( 语法分析)3型文法(正规文法):A-> aB A->a 右线性;( 词法分析)A->Ba 或A->a 左线性(看非终结符位置)5.A*=A0 ∪A+ A0 ={ε} !={ } =Φ空集A+ =AA* =A*A6.句型:符号串x是从辨认符号S推导出来,x称为一种句型句子:x仅由终结符号构成,仅含终结符号句型是一种句子短语:子树末端(叶子)从左至右连成串(涉及整棵语法树)简朴子树:只具有单层分枝子树直接短语( 简朴短语):由简朴子树叶子构成句柄:最左边直接短语(不一定含终结符)素短语:至少具有一种终结符短语,并且除它自身之外不再含任何更小素短语最左素短语:最左边素短语短语:P(相对于T、E)、P+T(相对于E)、i(相对于P、F)、P+T+i(相对于E)直接短语:P、i 句柄:P (最左边直接短语)素短语:P+T 、i (至少具有一种终结符短语)最左素短语:P+T7.二义性文法:有两个不同最左推导或有两个不同最右推导或能产生两棵语法树8.文法产生式正规式规则1 A→xB B→y A = xy规则2 A→xA|y A = x*y 右线性A→Ax|y A = yx* 左线性规则3 A→x A→y A = x|y9.DFA 初态唯一,转换函数为单值映射表达方式:转移矩阵、状态转换图状态转换图上若存在一条从初态到某一终态道路,且这条路上所有弧标记符连成字符串为t,则称t被DFA接受。

10.NFA初态可为各种,转换函数为多值映射拟定化:与某一NFA等价DFA不唯一1.状态集合Iε-闭包2.move函数最小化:消除多余状态和合并等价状态多余状态:从自动机开始状态出发,任何输入串也不能到达那个状态;或者从这个状态没有通路到达终态。

11.左公因子显式左公因子提取若A→αβ1|αr,则将其改写为:i.A→α(β1|r)ii.或引入新非终结符A→αA’A’→β1|r 隐式左公因子:产生式右部以非终结符开始用该非终结符右部以终结符开始产生式去替代它,再提取S→aSd|Ac A→aS|b把A产生式代入S中:S→aSd|aSc|bcS→aS S’S’→d|c S→bc12.左递归1.简朴左递归:消除左递归改写为右递归A→Aα|βA→βA’A’→αA’|ε2.间接左递归非终结符号排序(浮现频率高排背面)左部非终结符下标 > 右部时改写(替代右部)消除直接左递归13.自顶向下:LL(1)FIRST:A→X1X2X3…Xn若X1 ⇒εX2 ⇒εX3 !⇒ε背面不用管则FIRST(A)= First(X1)-{ε} U First(X2)-{ε} First(X3)若全能推出ε则先求所有FIRIST(X)-{ε}并集再并上{ε} FOLLOW:•(a)设S为开始符号,则#∈FOLLOW(S)•(b)若有产生式A→αBβ,β !⇒* ε,则FIRST(β) 加至FOLLOW(B)•(c)若β⇒*ε(即ε∈FIRST(β)),则FIRST(β)-{ε}和FOLLOW(A)加至FOLLOW(B) SELECT:A→α可选集SELECTα !⇒ε,则SELECT(A→α)= FIRST(α)*α⇒ε,则SELECT(A→α)= FIRST(α)-{ε}∪FOLLOW(A)*对于G每个非终结符号A任何两个不同产生式A→α,A→β满足:▪SELECT(A→α)∩SELECT(A→β)=∅▪α、β不同步推导出εLL(1)含义:第一种L:从左到右扫描输入串第二个L:分析过程中用最左推导1:只需向右看1个输入符号(Look ahead)便可拟定选用哪个产生式进行推导–LL(1)文法是无二义。

–LL(1)文法不含左递归。

14.自底向上:算符优先、LR(0)、SLR(1)、LR(1)、LALR(1)15.规范归约:最右推导逆过程(最左归约)•最右推导是规范推导右句型(最右推导可得句型)是规范句型•规范句型特点:句柄后(右边)不会浮现非终结符•规范归约中心问题是:如何寻找或拟定一种句型句柄。

•可归约串:•最左素短语(算符优先分析法)•句柄(LR分析法)算符优先分析法不是规范归约办法。

16.若文法G中不存在右部具有相邻非终结符产生式,则G为算符文法算符优先分析可归约串是句型最左素短语。

起决定作用是相邻两个终结符优先关系a≡b 当且仅当G中存在产生式规则A→…ab…,或A→…aBb…a<⋅b 当且仅当G中存在产生式规则A→…aB…,且B⇒+b…或B⇒+Cb…a⋅>b 当且仅当G中存在产生式规则A→…Bb…,且B⇒+…a或B⇒+…aC 不容许有a<·b、a≡b、a·>b中两种关系同步存在17.FIRSTVT计算如下:若有产生式A→a…或A→Ba…则a∈FIRSTVT(A) A左侧终结符< FIRSTVT(A)若a∈FIRSTVT(B)且有产生式A→B…(B背面没有紧跟一种终结符)则a∈FIRSTVT(A)A->a.......,即以终结符开头,该终结符入FirstvtA->B.......,即以非终结符开头,该非终结符Firstvt入AFirstvtA->Ba.....,即先以非终结符开头,紧跟终结符,则终结符入FirstvtLASTVT计算如下:若有产生式A→…a或A→…aB则a∈LASTVT(A) A右侧终结符< LASTVT (A)若a∈LASTVT(B)且有产生式A→…B则a∈LASTVT(A)A->.......a,即以终结符结尾,该终结符入LastvtA->.......B,即以非终结符结尾,该非终结符Lastvt入ALastvtA->.....aB,即先以非终结符结尾,前面是终结符,则终结符入Lastvt18.LR分析法归约过程是规范推导逆过程,因此LR分析过程是一种规范归约过程无回溯“移进-归约”办法符号栈中符号是规范句型前缀,且不含句柄后来任何符号(活前缀)ACTION 移进归约接受出错ACTION[i,a]=空白出错ACTION[i,a]=acc 符号栈中仅有#和文法开始符号S,输入串仅为#,分析结束。

19.一种句型某个前缀后缀是该句型句柄,则这个前缀称为该句型可归前缀。

一种规范句型一种前缀,若不含句柄之后任何符号,则称它为该句型一种活前缀。

S -> a Ac. B e 项目中.之前a Ac为活前缀20.A→α⋅ aβ,a∈V T 移进项目A→α⋅ Bβ,B∈V N 待归约项目A→α⋅归约项目特别地:A→ε只有A→⋅S’→S,S’→S ⋅接受项目以上项目称作LR(0)项目。

21.LR(0) 项目集规范族(辨认G活前缀DFA)如果不存在移进-归约冲突,归约-归约冲突,则称它是LR(0)文法。

拓展文法目:使文法只有一种以辨认符号作为左部产生式,从而使构造出来分析器有唯一接受状态。

22.对给定文法,运用LR(0)办法判断符号串与否为该文法句子:1.扩充文法为拓广文法;2.构造辨认此文法所有活前缀DFA,即构造LR(0)项目集规范族;3.判断与否为LR(0)文法;4.是构造LR(0)分析表运用LR分析算法分析符号串。

5.否,做其她解决。

23.SLR(1)对所有非终结符都求出其FOLLOW集合发生冲突时,归约项目左部终结符FOLLOW集与移进项目.后终结符交集为空时,才干按此规约项目产生式进行归约。

–LR(0)分析对所有终结符均采用归约动作–SLR(1)分析参照FOLLOW集,以拟定归约动作。

24.Follow集无法解决移进-归约冲突或归约-归约冲突,考虑后继符25.归约动作选取:a)LR(0)分析考虑所有终结符b)SLR(1)分析参照FOLLOW 集,为了拟定归约c)LR(1)分析仅考虑LR(1)项目中后继符(归约展望集,向前搜索符)拓展文法后继符为#,即[ S’->S ,#] 为初态集初始项目,S后first( ,#) = {#}LR(1)项目集规范族中,每个状态中添加新产生式时,需求产生式左部字母背面First 集作为新产生式后继符;否则后继符照抄前一种状态I :A->a.BβB->.e ,需求出First(β)作为B->.e后继符26.任何二义文法决不是一种LR文法LL(k)文法都是LR(k)文法。

27.a=b*c+b*d 逆波兰式:abc*bd*+= (算符优先一种应用)无括号;运算对象顺序不变;运算符号位置反映运算顺序。

◆三元式运算成果用三元式编号表达b*c (*,b,c)◆四元式运算成果用暂时变量表达b*c (*,b,c,t)a:=b*c+b*d三元式表达a:=b*c+b*d四元式表达注意最后一步写法四元式直观写法:t1:=b*c t2:=b*d t3:=t1+t2a:=t3中间代码优化解决时,四元式比三元式以便多28.终结符只有综合属性,由词法程序提供;非终结符可有综合也可有继承属性,但文法开始符号无继承属性。

29.按优化所涉及程序范畴可分为三种级别:局部优化、循环优化、全局优化。

局部优化指在只有一种入口一种出口基本块内进行优化。

30.鉴定入口语句规则:(a)代码序列第1个语句。

(b)条件或无条件转移语句转移目的语句。

If… goto Goto(c)紧跟在无条件转移语句或条件转移语句背面语句。

例:B1 -> (1) read x(2) read yB2 -> (3) r:=x mod y(4) if r=0 goto (8)B3 -> (5) x:=y(6) y:=r(7) goto (3)B4 -> (8) write y(9) halt基本块i和基本块j满足如下条件之一,则从i引一条有向边到j 。

1.j紧跟在i之后,且i出口语句不是goto或停语句,可以是if goto S语句如B2到B32.i出口语句是goto S语句或“[if]goto S”语句,而S是j入口语句,i是j前驱结点。

相关文档
最新文档