编译原理复习第二章

系列文章目录

编译原理_MOOC




前言

高级程序设计语言相对机器语言或汇编语言,更接近于数学语言和工程语言,更直观、自然和易于理解;更容易验证其正确性、改错;编写程序的效率更高;更容易移植。

二、高级语言及其语法描述

2.1程序设计语言的定义

语法:一组规则,用它可以形成和产生一个合式的程序,包括词法规则、语法规则(产生规则)。

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

语法规则: 语法单位(通常包括:表达式、语句、分程序、过程、函数、程序等)的形成规则
描述工具:上下文无关文法。

语义: 定义一个程序的意义的一组规则
描述方法:自然语言描述(二义性、隐藏错误和不完整性)
在这里插入图片描述
程序语言的每个组成成分都有抽象的逻辑的意义(数学意义)和计算机实现的意义(具体实现)。

2.2高级语言的一般特性

高级语言的分类

强制式语言/过程式语言:特点是命令驱动、面向语句。如FORTRAN、Pascal、C、Ada等。
应用式语言:注重程序所表示的功能,而不是一个语句接一个语句地执行。如LISP、ML
基于规则的语言:检查一点的条件,当它满足值,则执行适当的动作。如Prolog
面向对象语言:支持封装、继承和多态性,如Smalltalk、C++、Java

程序结构

在这里插入图片描述在这里插入图片描述在PASCAL语言中使用最近嵌套原则确定名字的作用域(一个名字能被使用的区域范围)
在这里插入图片描述在这里插入图片描述

数据类型与操作

数据类型通常包括三要素:用于区别这种类型数据对象的属性;这种类型的数据对象可以具有的;可以作用于这种类型的数据对象的操作
在这里插入图片描述
标识符:以字母开头的,由字母或数字组成的字符串(语法概念)
名字:标识程序中的对象(语义概念),有确切的意义和属性;值:单元中的内容,名字所表示的一个具体对象。属性:类型和作用域。

标识符和对象的关联叫做绑定。名字的绑定发生在编译过程中的绑定叫做静态绑定(变量声明、类型定义、函数定义),发生在程序执行过程中间的绑定叫做动态绑定(C++中多态性、虚函数)。
数据结构
数组:逻辑上,数组是由同一类型数据组成的某种n维矩形结构,沿着每一维的距离,称为下标。编译时能确定其存储空间的大小的称作确定数组(不可变数组,一般语言支持);不能确定的为可变数组(少数语言)。在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

语句和控制结构

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

2.3 程序语言的语法描述

文法: 描述语言的语法结构的形式规则
字母表:一个有穷字符集,记为 Σ \Sigma Σ。字母表中的每个元素称为字符, Σ \Sigma Σ上的字(也叫字符串)是由 Σ \Sigma Σ中的字符所构成的一个有穷序列。
不包含任何字符的序列称为空字,记为ε
Σ \Sigma Σ*表示 Σ \Sigma Σ上所有字的全体,包含空字ε
例:设 Σ \Sigma Σ={a,b},则
Σ \Sigma Σ* = {ε,a,b,aa,ab,ba,bb,aaa,aab,…}
Σ \Sigma Σ*的子集U和V的 连接(积) 定义为
UV = {αβ|α∈U & β∈V}
例:设U = {a,aa} V = {b,bb}
VU={ba,baa,bba,bbaa}
在这里插入图片描述如果V中原来没有空字,V*(含空字),正规闭包不含空字,二者此情况下不等。

上下文无关文法

在这里插入图片描述
上述定义英文句子的规则可以说就是一个上下无关文法
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
递推角度:1、2;满足语言的最简单句子是ab;如果S是满足条件的句子,那么在其前面加一个a,后面加一个b得到的串也应是满足条件的句子。
递归角度:2、1;若S产生的前一半是若干个a,后一半是若干个b,而且a和b的数目相同的话,那么拿掉其开头的a和结尾的b,剩下的串应满足条件;按此方法递归下去,不断把第一个a、最后一个b拿掉,最后得到的最简单的句子为ab。
在这里插入图片描述最左推导: 任何一步α => β都是对α中的最左非终结符进行替换。同理可定义最右推导

语法分析树与二义性

在这里插入图片描述在这里插入图片描述二义性问题是不可判定问题,即不存在一个算法能在有限步骤内,确切地判定一个文法是否是二义的
可以找到一组无二义文法的充分条件
在这里插入图片描述

形式语言鸟瞰

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

总结

依旧是很多图片,会一些符号,有的符号打不出来。图片内容来自中国大学MOOC平台国防科技大学编译原理课程。这样效率有的低啊,才两章,抓不住精髓,跟抄PPT一样,不精炼。端午节安康!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值