编译原理第二章ppt

合集下载

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

2019年郑州大学编译原理第2章.ppt

2019年郑州大学编译原理第2章.ppt
(3)若E为表达式,是一元运算符,则 E (或E )
也 是表达式;
(4) 若E为表达式,则 ( E )也是表达式。
二、语句
1、赋值句 2、控制语句
无条件转移语句 条件语句 循环语句 过程(或函数)调用语句 返回语句
3、说明句 4、简单句和复合句
§2.3 程序语言的语法描述
本节介绍高级语言语法结构的形式化描述问题
例题2.5
构造一个文法G4,使得
L(G4)={ ambn | m>n≧0 } 正解:文法G4: SAB Aa|aA BaBb|ε
上下文无关文法定义 归纳起来,一个上下文无关文法包括四个组成 部分: 一组终结符号 如:me ,book,gave 等 一组非终结符号 如:<主语>,<谓语> 等 一个开始符号 如: <句子> 一组产生式 如: <间接宾语> → <代词> <直接宾语> → <冠词> <名词>
上下文无关文法定义
形式上说,一个上下文无关文法G是一个四元式: G=(VT,VN,S,),其中: VT是一个非空有限集,它的每个元素为终结符号; VN是一个非空有限集,它的每个元素为非终结符号 且VT∩VN= Φ S 是一个非终结符号,称为开始符号; 是产生式有限集合,形如 A→α * 其中:A∈ VN, α∈(VT U VN) 。 注: 开始符号S是一个特殊的非终结符号,它至少 必须在某个产生式的左部出现一次。
语义规则 是指这样的一组规则,使用它可以定义一
个程序的意义。

描述语义规则的工具:
基于属性文法的语法制导下的翻译方法
2.1.3 程序
所谓程序,是描述一定数据的处理过程,即包括描述 数据和对数据的运算两个功能。

编译原理课件第二章

编译原理课件第二章

递归子程序法
递归子程序法:对应每个非终结符语法单元,,编一个独 立的处理过程(或子程序)。语法分析从读入第一个单词 开始,由非终结符<程序>(即开始符)出发,沿语法描述 图箭头所指出的方向进行分析。当遇到非终结符时,则调 用相应的处理过程,从语法描述图看,也就进入了一个语 法单元,再沿当前所进入的语法单元所指箭头方向继续进 行分析。当遇到描述图中是终结符时,则判断当前读入的 单词是否与图中的终结符相匹配,若匹配,再读取下一个 单词继续分析。遇到分支点时,将当前的单词与分支点上 多个终结符逐个相比较,若都不匹配时可能是进入下一个 非终结符语法单位或是出错。
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章 编译基础-形式语言与有穷自动机
整理课件
句型、推导
G[E]: E→E+T|T T→T*F|F F→(E)|a
对于句子a+a*a 有不同 的推导
EE+T T+T F+T a+T a+T*F a+F*F a+a*F a+a*a
EE+T E+T*F E+T*a E+F*a E+a*a T+a*a F+a*a a+a*a
整理课件
例:奇偶测试器
0
0
1
q0
q1

1
自动机:M=(Q,∑ ,δ ,q0,Z)
Q={ q0, q1}
∑ ={0,1}
q0=q0 Z={q1}
整理课件
映射函数:
δ( q0,0)= q0 0
0
δ( q0,1)= q1
1
δ( q1,0)= q1 q0
q1
δ( q1,1)= q0
1
例:000110001
整理课件
第四节 正规文法与有穷自动机 1、正规文法 产生的语言的推导 例:文法 G=(VN,VT,P,S) 其中: VN={A,B,C}
VT={a,b,c} S=A P:A →aB A →aA
B →bB B →bC C →cC C →c
整理课件
A=>aA=>aaA=>…..=>aa…aB =>aa…abB=>aa…abb…bC =>aa…abb…bcC=> aa…abb…bccC => aa…abb…bcc…c
D→ε
Aa→bD
自然语言属于上下文有关文法
整理课件
文法的类型

编译原理课件第二章

编译原理课件第二章

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.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章 词 法 分 析

编译原理课件CHAPTER2(GrammarandLanguage)

编译原理课件CHAPTER2(GrammarandLanguage)


例如: Σ={a,b} a, b, aa, ab, aabba…都是Σ上的符号串 ε是任何Σ上的符号串

在语言理论中,符号串又称为: 句子(sentence)、字(word)
4
2019/2/24
2.1 串和语言

符号串的长度

