精品课件-《编译原理教程》-第二章

合集下载

编译原理第2章(1).ppt

编译原理第2章(1).ppt

例 “变量是一个算术表达式; 若E1和E2是算术表达式,则E1+E2,E1*E2和(El)也 是算术表达式。” 对于这个定义,若用产生式来描述,则可将它写成: E→i E→E+E E→E * E E→(E)
一个上下文无关文法G是一个四元式(VT,VN,S,ρ), 其中 VT是一个非空有限集,它的每个元素称为终结符号; VN是一个非空有限集,它的每个元素称为非终结符号, VT∩VN=φ S是一个非终结符号,称为开始符号; ρ是一个产生式集合(有限),每个产生式的形式是 P→α,其中,P∈VN, α∈(VT∪VN)* 。开始符号S 至少必须在某个产生式的左部出现一次。
2.2.3 数据类型与操作
一个数据类型通常包括以下三种要素: 用于区别这种类型数据对象的属性 这种类型的数据对象可以具有的值 可以作用于这种类型的数据对象的操作
2.2.3 数据类型与操作
一.初等数据类型 数值类型:整型、实型、复数、双精度, +, -, *, / 等 逻辑类型:布尔运算:∨,∧,┑ 字符类型:符号处理 指针类型

返回语句 return (E)
说明语句:定义各种不同数据类型的变量或运算,定 义名字的性质。
简单句和复合句
简单句:不包含其他语句成分的基本句 复合句:句中有句的语句
2.3 程序语言的语法描述
重点讨论上下文无关文法、语法分析树,以及文 法的二义性问题。最后还将对形式语言进行简单 概述。
字母表与符号
最左(最右)推导
所谓最左(最右)推导指:任何一步a => β都是对α中 的最左(最右)非终结符进行替换的。 最右推导也称为规范推导或规则推导。 (i*i+i)的最右推导: E =>(E) =>(E+E) =>(E+i) =>(E*E+i) =>(E*i+i) =>(i*i+i)

编译原理讲义第二章文法与语言.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被称为该字母表 上的符号串集合。
• 在本课程中,语言被认为是句子的集合。 (外延定义?)所以,一个语言就是对 应于它的字母表上的一个符号串集合。
符号串集合的运算

编译原理课件_第二章1

编译原理课件_第二章1

4、符号串集合的和与积

和运算(A,B为符号串集合)

A+B(或A B) ={w | w A,或 w B} A•B(或 AB)= { xy |x A, y B}

积运算(A,B为符号串集合)


显然, A+ = +A = A ; A = A = ; {}A = A{} = A
A0= {} A1=A={a, b, c} A2={aa,ab,ac,ba , bb,bc,ca,cb, cc} …… A*={ε, a, b, c, aa, ab, ac, ba, bb, bc, ……} A*实际上就是A上所有符号串构成的集合
18
符号串及其相关运算 (3)说明
语言是由句子组成的集合(一组符号所构成的集合)
第二章 前后文无关文 法和语言
西北工业大学计算机学院 曾雷杰
1



在20世纪50年代,N.Chomsky首先对语言的描述问 题进行了探讨。他提出了一种用来描述语言的数 学系统,并以此定义了四类性质不同的语言,称 为语言(文法)的Chomsky分类。 人们把用一组数学符号和规则来描述语言的方式 称为形式描述,把所用的数学符号和规则称为形 式语言。 目前,形式语言与自动机理论已成为计算机科学 中的一个重要分支。 本章将初步介绍形式语言中的某些基本概念和知 识,重点是与编译技术密切相关的一些术语和概 念,诸如文法、语言、句子、句型、短语、句柄 以及句型分析等。
5
概念辨析:语法、文法、词法

概念辨析:语法、文法、词法
语法(Syntax):语言的构成规则(元素是词, 相对于词法而言) 词法(Lexical Rule):词汇的构成规则 文法(Grammar):语法、词法表示的是具有 不同特点的语言。文法是对语言构成的结构规 则的统称--实际上是描述语法的表示方法

编译原理第二章(1)

