大学课程编译原理第二版第2讲课件

合集下载

编译原理讲义第二章文法与语言.ppt

编译原理讲义第二章文法与语言.ppt
• 注意:在寻找一个句型的短语(或简单 短语)时,必须要求将这个短语规约为 相应的非终结符号后所得到的符号串仍 然是句型。
• 句柄:一个句型的最左简单短语称为该 句型的句柄。
• 定义句柄的原因:在自底向上识别一个 符号串时,总是规约这个句柄。
语言的定义(文法的语言)
• 文法的语言:一个文法G[Z]的语言,用 L(G[Z])表示,定义如下:
文法和语言的定义(推导)
• 直接推导:,,并且是文法中的一个重 写规则,那么我们说v可以直接推导到w, 或者w可以直接规约到v。记作 v => w。
• 例如: • 〈主语〉〈谓语〉〈状语〉 • =>〈名词〉〈谓语〉〈状语〉
文法和语言的定义(推导)
• 推导:对于符号串v和w,如果存在一个 直接推导序列u0=>u1=>…=>,并且u0,, 那么我们说v可以推导到w,或者w规约 到v。记作v =>+ w。
编译原理讲义 (章:文法与语言)
文法与语言
• 文法被用来精确而无歧义地描述语言的 句子的构成方式.
• 文法描述语言的时候不考虑语言的含义。
字母表
定义:字母表是有穷非空集合。
字母表包含了语言中所允许出现的一切符 号。
符号串
• 定义:符号串是由字母表中的符号所组 成的有穷序列。
• 一个语言的句子总是它的字母表的符号 串。这个符号串的组成必须是按照文法 规则组合而成的。
符号串集合
• 定义:若集合A中的一切元素都是同一个 字母表上的集合,那么A被称为该字母表 上的符号串集合。
• 在本课程中,语言被认为是句子的集合。 (外延定义?)所以,一个语言就是对 应于它的字母表上的一个符号串集合。
符号串集合的运算

编译原理编译原理02-授课文档PDF_2_2

编译原理编译原理02-授课文档PDF_2_2

句地执行
视频区域
LISP、ML
高级语言的分类
强制式语言(Imperative Languge)/过程式语言 应用式语言(Applicative Language) 基于规则的语言( Rule-based Language)
式(well-formed)的程序
视频区域
语法
词法规则:单词符号的形成规则
单词符号是语言中具有独立意义的最基本结构
一般包括:常数、标识符、基本字、算符、界符等
描述工具:有限自动机
视频区域
语法规则:语法单位的形成规则
语法单位通常包括:表达式、语句、分程序、过程、 函数、程序等;
高级程序设计语言概述
常用的高级程序设计语言 程序设计语言的定义 高级程序设计语言的一般特性
视频区域
高级语言的一般特性
高级语言的分类 程序结构 数据结构与操作 语句与控制结构
视频区域
编译原理
高级程序设计语言概述 ——高级语言的分类
高级语言的一般特性
高级语言的分类 程序结构 数据结构与操作 语句与控制结构
K.Nygaard 视频区域O. Dahl
John Cocke (1987) -- RISC & 编译优化
O. Dahl,K.Nygaard (2001) -- Simula语言和OO概念
Alan Kay(2003) -- SmallTalk语言和面向对象程序设计
Peter Naur(2005) -- ALGOL60以及编译设计
Frances E. Allen(2006)-- 优化编译器

Barbara Liskov(2008)--编程语言和系统设J计oh的n实Co践ck与e 理 论

[高等教育]编译原理与技术讲义-第2章_OK