符号串中包含符号的个数
符号串 s 的长度记为 |s|
例,对于字母表{a,b,c},aab 是其上的一个符号 串, | aab |=3
2019/2/24 1
Chapter2 Grammar and Language
三.教学内容 串和语言(Strings and Languages ) 文法和语言的定义 (Definitions of Grammar and Language) 文法和语言的分类 (Classification of Grammar and Language) 分析树与句型 (Parse Tree and Sentential form)
Chapter2 Grammar and Language
一.教学目的 掌握文法、语法树、推导、归约、句子、语言、规范推导与归 约、短语、简单短语、句柄、二义性定义,了解文法的分析过程、 文法实用限制、语言分类等。 二.教学重点和难点 重点掌握: 1.串和语言的概念。 2.文法和语言的定义。 3.文法和语言的分类。 4.分析树与句型。 难点: 1.文法和语言的分类。 2.分析树与句型。
2019/2/24
2
2.1 串和语言

字母表(alphabet):

字母表是符号(symbols)的非空有穷集合,
用∑表示

符号:可以相互区别的记号(元素)

不同的语言有不同的字母表

编译原理课件第二章

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

编译原理
chapter2
高级语言及其语法描述
2.3 程序语言的语法描述 符号串的长度:符号串中符号的个数为符号串的长度. 符号串的长度:符号串中符号的个数为符号串的长度. 长度 个数为符号串的长度 是符号串, 表示符号串的长度. 例:若ab是符号串,则|ab|表示符号串的长度. 是符号串 表示符号串的长度 |ab|=2 注意:特别规定 注意: 同理: 同理:|aabb|= 4 |ε|=0
编译原理
chapter2
高级语言及其语法描述
2.3 程序语言的语法描述
上下文无关文法
文法(Grammar):是描述语言的语法结构的形式规则. 是描述语言的语法结构的形式规则. 文法 是描述语言的语法结构的形式规则
The big elephant ate the peanut.
语法树(Parse Tree):句子结构的图形表示方式. 句子结构的图形表示方式. 语法树 句子结构的图形表示方式
编译原理
chapter2
高级语言及其语法描述
句子的推导:用规则(产生式) 句子的推导:用规则(产生式)按一定方式去推导或产生 句子的过程. 句子的过程.
<句子 句子> 句子 <主语 <谓语 主语> 谓语 主语 谓语> <冠词 <形容词 <名词 <谓语 冠词> 形容词> 名词> 谓语> 冠词 形容词 名词 谓语 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
编译原理
chapter2
高级语言及其语法描述
2.3 程序语言的语法描述 符号串的运算: 符号串的运算: 连接( ):符号串 符号串的连接 联结,乘积):符号串x和 的连接是 符号串的连接(联结,乘积):符号串 和y的连接是 的符号按先后顺序排列 指x和y的符号按先后顺序排列在一起组成一个新的符 和 的符号按先后顺序排列在一起组成一个新的符 号串, 表示. 号串,用xy表示. 表示 若字母表∑={a,b},符号串 例,若字母表 ,符号串x=ab,y=ba , 则xy=abba 注意: 连接运算不满足交换律 注意 (1)连接运算不满足交换律,即xy≠yx 连接运算不满足交换律, (2)任何符号串 与空串 的连接都等于 ,即: 任何符号串x与空串 的连接都等于x, 任何符号串 与空串ε的连接都等于 εx=xε=x
<句子 →<主语 <谓语 句子> 主语> 谓语> 句子 主语 谓语 <主语 → <冠词 <形容词 <名词 主语> 冠词> 形容词> 名词> 主语 冠词 形容词 名词 <冠词 → the 冠词> 冠词 <形容词 →big 形容词> 形容词 <谓词 → <动词 <直接宾语 谓词> 动词> 直接宾语> 谓词 动词 直接宾语 <动词 →ate 动词> 动词 <直接宾语 →<冠词 <名词 直接宾语> 冠词> 名词> 直接宾语 冠词 名词 <名词 →elephant 名词> 名词 <名词 →peanut 名词> 名词
<句子 句子> 句子 <主语 主语> 主语 <冠词 冠词> 冠词 <形容词 <名词 形容词> 名词 名词> 形容词 <动词 动词> 动词 <谓语 谓语> 谓语 <直接宾语 直接宾语> 直接宾语 <冠词 冠词> 冠词 The big elephan t ate the <名词 名词> 名词 peanut
显然, 显然,若n>0,则Xn=XXn-1 =Xn-1X 则 符号串的幂运算服从结合律 即:符号串的幂运算服从结合律 .
编译原理
chapter2
高级语言及其语法描述
2.3 程序语言的语法描述 的运算: 符号串集合的运算: 运算: 为符号串集合( 符号串集合的乘积运算:设A,B为符号串集合(集合 , 为符号串集合 中各元素都是字母表上的字符串), ),两个字符串集合的 中各元素都是字母表上的字符串),两个字符串集合的 乘积定义为: 乘积定义为:AB={xy|x∈A , y∈B}(笛卡儿乘积). ∈ ∈ (笛卡儿乘积). 设有字母表∑={a,b,c,d},令A={aa,bb},B={cc,dd} 例:设有字母表 , , 则AB= {aacc,aadd,bbcc,bbdd} BA= {ccaa,ccbb,ddaa,ddbb} 特别定义:空符号集合:{ε} 特别定义:空符号集合: 空集合:φ={} 空集合: 注意: 注意:因εx = xε ,故 {ε}A=A{ε}=A A φ= φA= φ
编译原理
chapter2
高级语言及其语法描述
定义3 符号串的推导与归约 已给文法G=(VN,VT,P,S), 推导与归约: 定义 :符号串的推导与归约:已给文法 , V= VN∪VT,令x,y,α,β∈V*,且α→β∈P,此时,由 ∈ , ∈ ,此时, 符号串xαy能够直接产生出符号串 能够直接产生出符号串xβy,我们称: 符号串 能够直接产生出符号串 ,我们称: 符号串xβy是符号串 是符号串xαy的直接推导; 符号串 是符号串 的 符号串xαy是符号串 是符号串xβy的直接归约; 符号串 是符号串 的
定义2:文法是一个四元组:G[S]=(VN, VT, P, S),其中: 是一个四元组: 定义 :文法是一个四元组 ,其中: VN:非终结符集合; 非终结符集合 集合; VT :终结符集合; 终结符集合 集合; P :产生式集合(α→β或α∷=β); 产生式集合 集合( 或 ∷ ); 开始符号(或称根符号 识别符号). 或称根符号, S :开始符号 或称根符号,识别符号 . 另外: 也可简写为G 另外:G[S]也可简写为 也可简写为
编译原理
chapter2
高级语言及其语法描述
例:G1 =({N},{0,1},{N→0N,N→1N,N→0,N→1},N) , ) 其中: 其中 非终结符 VN ={N} 终结符V 终结符 T ={0,1} , P={N→0N,N→1N,N→0,N→1} , , , 开始符号S 开始符号S 为N 通常情况下,文法只用产生式集合表示: 通常情况下,文法只用产生式集合表示: G1[N]: N→0N N→1N N→0 N→1
记作: xαy xβy
若有α 若有 1,α2,…,αn∈V* 且α1 α2 … αn-1 αn + 的推导. 则称α 则称 n是α1的推导. αn 记作: 记作:α1 特别约定:若在推导关系α α 中允许α 特别约定:若在推导关系 1 n中允许 1=αn, 的广义推导. 则称α 则称 n是α1 的广义推导. * 记作: 记作:α1 αn
编译原理
chapter2
高级语言及其语法描述
2.1 程序语言的定义 词法规则:单词符号的形成规则. 词法规则:单词符号的形成规则.也就是规定了 字母表中哪些字符串是一个单词符号. 字母表中哪些字符串是一个单词符号. 正规式和有限自动机理论 语法规则:是语法单位的形成规则. 语法规则:是语法单位的形成规则.也就是规定 了如何从单词符号形成更大的语法单位. 了如何从单词符号形成更大的语法单位. 上下文无关文法和有限自动机 语义:可以定义程序意义的规则. 语义:可以定义程序意义的规则. 语法制导翻译方法
2.3 程序语言的语法描述 字母表:字母表∑是有穷符号元素的非空集合 符号元素的非空集合. 字母表:字母表 是有穷符号元素的非空集合. 符号:字母表中的元素. 符号:字母表中的元素. 符号串:字母表中的符号所组成的任意有穷序列. 有穷序列 符号串:字母表中的符号所组成的任意有穷序列. 空符号串:不含任何符号的符号串, 用 ε 表示. 表示. 空符号串:不含任何符号的符号串, 例如,若有字母表 例如,若有字母表∑={a,b} 是字母表∑中的元素 符号) 则a,b是字母表 中的元素 符号 是字母表 中的元素(符号 a,b,aa,ab,ba…都是符号串. 都是符号串. 都是符号串 注意: 注意:符号串中的符号与顺序有关
编译原理
chapter2
高级语言及其语法描述
2.3 程序语言的语法描述 为符号串集合, 符号串集合的幂运算: 符号串集合的幂运算:设A为符号串集合,则集合的幂 为符号串集合 运算定义如下: 运算定义如下
A0={ε} A1=A A2=AA … A= AA……A =AAn-1 =An-1A n个 个
符号串集合的闭包:设A为符号串集合,则集合的闭包 为符号串集合, 符号串集合的闭包: 闭包 为符号串集合 定义如下: 定义如下 A的正则闭包: A+=A1∪A2∪… 的正则闭包: A的闭包: A*=A0∪A1∪A2∪… 的闭包: 例:设集合A={a,b},则 设集合 , A+={a,b,aa,ab,ba,bb,aaa, …} A*={ε,a,b,aa,ab,ba,bb,aaa, …} 显然: A+=AA* 显然: A*=A0∪A+
编译原理
chapter2
高级语言及其语法描述
相关文档
最新文档