编译原理第二章(1)
第二章 文法和语言的基本知识
形式语言理论是编译的重要理论 基础。本章主要介绍编译理论中用到 的有关形式语言理论的最基本概念, 重点介绍如何采用形式化的方法描述 程序设计语言。
第二章 文法和语言的基本知识 字母表和符号串 文法和语言的形式定义 文法和语言的分类 短语、直接短语和句柄 语法树和文法的二义性
2.3.3 语言的形式定义
例如,设有文法G[S]: P为:S→ 0 1 | 0 S 1 有如下直接推导: S01 使用规则 S01 此时 x=, y= S0S1 使用规则 S0S1 此时 x=, y=
2.3.3 语言的形式定义
S→ 0 1 | 0 S 1
0S10011 00S11000S111 使用规则 S01 此时 x=0, y=1
2.2 字母表和符号串的基本概念 例如,设A={ a, b },则 A0={} A1=A={ a, b } A2=AA={ aa, ab, ba, bb } A3=AAA=A2A
={ aaa, aab, aba, abb, baa, bab, bba, bbb }

2.2 字母表和符号串的基本概念
2.3.2 文法的形式定义
描述该语言的文法G“是否与前面文 法等价?
G"=( {A}, {a, b}, P", A ) P"={ A→aa | bb | Aaa | Abb }
此文法超出了所定义语言的范围。
2.3.2 文法的形式定义
例2 试设计一个表示所有标识符 的文法
字母 字母或数字串
用I代表标识符;L代表字母; D代表数字; 则定义标识符的文法 为:
5. 集合A的正闭包A+与闭包A* 设A是符号串的集合,则A的正闭 包A+和A的闭包A*的定义为: A+=A1∪A2∪ … ∪An …

编译原理课件第二章

编译原理课件第二章

递归子程序法
递归子程序法:对应每个非终结符语法单元,,编一个独 立的处理过程(或子程序)。语法分析从读入第一个单词 开始,由非终结符<程序>(即开始符)出发,沿语法描述 图箭头所指出的方向进行分析。当遇到非终结符时,则调 用相应的处理过程,从语法描述图看,也就进入了一个语 法单元,再沿当前所进入的语法单元所指箭头方向继续进 行分析。当遇到描述图中是终结符时,则判断当前读入的 单词是否与图中的终结符相匹配,若匹配,再读取下一个 单词继续分析。遇到分支点时,将当前的单词与分支点上 多个终结符逐个相比较,若都不匹配时可能是进入下一个 非终结符语法单位或是出错。
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编译程序语法分析的设计与实现

编译原理ppt课件

编译原理ppt课件
.
<句子> => <主语><谓语> => <冠词><形容词><名词><谓语> => the <形容词><名词><谓语> => the big <名词> <谓语> => the big elephant <谓语> => the big elephant <动词><宾语> => the big elephant ate <宾语> => the big elephant ate <冠词><名词> => the big elephant ate the <名词> => the big elephant ate the peanut
.
3. 由规则推导句子:有了一组规则之后,可以按照一定的方式 用它们去推导或产生句子。
推导方法:从一个要识别的符号开始推导,即用相应规则的 右部来替代规则的左部,每次仅用一条规则去进行推导。
<句子> => <主语><谓语> <主语><谓语> => <代词><谓语>
…… …… 这种推导一直进行下去,直到所有带< >的符号都由终结符号替代为止。
第2章 形式语言概论 (主要介绍形式语言理论中的一些基本概念和基础知识,包括、语言、语
法树和分析方法等)
.
2.1 字母表和符号串 2.2 文法及其分类 2.3 语言和语法树 2.4 关于文法和语言的几点说明 2.5 分析方法简介 2.6 小结

编译原理第二章课件

编译原理第二章课件
例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的运算 来表示。

编译原理课件第2章

编译原理课件第2章
2018/11/13 10
形式语言与自动机理论的产生与 作用
• 1959年,Chomsky通过深入研究,将他本人的 研究成果与克林的研究成果结合了起来,不仅 确定了文法和自动机分别从生成和识别的角度 去表达语言,而且证明了文法与自动机的等价 性。
2018/11/13
11
形式语言与自动机理论的产生与 作用
– ∑+=∑∪∑2∪∑3∪∑4∪……
• ∑的克林闭包(Kleene Closure)为:
– ∑*=∑0∪∑+