[高等教育]编译原理与技术讲义-第2章_OK
在终结状态加了星号*,表示 在状态1、2和3都还不能确定 它们是否是符合最长匹配准则 的单词记号,还需要在读入一 个字符才能确定。
而为实现最长匹配的一个超前 搜索符号“其它”则不属于这 个单词,应该推给扫描缓冲区。
other
< =
0 >
1> = other
2 =
= 3
other
* 4 5 6
* 7 8 9
2021/8/18
6
2.1 词法分析器的设计
<1,’for’>
<3,’<=’>
例2.1:假如保留字的编码是1, 标识符的为2,运算符为3,分 界符为4,整型常量为10,实型 常量为11。那么,对于源程序 代码:
<4,’(’>
<10,’100’>
<2,指向i的符号表入口> <4,’;’>
<3,’=’>
编译原理与技术
第2章 词法分析
2021/8/18
1
主要内容
• 词法分析器的设计 • 词法分析器的一种手工实现 • 正规表达式 • 有限自动机 • 词法分析的自动生成器Lex
2021/8/18
2
词法分析器在编译中的位置
源程序
词法分 析器
单词 取下一个单词
语法分 析器 单词记号
符号表
2021/8/18
digit
1 digit
. 3
+, -
other
2
digit
E
digit
digit 4
E 5
6 +,
7
8
digit
digit

编译原理课件第二章

编译原理课件第二章

递归子程序法
递归子程序法:对应每个非终结符语法单元,,编一个独 立的处理过程(或子程序)。语法分析从读入第一个单词 开始,由非终结符<程序>(即开始符)出发,沿语法描述 图箭头所指出的方向进行分析。当遇到非终结符时,则调 用相应的处理过程,从语法描述图看,也就进入了一个语 法单元,再沿当前所进入的语法单元所指箭头方向继续进 行分析。当遇到描述图中是终结符时,则判断当前读入的 单词是否与图中的终结符相匹配,若匹配,再读取下一个 单词继续分析。遇到分支点时,将当前的单词与分支点上 多个终结符逐个相比较,若都不匹配时可能是进入下一个 非终结符语法单位或是出错。
N ö í ³ ´
ò ¡ í ó ´ Ó ´ Î
á ÷ ½ Ê
PL/0编译程序语义分析的设计与实现
PL/0编译程序语法、语义分析的的核心程序是BLOCK过程 , 说明部分的分析与处理 表格管理 过程体(语句)的分析与处理
jmp jmp int lod lit opr sto opr int opr sto lod lit opr jpc cal lit lod opr opr opr opr sto jmp opr
0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8 2 3 3 10 2 4 0 5 16 3 3 0 9 24 2 2 4 4 14 15 16 3 11 0
3 5 7 9 10 12 13 14
£ ¹ <
= =
Ç = ²
>
11
=
Ç = ²
, + - ( ¡ ¡ ­ ­
PL/0编译程序语法语义分析
PL/0编译程序语法分析的设计与实现

编译原理第二章课件

编译原理第二章课件
例1:文法G: S aSb | ab
L(G)={anbn|n≥1}
28
2.2.2 文法的分类
3型文法(又称线性文法、正则文法、正 规文法)
➢ 如果对文法G中的任一产生式均限制为形如: AB 或 A
其中: A,B∈VN , ∈VT 则称文法G为3型文 法。 ➢ 上述形式的3型文法也称为右线性文法。 ➢ 如果对文法G中的任一产生式均限制为形如:
A0 = { } A1 = { a,b } A2 = AA ={ aa,ab,ba,bb } A3 = A2A ={ aaa,aab,aba,abb,baa,bab,bba,bbb }
……
An =An-1A = AAA……A
12
2.1 基本概念
10.符号串集合的正闭包
设A为符号串的集合,则称A+为符号串集A的 正闭包.具体定义如下:
文法
字符串集合
16
2.2 .1 文法的定义
2.2.1 文法(Grammar)的定义 文法的定义
一个文法G是一个四元组: G = ( VN, VT, S, P )
其中:
➢ VT (Terminal Vocabulary)是一个非空的有限集合,
它的每个元素称为终极符号或终极符,一般用小 写字母表示。 从语法分析的角度看,终极符号是 一个语言不可再分的基本符号。
可合并为一个,缩写为:
P 1 | 2 | … | n
其中,每个i 称为 P 的一个候选式,符号“|” 读作“或” 。
21
⑥一个文法的核心是产生式。 一般约定:
用< >括起来或 大写字母:非终结符 不用< >括起来或小写字母:终结符
22
例1
G =(VN,VT, S, P) 其中:VN={ S , A}

编译原理―第2章 前后文无关文法和语言课件

编译原理―第2章 前后文无关文法和语言课件
?一组终结符号不能被替换的符号单词符号?一组非终结符号能够被替换为终结符号或非终结符号语法单位?一个开始符号从这个符号开始替换最大语法单位程序?一组产生式替换规则把左边的字符串替换为右边的字符串222文法和语言的形式定义19?关键思路?从文法的开始符号出发?反复使用产生式对非终结符进行替换展开?直到整个字符串中不再包含非终结符?这时得到了这个文法的一个句子一个程序?这个过程称为推导222文法和语言的形式定义20?文法的形式定义?产生式规则?产生式是一个有序对通常写作或
符号串集合的方幂: 设A是符号串的集合,则称Ai为符号串集A的 方幂,其中i是非负整数。具体定义如下:
A0 ={ε} A1 =A, A2=AA Ak= AA......A(k个)
11
2.2.1 基本概念和术语
集合的闭包
闭包
集合Σ的闭包Σ*定义如下:Σ*=Σ0∪Σ1∪Σ2∪Σ3∪… 例:设有字母表Σ={0,1},则
从文法的开始符号出发 反复使用产生式,对非终结符进行替换(展开) 直到整个字符串中不再包含非终结符 这时,得到了这个文法的一个句子(一个程序) 这个过程称为推导
19
2.2.2 文法和语言的形式定义
文法的形式定义
产生式(规则)
产生式是一个有序对(α, β),通常写作α→β(或α::=β)
Σ*=Σ0∪Σ1∪Σ2∪…={ε,0,1,00,01,10,11,000,…},即Σ*表示Σ上所有有穷长 的串的集合。
正闭包
Σ+ = Σ1∪Σ2∪Σ3∪…称为Σ的正闭包。 +表示上的除ε外的所有用穷长串的集合。
Σ*= Σ0∪Σ+ Σ+=ΣΣ*=Σ*Σ
12
2.2.1 基本概念和术语
例题 定义标识符是由字母开头、后跟字母或数字的任意组合构成, 设A={a,b,…,z},B={0,1,…,9},将所有标识符的集合用A和B的运算 来表示。

贵州大学_编译原理课件第二章(编译原理完整版)

贵州大学_编译原理课件第二章(编译原理完整版)

下一页 最后一页
退出
• 字母表是组成字符串的所有字符的集合。换句话说,字 符串中的所有字符取自字母表
• 定义中强调两个有限,因为计算机的表示能力有限 : <1> 字母表是有限的,即字母表中元素是有限多个;
<2> 字符串的长度是有限的,即字符串中字符个数是有限 多个。
• 由于字符串的有序性,使得以字符串作为元素的集合, 与一般意义下的集合有所不同,反映在集合运算上,强
➢ 实现方法:
最后一页 退出
– 作为单独的一遍:把字符流的源程序变为单词序列,输 出在一个中间文件上,这个文件作为语法分析程序的输
入而继续编译过程。
– 作为语法分析的子程序:当语法分析程序需要一个单词 时,调用该子程序;词法分析程序每得到一次调用,便
从源程序文件中读入一些字符,直到识别出一个单词或 直到下一单词的第一个字符为止。
便。运算符可采用一符一种的分法,但也可以把具
有一定共性的运算符视为一种。至于界符一般用一
符一种的分法
2.1.2 词法记号的属性
目 录 ➢ 如果一个记号只含一个单词符号,那么,对于这个
第一页 单词符号,记号就完全代表它自身了。若一个记号
上一页 下一页
含有多个单词符号,那么,对于它的每个单词符号, 除了给出记号之外,还应给出有关单词符号的属性 信息。
上一页
fi (a == f (x) ) …
下一页 ➢在实数是a.b格式下,可以发现下面紧急方式的错误恢复
➢错误修补
2.2 词法记号的描述与识别
目 录 ➢ 2.2.1 串和语言
第一页 上一页
– 从词法分析的角度看程序设计语言,它是由记号组成的 集合。
– 定义2.1 语言L是有限字母表∑上有限长度字符串的集合。

编译原理课件第2章

编译原理课件第2章

第2章 词 法 分 析
在计算机内部,可以有不同的方式来表示记号的类别和属性。 一般情况下,记号的类别可以用整型编码或枚举类型表示,如表 2.1中每个记号类别可以用括号中的整型编码表示,如01表示const, 82表示id等。根据记号类别的不同,记号的属性的值可以有不同 的表示方法。relation的属性值是一个有限可枚举集合,可以用每 个属性值在集合中的位置来表示它,如1表示<,2表示<=,依此 类推。id的属性值是一个无限可枚举集合,因此,只能用每个标 识符的原始输入形式(字符串)来表示,如pi、draw_line等。字面 量的属性根据情况,其表示方式也不同,如数字字面量可由转义 后的实际值表示,如表示为3.1416而不是“3.1416”,而字符串字 面量就无需转义。
第2章 词 法 分 析
例2.1 对于语句:position := initial + rate * 60,可以识别出 下述序列:
标识符 特殊符号 标识符 特殊符号 标识符 特殊符号 数 字字面量
其中position、initial、rate均被识别为标识符,因为它们均符 合同一条规则,即以字母打头的字母数字串。记号至少含有两 个信息:一个是记号的类别,如“标识符”;另一个是记号的 值,如“position”。显然,如果把记号看作是一个类型的话,则 单词就是一个类型中的实例。由于我们总是说识别出一个标识 符,而不说识别出一个position或rate,因而将词法分析器识别出 的序列称为记号流。
第2章 词 法 分 析 例2.2 表达式mycount > 25由表2.2的三个记号组成。其中标 识符的属性值也可以由mycount在符号表中的入口(下标)来表示。
表2.2 记号的表示
第2章 词 法 分 析

编译原理第二章

编译原理第二章
• 占8个字节,student.studclass占2个字节,student.math 占 个字节, 占 个字节, 个字节 个字节 个字节, 占4个字节,可计算三者对应的偏移量为 、8、10,若student记录结构在 个字节 可计算三者对应的偏移量为0、 、 , 记录结构在 运行时被分配一个基址a,则其各分量的地址为: 运行时被分配一个基址 ,则其各分量的地址为: :a student.studclass:a+8 student.math:a+10
3.字符串、表格和队列
• 不同的语言根据不同的需要会拓展出一些实用数据类型。 不同的语言根据不同的需要会拓展出一些实用数据类型。 • 有越来越多的语言把字符串作为一种基本的数据类型,串的长度不 有越来越多的语言把字符串作为一种基本的数据类型, 加限制。这种数据类型给各种处理文字语言的程序带来很多便利。 加限制。这种数据类型给各种处理文字语言的程序带来很多便利。
2.表达式
• 表达式由运算对象和算符组成,对于多数程序语言来说,表达式的形式规 则如下: • (1)变量(包括下标变量)是表达式。 • (2)若E1、E2为表达式,θ是一个二元算符,则E1θE2是表达式。表达式 一般采用中缀形式。 • (3)若E是表达式,θ为一元算符,则θE或Eθ是表达式。 3 θ θ θ • (4)若E是表达式,则(E)是表达式。
结构分量是通过名字而不是像数组元素那样通过下标访问的。结构分 量的名字是所谓复合名字,例如“结构名.分量名”。结构分量的使用 与基本数据结构定义的变量相同,如下述3个赋值语句: • ="LIMING" • student.studclass=3 • student.math=95.4 每个分量的存储地址由记录结构的首地址与相应分量的偏移地址相加 而成。记录结构的每个分量(域)所占用的存储字节数称为该域的长 度。通过累加分量的长度可计算出各分量的偏移量。

编译原理课件第二章

编译原理课件第二章
• 练习: 设文法G(N): N-〉D|ND D->0|1|2|3|4|5|6|7|8|9 给出句子00567,239的最左和最右推导。 最左推导: N=>ND=>NDD=>NDDD=>NDDDD=>DDDDD=>0DDDD=>00 DDD=>005DD=>0056D=>00567 最右推导 N=>ND=>N7=>ND7=>N67=>ND67=>N567=>ND567=>N05 67=>D0567=>00567 (另外一个大家做)
设G为一文法,A->α是G的一个产生式,如果α具有 uAδ的形式,其中u, δ同时为空则产生式A-> α是直接递 归;若存在推导A=> α=>* uAδ,则A->α为递归。 上述A称为直接递归和递归非终结符。 u为空而δ不为空,上式成为直接左递归。 u不为空而δ为空,上式成为直接右递归。 如果一个文法中至少含有一个递归的非终结符号,则称递 归文法。
11
文法举例
例 文法G=(VN,VT,P,S) VN = { S }, VT ={ 0, 1 } P={ S→0S1, S→01 } S为开始符号
12
文法的通常表示方法
元符号: → ∷= | < > 习惯表示 大写字母:非终结符 小写字母:终结符 S –> AB A –> Ax | y B –> z
23
2.3.1 规范推导和规范规约(2)
• 规范规约的实例:符号串i+i*i规约过程
步 序i 当前符号串wi 0 1 2 i+i*i F+i*i T+i*i
所用产生式 F->i T->F E->T

编译原理课件PPT 第2章

编译原理课件PPT 第2章

Chapter 2 Language & Syntax Description Section 2 Grammar & Language 1、Basic concepts a、Grammar Grammar is the formal production rules describing the construction of syntax elements. Notes:1) Syntax elements include sentences and words in sentences, a language is composed of sentences. 2) The form of a production rule is as following: left-sideright-side (that can be read as ―leftside is defined as right-side‖, ―left-side derives right-side‖,or ―left-side produces right-side‖, it expresses the relation between the two sides)
Chapter 2 Language & Syntax Description Section 2 Grammar & Language 1、Basic concepts j、Extended notations of grammar rules Use extended BNF(Backus Naur Form) notations
Chapter 2 Language & Syntax Description Section 2 Grammar & Language 1、Basic concepts b、Non-terminal symbol – A symbol that appears in the left of a rule , is bracketed in <> and expresses a syntax concept. – A set of non-terminal symbols is expressed in VN c、Terminal symbol – Strings in a language that cannot be decomposed (including strings of single characters), expressed in VT. Notes:Terminal symbols are basic elements of a sentence.
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
温故知新
编译原理的内容及学习意义 翻译器、编译器的定义 编译器的阶段划分及前端、后端的概念 “遍” 的概念
下列程序中哪些不是编译程序的组成部分?
A 词法分析 C 语法分析
B代码读入 BD代码读生入成
对下列错误信息,请指出可能是编译的哪 个阶段报告。
else没有匹配的if
数组下标越界
语法分析
声明和使用的函数没有定义语义分析或代码生成
INT SEMI-COL
2.1 词法记号及属性
2.1.2 词法记号的属性
position := initial + rate * 60的记号和属性值: id,指向符号表中position条目的指针 assign _ op, id,指向符号表中initial条目的指针 add_op,+ id,指向符号表中rate条目的指针 mul_ op, * num,整数值60
词法记号 中国人 美国人
词法单元例举 胡锦涛 毛泽东 奥巴马 克林顿
模式的非形式描述 具有中国国籍的人 具有美国国籍的人
词法记号的属性
源程序
词法分析器
记号
语法分析器
取下一个记号
符号表
存在的意义?
词法记号的属性
如果简单地把词法记号流传给语法分析器, 会产生什么后果?
语义被完全摒弃,只剩下一个语法结构
零做除数
语义分析
在数中出现非数字字符 代码优化或语义分析
词法分析
判断
高级语言编写的源程序都必须通过编译,产 生目标代码后才能运行(.×) 多遍扫描的编译程序的多遍是指多次重复 读源程序. (×) 就执行速度而言,编译后再执行程序比解释 执行程序慢. (×)
第二章 词法分析
源程序
词法分析器
记号
语法分析器
DO8I 3. 75
DO 8 I 3, 75
关键字是否保留
IF THEN THEN THEN=ELSE;ELSE …
2.1 词法记号及属性
2.1.1 词法记号、模式、词法单元
源程序 字符流
顺序 组合 词法
单元
模式
词法 记号
例: var count : integer ; count = 5 ;
2.2.1 串和语言
字母表/字符类:符号(英文字母、标点符号等)的
有限集合, 例: = {0,1}
长度的
串:符号的有穷序列,例:0110,
表示 |a|
语言:字母表上的一个串集
{,0,00,000,…}, {},
长度
句子/字:属于语言的串
为0
集合 字母表
的空 串
字母
串 组合
集合 语言
词法单元 模式 记号
2.1 词法记号及属性
2.1.2 词法记号的属性
练习题(要求使用伪代码给出算法): 编写一个程序,用于统计文件中单词的 总数,不同单词的数目。
eg: I love Dalian and I love DLUT 单词总数:7 不同单词数目:5
2.1 词法记号及属性
2.1.3 词法错误
词法分析器对源程序采取非常局部的观点, 难以发现下面的错误
闭包:L = L0 ∪ L1 ∪ L2 ∪… 正闭包: L+ = L1 ∪ L2 ∪…
例2.2(p17)
L: { A, B, …, Z, a, b, …, z }, D: { 0, 1, …, 9 } L∪D, LD, L6, L*, L(L∪D )*, D+
取下一个记号
符号表
本章内容
词法分析器:把构成源程序的字符流翻译成 记号流,还完成和用户接口的一些任务 围绕词法分析器的自动生成展开 介绍正规式、状态转换图和有限自动机概念
词法分析器的功能:
源代码 词法分析器 记号(token)流
2.1 词法记号及属性
2.1.1 词法记号、模式、词法单元
词法单元:又称单词,是源程序中的字符串。
fi (a == f (x) ) … 但是也有例外,如在实数是a.b格式下,可 以发现下面的错误
123.
2.1 词法记号及属性
2.1.3 词法错误
恢复策略
“紧急方式” 错误修补尝试
删除一个多余的字符 插入一个遗漏的字符 用一个正确的字符代替一个不正确的字符 交换两个相邻的字符
2.2 词法记号的描述与识别
for relation id num literal 符
for
for
< , < = , = , … < 或 <= 或 = 或 …
sum, count, D5 由字母开头的字母数字串
3.1, 10, 2.8 E12 任何数值常数
“seg. error” 引号“和”之间的任意字
串,但引号本身除外
2.1 词法记号及属性
词法单元
C语言的标识符
?
x2, 12, _12, _abc
哪些是合法的C标识符?
C语言标识符的规则(模式): 首字符必须是_或者字母,由_、字母或数字组成的字符串
2.1 词法记号及属性
2.1.1 词法记号、模式、词法单元
常见记号及模式的例子:
词法记号 词法单元例举 模式的非形式描述
var
var
var
2.1.1 词法记号、模式、词法单元
词法记号 名词 连词
词法单元例举 大连 软件 大黑山 和与或
模式的非形式化描述 表示名称的词 和 与 或 ….
词法记号 relation
id
词法单元例举
模式的非形式描述
< , < = , = , … < 或 <= 或 = 或 …
sum, count, D5 由字母开头的字母数字串
词法记号:满足某种规则的词法单元,采用同一种记 法——词法记号。该规则称为模式。
模式:描述词法单元与词法记号对应关系的规则。是描 述源程序中某个记号的词法单元集合的规则。
源程序字 符流
顺序 组合
词法 单元
模式
词法 记号
2.1 词法记号及属性
历史上词法定义中的一些问题
忽略空格带来的困难
DO 8 I 3. 75
我是学生
翻译官 Pronoun Verb Noun
说了什么呀????
词法记号的属性
每个词法记号具有一定的含义(属性)
L1 : x = y2 + 12 ;
ID COLON ID ASSGN
ID PLUS
第一个ID,名称是L1, 表示的是标号(Label) 第二个ID,名称是x, 表示的是一个变量,类型是int 第三个ID,名称是y2, 表示的是一个变量,类型是int
2.2 词法记号的描述与识别
2.2.1 串和语言 串的运算
连接 xy,s = s = s 积(指数) s0为,si为si -1s(i > 0)
2.2 词法记号的描述与识别
语言的运算
和:L∪M = {s | s L 或 s M } 连接:LM = {st | s L 且 t M} 指数:L0是{ },Li是Li -1L
相关文档
最新文档