编译原理知识点整理
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一个文法 G 是 LL(1)文法的充要条件是,对任一 A ∈ VN 的两个产生式 A®α, A®β,满足 SELECT (A®a)∩SELECT(A®β)=Φ,其中a,β 不能同时=> e 若文法中含有 A®αβ | αγ,提取左公因子 一个文法含有左递归时不能采用自顶向下分析法,直接左递归:A®Aβ;间接左递归:A®Bβ,B®Aα 消除直接左递归 A®Aα | β,引进新非终结符 A′ 变换为:A®βA′,A′®αA′ | ε 消除间接左递归先变换为直接,而后消除直接 预测分析法:求 SELECT 后构造分析表,进行输入串的分析(详见书 P94)
3/3
第五章 自顶向下语法分析ห้องสมุดไป่ตู้法
从开始符出发,如何根据当前的输入符号(单词符号)唯一地确定选用哪个产生式替换相应非终结符往 下推,或构造语法树 ε 不可能在 FOLLOW、SELECT 集合中 给定产生式 A®α,A∈VN,α∈V*,则Select A → α = ������������������������������ ������ , ������ ≠> ������ ������������������������������ ������ − ������ ∪ ������������������������������������ ������ , ������ => ������
第四章 词法分析
词法分析的基本思路是:将单词符号的词法用有效的工具描述;基于该描述建立单词的识别机制;设计 和实现词法分析程序 正规文法(3 型文法) :产生(接受)语言为正则集产生式形式是:A ® aB 或 A ® a,A、BÎVN , a Î VT 正规式和它所表示的正规集的递归定义:设字母表为∑,辅助字母表∑’={Φ,ε,•,*,|,(,)} 正规式®正规文法 (1) 对任何正规式 r,选择一非终结符 S,生成产生式:S®r (2) 若 x 和 y 是正规式,对形如 A®xy 产生式,重写成:A®xB,B®y (3) 对形如 A®x*y 产生式,重写为:A®xB,A®y,B®xB,B®y (4) 对形如 A®x | y 的产生式,重写为:A®x,A®y 正规文法®正规式 (1) 对任何正规式 r,选择一非终结符 S,生成产生式:S®r (2) 若 x 和 y 是正规式,对形如 A®xy 产生式,重写成:A®xB,B®y (3) 对形如 A®x*y 产生式,重写为:A®xB,A®y,B®xB,B®y
2015-2016 学年上半学期编译原理课程整理
编译原理
第一章 编译程序概述
编译器就是一个程序,它读入用某种语言编写的源程序,并翻译成一个与之等价的另一种语言编写的源 程序。 词法分析:识别出单词并用记号方式表示,进行词法检查,删除空白符、注释等 语法分析:建立语法树,检查形式语法错误 语义分析:检查动/静态语义错误,识别表达式和语句中的操作信息及类型信息 中间代码生成:产生源程序的一个显式中间表示 代码优化:试图改进中间代码,以产生执行速度较快的机器代码 代码生成:把中间代码或语义分析的结果转换成目标代码程序 (详见书 P2)
1/3
2015-2016 学年上半学期编译原理课程整理
确定的有穷自动机(DFA)中 K:有穷状态集,å:有穷字母表,f:K´å ®K 的映像(单值映射) ,S: 初态,Z:终态集 非确定的有穷自动机(NFA)中,S 为初态集 (NFA 和 DFA 的转换见书 P58) DFA 化简中多余状态: 指从开始状态出发不能够达到的状态; 等价状态: 指从两个状态出发产生的 (子) 串集相同(详见书 P60) 两个状态 s 和 t 等价的条件: 一致性条件: s 和 t 同时为终态或非终态 蔓延性条件:对于所有输入符号,s 和 t 必须转到等价的状态里
第三章 文法和语言
文法 G 定义为四元组 G =(VN,VT,P,S) 0 型文法(短语文法) :a ® b,aÎ(VN∪VT ) +,b Î (VN∪VT)* 1 型文法(上下文有关文法) :a ® b,½a½£½b½,aÎ(VN∪VT ) +,b Î (VN∪VT)* 2 型文法(上下文无关文法) :A ® b,AÎVN , b Î (VN∪VT)* 3 型文法(正规/则文法) :A ® aB,A ® a,A、BÎVN , a Î VT (详见书 P38) 如果一个文法 G 存在某个句子,使得它有两棵语法树,则称 G 为二义性文法 如果在推导的任何一步a=>b,都是对a中的最左/右非终结符进行推导分别为最左/右推导 每棵子树的叶组成一短语;每棵简单子树的叶组成简单短语;最左简单子树的叶组成句柄 由某一结点及其所属分枝组成的部分称为子树;只有单层分枝的子树称为简单子树 (详见书 P44)
第六章 自底向上优先分析法
自底向上分析法关键是如何确定栈顶上的句柄 根据文法建立树,分析优先级关系得简单优先关系矩阵,分析语句出现>进行规约 算符文法中任何句型都不包含相邻的非终结符,且如果 Ab 或(bA)出现在算符文法的句型 γ 中,则 γ 中任何含 b 的短语必含 A 设有一不含 ε 产生式的算符文法 G, 如果对任意两个终结符对 a,b 之间至多只有三种关系的一种成立, 则称 G 为算符优先文法(详见书 P108) 算符优先文法的优先关系(求 FIRSTVT、LASTVT 见书 P113) : (1) = 关系:若 A®…ab…或 A®…aBb…,则 a=b (2) < 关系(列坐标) :若 A®…aB…,则对每一个 b∈FIRSTVT(B),a<b (3) > 关系(行坐标) :若 A®…Bb…,则对每一个 a∈LASTVT(B),a>b 构造优先函数:若 a=/</>b 则 f(a)= /</>g(b),f 为列,g 为行(列表见书 P118)
第七章 LR 分析方法
一个 LR 分析器由 3 个部分组成:一个总控(驱动)程序、一张分析表(Action 和 Goto) 、分析栈 一个句型的左起部分称为前缀,把形成可归前缀之前包括可归前缀在内的所有规范句型的前缀都称为活
2/3
2015-2016 学年上半学期编译原理课程整理
前缀 产生项目时若是空产生式,如 A®ε 仅产生项目 A®• 项目分为四种: (1) 移进项目:形如 A®α • aβ,aÎVT (2) 待约项目:形如 A®α • Bβ,BÎVN (3) 归约项目:形如 A®α • (4) 接受项目:形如 S'®S• 一个文法的 LR(0)项目集规范族中的项集不存在“移进—归约” ,或“归约—归约”冲突时,称该文法为 LR(0)文法 SLR(1)方法:是 LR(0)的一种改进,为了解决 LR(0)项目集中的项目“冲突”问题,在含有冲突项目的状 态下向前看一个符号的简单 LR(1)方法 假 定 一 个 LR(0) 项 目 集 规 范 族 中 含 有 如 下 项 目 集 : I={X®α•bβ , A®γ• , B®δ•} , 若 满 足 : FOLLOW(A)∩FOLLOW(B)∩{b}=Φ,则当在状态 I 时面临输入符为 a 时,动作可由如下规定决策: (1) 若 a=b,则移进 (2) 若 a∈FOLLOW(A),则用 A®γ 归约 (3) 若 a∈FOLLOW(B),则用 B®δ 归约 (详见书 P138)
第八章 语法制导翻译和中间代码生成
语法制导翻译:借用语法分析程序进行控制(确定语法成分) ,在语法分析过程中,根据每个产生式对应 的的语义子程序(语义动作) ,进行翻译的办法 逆波兰式即是表达式的后缀表示 中缀Þ后缀方法找最后被运算的运算符向后移 三元式的一般形式:(i):(op , ARG1 , ARG2),实现 i:=ARG1 op ARG2 四元式的一般形式:(i)(op , ARG1 , ARG2 , RESULT),实现 RESULT:= ARG1 op ARG2 (赋值语句的翻译及语句分析见书 P180) 布尔表达式的翻译方法:not c:(not , c , _ , t1),t1:=not c