2018/11/13
=∑0∪∑∪∑2∪∑3∪……
15
2.2 基本定义
•例 {0,1}+ = {0,1,00,01,11,000,001,010,
011,100,……}
{a,b,c,d}+ = {a,b,c,d,aa,ab,ac,
2018/11/13 3
2.1 语言概述
• 语言的描述方法——现状 –自然语言:自然、方便-非形式化 –数学语言(符号):严格、准确-形式 化
–形式化描述
• 高度的抽象、严格的理论基础和方便的计 算机表示
2018/11/13 4
2.1 语言概述
• 语言——形式化的内容提取 – 语言(Language):满足一定条件的句子集合 – 句子(Sentence):满足一定规则的单词序列 – 单词(Token):满足一定规则的字符 (Character)串 • 语言是字和组合字的规则
– ⑴ ∑0={ε}
– ⑵ ∑n=∑n-1∑ n≥1
• 例: ∑13 ={000,001,010,011,100,101,110,111} ∑14 ={0000,0001,0010,0011,0100,……,1111}

编译原理课件第二章

编译原理课件第二章

2
LL文法
从左到右扫描符号串,从左到右构建左推导,是递归下降式语法分析的基础。
3
LR文法
从左到右扫描符号串,从右到左构建右推导,是LR分析器(最常用的语法分析器) 的基础。
语义分析
符号表
类型检查
存储程序中所有标识符的信 息,如名字、值、数据类型、 作用域等。
对程序中的表达式进行类型 检查,检查其数据类型是否 匹配,发现类型错误,报告 错误信息。
目标代码生成
静态链接
所有和程序相关的代码和库都被合并到单一 静态程序中,生成的目标代码提供给编译器 后期处理和执行。
动态链接
当程序执行时,操作系统将共享库动态链接 到程序中。生成更小的目标程序,提高内存 效率。
中间代码生成
生成高级语言与目标代码之 间的中间代码。
优化器和中间代码
1 控制流分析
构建控制流图表示各 代码块的控制流程, 用于优化控制流程。
2 数据流分析
分析程序中信息的传 播和使用,用于优化 算法、寄存器分配和 内存使用。
3 中间代码
支持优化器的三元式、 四元式或间接三元式 形式,可以做优化、 可移植性更好。
编译原理第二章
编译器将源代码转换为目标代码的工具。编译过程分为三个部分:前端,优 化器和后端。本章介绍编译器的概述和基本部件。
编译器
前端
将源程序转换为内部表示, 检查其语法和语义。
优化器
将生成的代码优化,减少目 标代码的大小和时间成本。
后端
生成目标代码,包括中间代 码生成,寄存器分配和指令 生成。
词法分析
To ken
基本的词义单元是记号(Token),个记号表示源语言中的一个词、一个操作符、一个标点 符号或其他语法单元。

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

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

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

编译原理教程 第二章

编译原理教程 第二章
图2-2 不同输入字符的状态转换
第2章 词法分析
状态(即结点)数是有限的,其中必有一初始状态以及若 干终止状态,终止状态(终态)的结点用双圈表示以区别于其 它状态。图2-3给出了用于识别标识符、无符号整数、无符 号数的状态转换图,其初始状态均用0状态表示。
第2章 词法分析
(a) 标识符;(b) 无符号整数;(c) 无符号数
第2章 词法分析
对于给定的字母表Σ,正规式和正规集的递归定义如下: (1) ε和Ф都是Σ上的正规式,它们所表示的正规集分别 为{ε}和Ф。 (2) 对任一个a∈Σ,a是Σ上的一个正规式,它所表示的 正规集为{a}。 (3) 如果R和S是Σ上的正规式,它们所表示的正规集分 别为L(R) 和L(S),则: ① R∣S是Σ上的正规式,它所表示的正规集为 L(R)∪L(S); ② R·S是Σ上的正规式,它所表示的正规集为L(R) L(S); ③ (R)*是Σ上的正规式,它所表示的正规集为(L(R))*; ④ R也是Σ上的正规式,它所表示的正规集为L(R)。
第2章 词法分析
为了理解正规式与正规集的含义,我们以程序语言中的 标识符为例予以说明。程序语言中使用的标识符是一个以字 母开头的字母数字串,如果字母用letter表示,数字用digit表 示,则标识符可表示为
letter (letter∣digit)* 其中,letter与 (letter∣digit)*的并置表示两者的连接;括号 中的“∣”表示letter或digit两者选一;“ * ”表示零次或多 次引用由“ * ”标记的表达式;(letter∣digit)*是letter∣digit 的零次或多次并置,即表示一长度为0、1、2、…的字母数 字串;letter (letter∣digit)*表示以字母开头的字母数字串, 也即标识符集。letter (letter∣digit)*就是表示标识符的正规 式,而标识符集就是这个正规式所表示的正规集。

编译原理课件第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章 词 法 分 析

编译原理课件第二章

编译原理课件第二章
• 练习: 设文法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

编译原理课件chap02(陈火旺)

编译原理课件chap02(陈火旺)
长度为1的符号串… 与语言的关系:有的构成单词 句子,有 的不构成
第二章 文法和语言
〈7〉正闭包(∑+) ∑+ =∑1 ∪ ∑2∪. …∪∑n
∑+称∑的正闭包。
显然:∑*= ∑0∪∑+
∑+

∑∑*=∑*∑
第二章 文法和语言
3.文法和语言的形式定义
(用以上术语对文法的概念进行形式化)
1、规则(重写规则、产生式、生成式)
如: ababa
则长度是5
4 、空符号串:用ε表示,长度为 0 (不含任何 符号) 若符号串x ,则有εx = xε= x 5、符号串的运算:
(1)
符号串的头和尾
若z=xy,则x是z的头,y是z的尾。
第二章 文法和语言
例:设z=abc ,则z的头是
ε,a,ab,abc
则z的尾是
ε,c,bc,abc
N个
则xy=abMN
设x是符号串,则z=xx……xx,称z为x的方幂, 记z=xn。 因此 x0=ε, x1=x, x2=xx, x3=xxx 显然n>0时, 有xn =x· x
n-1=
x
n-1· x
第二章 文法和语言
(5)符号串的集合:
若集合 A 中的一切元素都是某字母表上的符号 串,则称A为该字母表上的符号串集合。 两个符号串集合A、B乘积定义: AB={xy| x∈A且y∈b}
编译原理
第一章 第二章 第三章 第四章 第五章 第六章 第七章 第八章 第九章 编译程序引论 文法和语言 词法分析 自顶向下语法分析方法 自底向上优先分析方法 LR分析方法 语法制导翻译和中间代码生成 运行时存储空间分配 代码生成
第二章 文法和语言

编译原理课件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)。

