编译原理 期末复习笔记整理(上)

资料借鉴:

【编译原理】期末复习 零基础自学_哔哩哔哩_bilibili

编译原理笔记

第一章 引论

1.编译原理逻辑过程:

词法分析        语法分析        语义分析        中间代码生成        编译代码生成

2.词法分析

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

依循的原则:构词规则

描述工具:正规式和有限自动机 FOR  I   :=     1   TO    100   DO

                                             保留字 标识符 等符  整常数 保留字 整常数  保留字

例如:

基本字(保留字:组成命令的关键字,系统定义好的单词):void,int,float 标识符 (用户定义的函数名、变量名等):jisuan,a,b,c,d,x,y 整常数:50 运算符:*, +, = 界限符(分隔开两部分的符号):{  } ;,( )

需要注意的是:

词法分析依照此法规则,识别正确的单词,并将其转换成统一规格(类号、内码),备用。 转换规则包括:对基本字、运算符、界限符的转换规则(有限的、可数的),对标识符的转换规则,对常数的转换规则等。

3.符号串:

符号串集合:

(注意空集和空串不同,空集是连空串都没有的集合)

4.闭包与正闭包:

和符号串的方幂不同,符号串的方幂运算是将自己重复n次,而∑的方幂运算属于多个符号串的乘积运算。

5.文法和语言:

(上下文无关文法          左部:非终结符         右部:出非终结符外还有终结符)

6.推导与约归

关键在于x中是否包含终结符和非终结符,句子属于句型的一种

对标识符的定义是用文法来表示的

7.递归规则

第二章 高级语言及其语法描述

1.常用的高级语言  

FORTRAN    数值计算  

COBOL        事务处理  

PASCAL    结构程序设计  

ADA        大型程序、嵌入式实时系统

PROLOG    逻辑程序设计  

ALGOL        算法语言  

C/C++        系统程序设计  

Java        Internet程序设计

与机器语言或汇编语言比较,高级语言的优点: 较接近于数学语言和工程语言,比较直观、自然和易于理解; 便于验证其正确性,易于改错; 编写效率高; 易于移植.

2.语法

词法规则单词符号的形成规则。 单词符号是语言中具有独立意义的最基本结构。一般包括:常数、标识符、基本字、算符、界符等。 描述工具:有限自动机

语法规则语法单位的形成规则。 规定了如何从单词符号形成语法单位; 语法单位通常包括:表达式、语句、分程序、过程、函数、程序等; 描述工具:上下文无关文法

3.语义

对于语言来说,不仅要给出它的词法、语法规则,而且要定义它的单词符号和语法符号的意义。离开了语义的语言只是一堆符号的集合。各种语言中有形式上完全相同的语法单位,含义却不相同。 语义:对某种语言,定义一组规则,用它可以定义一个程序的意义,称为语义规则。

4.语法分析树:

语法树又叫做推导树

语法树每一个节点都是终结符或者非终结符

树根是语法开始符号

有分支的节点的一定是非终结符;反之不一定成立

最左推导:每次替换都是从最左边的非终结符进行替换

最右推导(规范推导):

 

最左推导和最右推导画出来的语法树是相同的

5.规范句型(右句型):规范推导过程中出现的举行

6.二义性:

7.句型的分析:

句型的分析就是识别一个符号串是否为某文法的句型,是某个推导的构造过程

可分为两大类,自顶向下和自底向上

        所谓自顶向下分析法,是从文法的开始符号出发,反复使用各种产生式,寻找“匹配”于输人符号串的推导。自底向上的方法则是从输人符号串开始,逐步进行“归约”,直至归约到文法的开始符号。
        从语法树建立的方式可以很好理解这两类方法的区别。自顶向下方法是从文法符号开始,将它作为语法树的根,向下逐步建立语法树,使语法树的末端结点符号串正好是输入符号串;自底向上方法则是从输人符号串开始,以它作为语法树的末端结点符号串,自底向上地构造语法树。

自底向上=>短语、简单短语、句柄:

子树末端结点符号串是相对于子树根的短语

简单子树的末端结点构成的符号串是相对于简单子树的短语(简单短语又叫做直接短语)

最左简单子树的末端节点组成的符号串是句柄

第三章 正规式和有穷自动机

1.正规式:

正规式和正规文法本质上是等价的

2.五元组

确定了有穷自动集之后,等于号后面最多有一个状态

终态一定要写成一个集合

3.有穷自动机

不确定的有穷自动机确定化:

第四章 First和Follow集与LL(1)文法

LL(1)文法:自顶向下请求

(一般做题时,小括号中的内容都是满足的)

可以对非LL(1)文法进行等价变换,但不一定都能变成LL(1)文法

直接消除左递归等于将左递归变成了右递归

递归下降分析技术:

表驱动分析技术:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值