编译原理一至七章总结

本文档总结了编译原理一至七章的核心内容,包括词法分析、语法分析、语义分析、中间代码生成等阶段的任务,深入探讨了上下文无关文法、正规表达式、有限自动机、LL(1)分析法、算符优先分析等关键概念,并介绍了消除文法二义性和左递归的方法。此外,还涉及到了属性文法、S-属性文法的自下而上计算以及L-属性文法的自顶向下翻译,以及中间代码在编译过程中的重要作用。
摘要由CSDN通过智能技术生成

* 编译原理第一章内容概述


* 编译原理第二章内容概述:上下文无关文法,最左推导,最右推导,语法分析树与文法的二义性

* 编译原理第三章内容概述:正规表达式与有限自动机(DFA与NFA)

* 编译原理第四章内容概述:LL(1)分析法

* 编译原理第五章内容概述:算符优先分析法

* 编译原理第六章内容概述:S-属性文法的自下而上计算

                                       L-属性文法的自顶向下翻译

* 编译原理第七章内容概述:中间代码生成

第一章


各阶段的任务:

* 词法分析任务:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个单词。

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

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

* 优化阶段任务:对前段产生的中间代码进行加工变换,以期在最后阶段能产生出更为高效的目标代码。

* 目标代码生成任务:把中间代码变换成特定机器上的低级语言代码。

第二章


语法分析树与二义性

1.语法树的根结由开始符号所标记。

2.随着推导的展开,当某个非终结符被它的某个候选式所替换时,这个非终结符的相应结就产生了下一代新结点。每个新结点

   其父亲结点间都有一条连线。

3.在一棵语法树生长过程中的任何时刻,所有那些没有后代的端末结自左至右排列起来就是一个句型。

例如对于文法 E→E+E|E*E|(E)|i, 关于(i*i+i)的推导形成语法树如图



语法树有不唯一性,如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是二义的。

也就是说,若一个文法存在某个句子,它有两个不同的最左(最右)推导,则这个文法是法是二义的。   

关于文法二义性的几个问题:

1.文法二义不等于语言二义

2.文法的二义性是不可判定的

3.文法的二义性证明:找出一个句子,它有两个不同的最左推导或最右推导

4.文法二义性的消除:给每个产生式定义优先级

消除文法二义性的方法:定义优先级和结合性,引入新的非终结符,建立新的产生式。

形式语言鸟瞰:

* 0型文法(短语文法)

* 1型文法(上下文有关文法)

* 2型文法(上下文无关文法)

* 3型文法(右/左线性文法)



第三章

状态转换图

构造一个识别标识符的状态转换图


构造一个识别整数的状态转换图



识别实型常数的状态转换图


 正规表达式与有限自动机

我们可以把具有相同特征的字放在一起组成一个集合,即所谓的正规集,然后使用一种形式化的方法来表示正规集,即所谓的正

规式。

[注]:

正规式是描述单词结构的一种形式;

正规集是该类单词的全集。

正规式与正规集的定义(递归的定义方法):

(1)ε和φ是∑上的正规式,它们所表示的正规集分别为{ε}和φ

(2)任何a∈∑,是∑上的一个正规式,他所表示的正规集为{ a }

(3)假定U和V都是∑上的正规式,他们所表示的正规集分别记为L(U)和L(V),那么

(a) (U|V)是正规式,所表示的正规集为L(U)∪L(V)

        (b) (UV)是正规式,所表示的正规集为L(U) · L(V)(连接积)

(c) (U)*是正规式,所表示的正规集为 (L(U))*(闭包)

仅由有限次使用(1)(2)(3)所得到的表达式才是∑上的正规式,仅由这些正规式所表示的字集才是∑上的正规集。

若两个正规式U和V所表示的正规集相同,则认为二者等价,记为: U = V

1.状态转换矩阵表示法

设DFA M = ({0,1,2,3},{a, b}, f, 0, {3}),其中

f: f(0, a) = 1, f(0, b) = 2   f(1, a) = 3, f(1, b) = 2   f(2, a) = 1, f(2, b) = 3   f(3, a) = 3, f(3, b) = 3


2.用状态转换图来表示

设DFA M = ({0,1,2,3},{a, b}, f, 0, {3}),其中

f: f(0, a) = 1, f(0, b) = 2   f(1, a) = 3, f(1, b) = 2   f(2, a) = 1, f(2, b) = 3   f(3, a) = 3, f(3, b) = 3

非确定的有限自动机

定义:一个非确定有限自动机(NFA)M是一个五元式

M = (S, ∑, f, S0, F),其中

* S是一个有限的状态集合,它的每个元素我们称为一个状态

* ∑是一个有限的输入符号的字母表,它的每个元素我们称为一个输入字符

* f是从S×∑*→2S 的部分映射,其中,2S表示S的幂集合(所有S的子集组成的集合)(f是非单值的M是非确定)

* 状态集合S0是初始状态集合,它是S的子集

* 状态集合F是终止状态的集合,它是S的子集

NFA M表示方法:

1.用状态矩阵表示

设NFA M = ({0,1,2},{a, b}, f, {0}, {1,2}),其中

f: f(0, aa) = 1, f(0, bb) = 2   f(0, a) = 0, f(0, b) = 0   f(1, a) = 1, f(1, b) = 1   f(2, a) = 2, f(2, b) = 2


2.用状态转换图表示

设NFA M = ({0,1,2},{a, b}, f, {0}, {1,2}),其中

f: f(0, aa) = 1,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值