第二章 词法分析 图2-14 习题2.5的最简DFA'
第二章 词法分析
2.6 有语言L={w | w∈(0,1)+,并且w中至少有两个1, 又在任何两个1之间有偶数个0},试构造接受该语言的确定有 限状态自动机(DFA)。
【解答】 对于语言L,w中至少有两个1,且任意两个1 之间必须有偶数个0;也即在第一个1之前和最后一个1之后, 对0的个数没有要求。据此我们求出L的正规式为0*1 (00(00)*1)*00(00)*10*,画出与正规式对应的NFA,如图215所示。
则该DFA M所能接受的语言可以用正规表达式表示为

A.( a∣b )*
B.aa ( a∣b )*
C.( a∣b )*aa
D.a ( a∣b )*a
第二章 词法分析
【解答】 (1) 由教材第一章1.3节中的词法分析,可知词法分析所 遵循的是语言的构词规则。故选B。 (2) 词法分析器的功能是输入源程序,输出单词符号。 故选B。 (3) 词法分析器输出的单词符号通常表示为二元式:(单 词种别,单词自身的值)。故选B。 (4) 虽然选项A、B、D都满足题意,但选项D更准确。故 选D。 (5) NFA可以有DFA与之等价,即两者描述能力相同;也 即,对于任一给定的NFA M,一定存在一个DFA M',使 L(M)=L(M′)。故选B。
序。每次调用时,词法分析器就从输入串中识别出一个单词符
号交给语法分析器。
2.3 设M=({x,y}, {a,b}, f, x, {y})为一非确定的有
限自动机,其中f定义如下:
f(x,a)={x,y}
f{x,b}={y}
f(y,a)= Φ
f{y,b}={x,y}
试构造相应的确定有限自动机M′。
第二章 词法分析 【解答】 对照自动机的定义M=(S,Σ,f, s0, Z),由f的
{0, 2} {1} {3, 5} {4} {6} {7} 按顺序重新命名为0、1、2、3、4、5后得到最简的DFA如 图2-13所示。
第二章 词法分析
a
a 0
b 1
b
b 2
4
a a
a
3
5
图2-13 习题2.5的最简DFA
第二章 词法分析
注意,如果将状态4和状态6作为等价状态,即得到划分后 的状态子集为
表2-3 合并后的状态转换矩阵
S
a
b
1
1
2
2
1
2
第二章 词法分析 由此得到最简DFA,如图2-20所示。
图2-20 习题2.7的最简DFA
第二章 词法分析 正规式(a | b)*b对应的NFA如图2-21所示。
图2-21 正规式(a | b)*b对应的NFA
第二章 词法分析 用子集法将图2-21所示的NFA确定化为如图2-22所示的状
定义可知f(x,a)、f(y,b)均为多值函数,因此M是一非确定有 限自动机。
先画出NFA M相应的状态图,如图2-3所示。
图2-3 习题2.3的NFA M
第二章 词法分析 用子集法构造状态转换矩阵,如表2-1所示。
表2-1 状态转换矩阵
I {x} {y} {x,y}
Ia {x,y}
— {x,y}
(5) 对于任一给定的NFA M,
L(M′)。
A.一定不存在
C.可能存在
(6) DFA适用于

