编译原理复习

第一章导论的图
NFA:只有一个唯一的开始状态
DFA:没有ε,对任何状态s和任何输入符号a,最多只有一条标记为a的边离开s。
NFA转化为DFA
在这里插入图片描述
DFA的化简:初始化分:终态和非终态
在这里插入图片描述
在这里插入图片描述
NFA转化为正则表达式
在这里插入图片描述
在这里插入图片描述
正规式转化为NFA
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

语法分析

在这里插入图片描述
上下文无关文法的定义
一个上下文无关文法G是一个四元组(VT,VN,S,P),其中

  1. VT是一个非空有限集合,其元素称为终结符。
  2. VN是一个非空有限集合,其元素被称为非终结符,并有VT ∩ VN = 空集。
  3. S是一个非终结符,称为开始符号,它定义的终结符串集就是文法定义的语言
  4. P是产生式的有限集合,每个产生式的形式是 A -> a,其中A ∈VN, α ∈ (VT ∪ VN)

有上下文无关语法产生的语言叫做上下文无关语言,如果两个文法产生同样的语言则称这两个文法等价。

句子,句型和语言

  • 假定G是一个文法,S是他的开始符号。如果S=*>a,则称a是一个句型
  • 仅含终结符的句型是一个句子
  • 文法G所产生的句子的全体是一个语言,它记为L(G)

**最左推导:**每一步都是代换句型中最左边的非终结符的推导
**最右推导:**每一步都是代换句型中最右边的非终结符的推导
最右推导又称规范推导

二义性
一个文法,如果存在某个句子有不止一颗分析树与之对应,则称这个文法是二义的。

自上而下分析 --LL(1)

自上而下分析的基本思想:

  • 从文法的开始符号出发,向下推导,推出句子
  • 针对输入串,试图用一切可能的办法,从文法开始符号(根节点)出发,自上而下地为输入串建立一棵语法树。
    自上而下带来的问题是左递归和回溯
    自上而下的分析方法不能用于左递归文法,需要消除左递归。有形式为A->Aa的产生式引起的左递归称为直接左递归。

对左递归:A -> Aα | β,可以用非左递归
A -> βA
A -> α A | ε
来代替,而且并没有改变从A推导出来的串集。

间接左递归的消除:
R Q S排序,排在前面的只能使用后面的来表示自己,到S就只剩自己能表示自己
在这里插入图片描述

FIRST

在这里插入图片描述
提取公共左因子的目的是让A的每个候选的FIRST集合都不同, 这样需要的时候可能准确指派某个候选,
在这里插入图片描述

FOLLOW集合

在这里插入图片描述

LL(1)分析法

在这里插入图片描述
在这里插入图片描述
FIRST(X):
如果X是终端符号:FIRST(X)={X}
如果X是非终端符号:

  • 如果有X->a…(a为终端符号),则将a加入FIRST(X),若X->ε也是一条产生式则将ε也加入FIRST(X)
  • 如果有X->Y,且Y为非终端符号,则将FIRST(Y)中的非ε加入到FIRST(X)中
  • 如果有X->Y1Y2…
    • 如果Y1没有ε则按情况2处理
    • 如果Y1到Yi-1都有ε,则Y1到Yi的FIRST集合的非ε都要加入到X中

在这里插入图片描述
在这里插入图片描述
构造FOLLOW集合

  1. 先把#放在文法开始符号S的FOLLOW(S)
  2. 如果是A->αBβ,则将FIRST(β) \ {ε}加入到FOLLOW(B)中
  3. 如果有A->αB或者(A->αBβ且ε∈FIRST(β)),则将FOLLOW(A)加到FOLLOW(B)中
    在这里插入图片描述

LL(1)-----预测分析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

构造预测分析表M:
在这里插入图片描述
在这里插入图片描述
注意ε
在这里插入图片描述

LL(1)文法一定不是二义的。

自下而上分析—LR(0)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
LR分析表包含ACTION和GOTO

在这里插入图片描述
在这里插入图片描述

能用于构造LR分析表且是的每一个入口都是唯一确定的文法是LR文法
活前缀是规范句型的一个前缀
在这里插入图片描述
LR分析表的构造:构造一个DFA,能够识别一个文法G的所有活前缀
构造DFA都是通过构造NFA来实现的,扩广的目的是为了只有一个开始状态
在这里插入图片描述
在这里插入图片描述
使用项目集的概念进行该DFA的构造:

在这里插入图片描述
分析表的构造:
在这里插入图片描述

LR文法会遇到移进规约冲突所以产生SLR文法:一个项目集中同时包含规约项和移进项。

在构造规约项的时候做限制,不是一整行全部都置为rx,而是先看follow集合,输入符号在非终端符号的follow集合中才会进行对应的规约
在这里插入图片描述

在这里插入图片描述

属性文法和语法制导翻译

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值