A.定理证明
C.词法分析
一个DFA M′,使L(M)=
B.一定存在 D.可能不存在
B.语法分析 D.语义加工
第二章 词法分析
(7) 下面用正规表达式描述词法的论述中,不正确的


A.词法规则简单,采用正规表达式已足以描述
第二章 词法分析 图2-11 习题2.5的NFA
第二章 词法分析 用子集法将图2-11确定化,如图2-12所示。
图2-12 习题2.5的状态转换矩阵
第二章 词法分析
由图2-12重新命名后的状态转换矩阵可以看出:状态0和 状态2面对输入字符a、b的下一状态相同,状态3和状态5面对 输入字符a、b的下一状态相同,即得到划分后的状态子集为
【解答】 本题对应的正规表达式为b*( a∣ab )*,对应 的NFA如图2-23所示。
b
a
ε
X
Y
a
b
1
图2-23 正规式b*( a|ab )*对应的NFA
第二章 词法分析
用子集法将图2-23所示的NFA确定化为DFA,如图2-24所 示。
I
Ia
Ib
Sab
{X, Y} {1, Y} {X, Y} 重新命名 0 1 0
第二章 词法分析 第二章 词法分析
第二章 词法分析
2.1 完成下列选择题:
(1) 词法分析所依据的是

A.语义规则

B.构词规则
C.语法规则
D.等价变换规则
(2) 词法分析器的输入是

A.单词符号串
B.源程序
C.语法单位
D.目标程序
(3) 词法分析器的输出是

A.单词的种别编码
B.单词的种别编码和自
第二章 词法分析 用子集法将图2-6和图2-7分别确定化为如图2-8(a)和(b)
所示的状态转换矩阵,它们最终都可以得到最简DFA,如图29所示。因此,这两个正规式等价。
图2-8 图2-6和图2-7确定化后的状态转换矩阵
第二章 词法分析 图2-9 最简DFA
第二章 词法分析
实际上,当闭包*取0时,正规式(ab) *a与正规式a(ba)* 由初态X到终态Y之间仅存在一条a弧。由于(ab)*在a之前,故 描述(ab)*的弧应在初态结点X上;而(ba)*在a之后,故(ba)* 对应的弧应在终态结点Y上。因此,(ab)*a和a(ba)*所对应的 NFA也可分别描述为如图2-10(a)和(b)所示的形式,它们确定 化并化简后仍可得到图2-9所示的最简DFA。
第二章 词法分析 图2-2 DFA M
第二章 词法分析
2.2 什么是扫描器?扫描器的功能是什么?
【解答】 扫描器就是词法分析器,它接受输入的源程序,
对源程序进行词法分析并识别出一个个单词符号,其输出结果
是单词符号,供语法分析器使用。通常把词法分析器作为一个
子程序,每当语法分析器需要一个单词符号时就调用这个子程
G[A]:A→aA | bB | b B→aA | bB | b
G[A]可进一步化简为G[S]:S→aS | bS | b(非终结符B对应 的产生式与A对应的产生式相同,故两非终结符等价,即可合 并为一个产生式)。
第二章 词法分析
2.8 构造一个DFA,它接收Σ={a, b}上所有不含子串 abb的字符串。
第二章 词法分析 图2-5 图2-3化简后的DFA M′
第二章 词法分析 2.4 正规式(ab)*a与正规式a(ba)*是否等价?请说明理
由。 【解答】 正规式(ab)*a对应的NFA如图2-6所示,正规
式a(ba) *对应的NFA如图2-7所示。
图2-6 正规式(ab)*a对应的NFA
第二章 词法分析 图2-7 正规式a(ba)*对应的NFA
{0, 2} {1} {3, 5} {4, 6} {7} 按顺序重新命名为0、1、2、3、4后得到最简的DFA' 如图214所示。由图2-14可以看出,由状态4输入a可以到达状态3, 由状态3输入b可以到达状态2,即可形成如下的字符串:
aa…abb…baa…abb…baa…abb…baa…a 而不是本题正规表达式可形成的字符串:aa…abb…baa…a。
Ib {y} {x,y} {x,y}
第二章 词法分析 将转换矩阵中的所有子集重新命名,形成表2-2所示的状
态转换矩阵,即得到M′=({0,1,2},{a,b},f,0,{1,2}),其状 态转换图如图2-4所示。
图2-4 习题2.3的DFA M′
第二章 词法分析
表2-2 重命名后的状态转换矩阵
f
态转换矩阵。
图2-22 图2-21确定化后的状态转换矩阵
第二章 词法分析
比较图2-22与图2-19,重新命名后的转换矩阵是完全一 样的,也即正规式(a | b)*b可以同样得到化简后的DFA如图 2-20所示。因此,两个自动机完全一样,即两个正规文法等 价。
(2) 对图2-20,令A对应状态1,B对应状态2,则相应 的正规文法G[A]为
第二章 词法分析 图2-15 习题2.6的NFA
第二章 词法分析 用子集法将图2-15所示的NFA确定化,如图2-16所示。
图2-16 习题2.6的状态转换矩阵
第二章 词法分析 由图2-16可看出非终态2和4的下一状态相同,终态6和8
的下一状态相同,即得到最简状态为 {0} {1} {2,4} {3} {5} {6,8} {7}
一般对应一个循环语句。
A.不含回路的分叉结点
B.含回路的状态
结点
C.终态结点
D.A~C都不是
(10) 已知DFA Md= ({s0, s1, s2}, {a, b}, f, s0, {s2}), 且有:
f( s0, a ) =s1
f( s1, a ) =s2
f( s2, a ) =s2
f( s2, b ) =s2
按顺序重新命名为0、1、2、3、4、5、6,则得到最简DFA, 如图2-17所示。
图2-17 习题2.6的最简DFA
第二章 词法分析
2.7 已知正规式((a | b)*| aa)*b和正规式(a | b)*b。 (1) 试用有限自动机的等价性证明这两个正规式是等价 的; (2) 给出相应的正规文法。 【解答】 (1) 正规式((a | b)*| aa)*b对应的NFA如图 2-18所示。
相关文档
最新文档