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

编译原理第2讲

编译原理第2讲

CompilerPrinciples
22
4.状态转换图的程序实现 每个状态对应一小 状态转换图的程序实现----每个状态对应一小 状态转换图的程序实现 段程序即可
例:使用如下一组全局变量和过程,作为实现状态转换图的基 本部分: ⑴ CHAR:字符变量,存放最新读进的源程序字符; ⑵ Token:字符数组,存放构成单词符号的符号串; ⑶ GetChar:取字符过程,将下一个输入字符读到CHAR中,并 把搜索指示器的指针前移一个字符位置; ⑷ GetBC:检查CHAR中的字符是否为空白,若是则调用 GetChar直至CHAR中进入一个非空白字符; ⑸ ConCat:拼单词过程,每调用一次就将CHAR中的字符连接 到Token之后; ⑹ IsLetter和IsDigit:两个布尔函数,分别判断CHAR中的字 符为字母或是数字而返回真假值; ⑺ Reserve:整型函数,对Token中的字符串查保留字表,查 到则返回该保留字的整型编码,否则返回0值;
CompilerPrinciples 18
如右图所示: 在状态1下,若输入字 符为a,则读进a,并转换 图只包含有限个状态 (即有限个结点),其 中有一个被认为是初态, 而且实际上至少要有一 个终态(用双圈表示), 图中3为终态。

CompilerPrinciples
16
标识符的识别:标识符是字母开头的一个 字母数字串,一般有运算符和界符分开,与基 本字的区别前已谈及,所以容易识别。 常数的识别:算术常数大多相似,只是转 换二进制的问题,但像3.E5、3.EQ.5显然也要 用到超前搜索技术。另有3HABC一类的常数需 要特殊处理。 算符和界符的识别:算符和界符一般是单 一的一个符号,如+、-、*、/等。当然对于复 合的运算符,如++、+=等也只是拚写的问题。

02第2章编译原理课程讲解文法和语言报告

02第2章编译原理课程讲解文法和语言报告

V=S,W=0S1
W是否是V的直接推导
=S, =0S1
规则: S → 0S1 =0 , = 1
直接推导:S 0S1
V=0S1,W=00S11 W是否是V的直接推导 直接推导: 0S100S11
=S,S), 其中 VN={S} , VT ={0 , 1} , (2)若存在直接推导的序列: P={S → 0S1,S → 01}
2018/10/11
12
2.2.1 文法形式定义
按文法形式定义表示“the monkey ate the banana ”文法。 解:根据文法的形式定义,文法G1=( Vn, Vt,P,Z)
非终结符号集合: Vn={句子,主语,谓语,冠词,名词,动词, 直接宾语}
终结符号集合: Vt={ the,ate,banana,monkey }
1
内容提要
字母表与符号串 文法(定义,推导,句型与句子) 语言 递归规则与递归文法 语法树(短语、简单短语和句柄) 语法树与文法的二义性
2018/10/11
2
2.1 字母表与符号串
字母表 符号串 符号串及集合的运算
2018/10/11
3
2.1.1 字母表
字母表是符号的非空有穷集合。 例如: 1.机器语言字母表:由符号“0”和“1”组成的字 母表,∑={0,1} 2. ASCII字符集 3. Pascal字母表为: ∑={AZ, az, 09, +, -, *, /, <, =, >,:, ',', ; ,., , (, ), {, }, [, ] } „„
2型文法1型文法0型文法3型文法四种文法之间的逐级包含关系20161227812型文法不确定的下推自动机1型文法不确定的界限自动机0型文法图灵机3型文法有限自动机形式语言与自动机2016122782本章小结1文法的定义四元组对上下文无关文法能根据产生式集合给出其四元组

编译原理第二章 文法和语言

编译原理第二章  文法和语言

第一节 文法的直观概念
当我们表述一种语言时,无非是说明这种语言的句子,如果语言只含有有穷多个句子,则只需 列出句子的有穷集就行了,但对于有无穷句子的语言来讲,存在着如何给出它的有穷表示的问题。 以自然语言为例, 人们无法列出全部句子, 但是人们可以给出一些规则, 用这些规则来说明 (或 者定义)句子的组成结构,比如: “我是大学生” 。是汉语的一个句子。汉语句子可以是由主语后随 谓语而成,构成谓语的是动词和直接宾语,我们采用 EBNF 来表示这种句子的构成规则: 〈句子〉∷=〈主语〉 〈谓语〉 〈主语〉∷=〈代词〉|〈名词〉 〈代词〉∷=我|你|他 〈名词〉∷=王明|大学生|工人|英语 〈谓语〉∷=〈动词〉 〈直接宾语〉 〈动词〉∷=是|学习 〈直接宾语〉∷=〈代词〉|〈名词〉 “我是大学生”的构成符合上述规则,而“我大学生是”不符合上述规则,我们说它不是句子。 这些规则成为我们判别句子结构合法与否的依据。 一旦有了一组规则以后,我们可以按照如下方式用它们去推导或产生句子。我们开始去找∷= 左端的带有〈句子〉的规则并把它表示成∷=右端的符号串,这个动作表示成: 〈句子〉 〈主语〉 〈谓语〉 ,然后在得到的串〈主语〉 〈谓语〉中,选取〈主语〉或〈谓语〉 ,再用相应的规则∷=右端 代替之。比如,选取了〈主语〉,并采用规则〈主语〉∷=〈代词〉 ,那么得到: 〈主语〉 〈谓语〉〈代 词〉 〈谓语〉 ,重复做下去,我们得到句子: “我是大学生”的全部动作过程是: 〈句子〉 〈主语〉 〈谓语〉 〈谓语〉 〈代词〉 我〈谓语〉 〈直接宾语〉 我〈动词〉 我是〈直接宾语〉 我是〈名词〉 我是大学生 符号 的含义是,使用一条规则,代替 左边的某个符号,产生 右端的符号串。 显然,按照上述办法,不仅生成“我是大学生”这样的句子,还可以生成“王明是大学生” , “王 明学习英语” , “我学习英语” , “他学习英语” , “你是工人” , “你学习王明”等几十个句子。事实上, 使用文法作为工具,不仅为了严格地定义句子的结构,也是为了用适当条数的规则把语言的全部句 子描述出来,是以有穷的集合刻划无穷的集合的工具。

编译原理课件第二章

编译原理课件第二章

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

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

[高等教育]编译原理与技术讲义-第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

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

编译原理编译原理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 理 论
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3.4文法的类型
例:1型(上下文有关)文法 文法G[S]: S→CD C→aCA C→bCB AD→aD BD→bD Aa→bD
Ab→bA Ba→aB Bb→bB C→ε D→ε
3.4文法的类型
例:2型(上下文无关)文法
文法G[S]: S→AB A→BS|0 B→SA|1
3.4文法的类型
• 3型文法(正规文法):
3.3 文法和语言的形式定义
使用产生式(1)n-1次,得到推导序列: S =>* an-1S(BE)n-1,然后使用产生式(2)一次,得到:S =>* an1S(BE)n-1 an(BE)n。然后从an(BE)n继续推导,总是对EB使用产 生式(3)的右部进行替换,而最终在得到的串中,所有的B都先于所 有的E。例如,若n=3, aaaBEBEBE aaaBBEEBE aaaBBEBEE aaaBBBEEE。 即有: S =>* anBnEn 接着,使用产生式(4)一次,得到S =>* anbBn-1En,然后使用产生式 (5)n-1次得到: S =>* anbnEn,最后使用产生式(6)一次,使用产生式(7)n-1次,得到: S =>* anbnen 也能证明,对于n≥1,串anbnen是唯一形式的终结符号串
3.1 文法的直观概念
研究程序设计语言 每个程序构成的规律 每个程序的含义 每个程序和使用者的关系 语言研究的三个方面 语法:表示构成语言句子的各个记号之间的组合规律 语义:表示各个记号的特定含义。 语用:表示在各个记号所出现的行为中,它们的来源、 使用和影响。
3.1 文法的直观概念
每种语言具有两个可识别的特性,即语言的形 式和该形式相关联的意义。 语言的实例若在语法上是正确的,其相关联的 意义可以从两个观点来看,其一是该句子的创立 者所想要表示的意义,另一是接收者所检验到的 意义。这两个意义并非总是一样的,前者称为语 言的语义,后者是其语用意义。幽默、双关语和 谜语就是利用这两方面意义间的差异。
G[S]: S→0A|1B|0 A→0A|1B|0S G[I]: I → I → T → T → T → T → lT l lT dT l d
3.3 文法和语言的形式定义
如何来描述一种语言?
如果语言是有穷的(只含有有穷多个句子),可以将 句子逐一列出来表示 如果语言是无穷的,找出语言的有穷表示。语言的有 穷表示有两个途经: 生成方式 (文法):语言中的每个句子可以用严 格定义的规则来构造。 识别方式(自动机):用一个过程,当输入的一任 意串属于语言时,该过程经有限次计算后就会停止 并回答“是”,若不属于,要麽能停止并回答“不 是”,(要麽永远继续下去。)
3.2 符号和符号串
符号:可以相互区别的记号(元素)。 字母表:符号(元素)的非空有穷集合。 符号串:由字母表中的符号组成的任何有穷序 列称为该字母表上的符号串。(顺序)
1.空符号串ε (没有符号的符号串)是上的符号串 2.若x是上的符号串,a是的元素,则xa是上的符号串 3. y是上的符号串,当且仅当它可以由1和2导出。 例如: Σ ={a,b} ε ,a,b,aa,ab,aabba…都是上的符号串
定义1: 文法G定义为四元组(VN,VT,P,S ),其中 VN为非终结符号(或语法实体,或变量)集; VT为终结符号集; P为产生式(也称规则)的集合; VN,VT和P是 非空 有穷集。 S称作识别符号或开始符号,它是一个非终结符,至 少要在一条产生式中作为左部出现。 VN和VT不含公共的元素,即VN ∩ VT = φ 用V表示VN ∪ VT ,称为文法G的字母表或字汇表
3.3 文法和语言的形式定义
文法的写法 1 G:S→aAb A→ab A→aAb A→ε 2 G[S]: A→ab A→aAb 3 G[S]: A→ab |aAb |ε
A→ε
S→aSb S→aSb
3.3 文法和语言的形式定义
• 定义2:直接推导
α →β 是文法G的产生式,若有v,w满足v=γ α δ ,w= γ β δ , 其中γ ∈V*,δ ∈V*, 则称v直接推导到w, 记作 v w, 也称w直接归约到v 若存在v w0 w1 ... wn=w,(n>0), 则记为v =>+ w,v推导出w,或w归约到v 若有v =>+ w,或v=w, 则记为v =>* w
3.1 文法的直观概念
有了一组规则以后,按照如下方式用它们导出句子:开始去找∷=左端的 带有〈句子〉的规则并把它由∷=右端的符号串代替,这个动作表示成: 〈句子〉 〈主语〉〈谓语〉, 然后在得到的串〈主语〉〈谓语〉中,选取〈主语〉或〈谓语〉,再用 相应规则的∷=右端代替之。比如,选取了〈主语〉,并采用规则〈主语〉 ∷=〈代词〉, 那么得到:〈主语〉〈谓语〉 〈代词〉〈谓语〉, 重复做下去
3.3 文法和语言的形式定义
例 文法G =(VN,VT,P,S) VN = { S }, VT ={ 0, 1 } P={ S→0S1, S→01 } S为开始符号
3.3 文法和语言的形式定义
例 文法G=(VN,VT,P,S) VN ={标识符,字母,数字} VT ={a,b,c,…x,y,z,0,1,…,9} P={<标识符>→<字母> <标识符>→<标识符><字母> <标识符>→<标识符><数字> <字母>→a,…, <字母>→z <数字>→0,…, <数字>→9 } S=<标识符>
3.2 符号和符号串
符号串的运算
符号串的长度:符号串中符号的个数.符号串s的长度 记为|s|。 ε 的长度为0 符号串的连接:符号串x、y的连接,是把y的符号写在 x的符号之后得到的符号串xy 如 x=ab,y=cd 则 xy=abcd 有 ε a = aε 符号串的方幂:符号串自身连接n次得到的符号串 an 定义为 aa…aa n个a a1=a, a2=aa 约定a0=ε
3.3 文法和语言的形式定义
• 定义6:语言
– 由文法G生成的语言记为L(G),它是文法G的一切句 子的集合 – L(G) = {x|S =>* x,其中S为文法的开始符号, 且x ∈VT*}
例:G: S→0S1, S→01 L(G)={0n1n|n≥1}
3.3 文法和语言的形式定义
例 文法G[S]: (1)S→aSBE (2)S→aBE (3)EB→BE (4)aB→ab (5)bB→bb (6)bE→be (7)eE→ee
3.3 文法和语言的形式定义
文法即是生成方式描述语言的:语言中 的每个句子可以用严格定义的规则来构造.
规则,也称重写规则、产生式或生成式,是形 如α→β或α∷=β的(α,β)有序对,其中α是字母 表V的正闭包V+中的一个符号,β是V*中的一个 符号。α称为规则的左部,β称作规则的右部。
3.3 文法和语言的形式定义
3.2 符号和符号串
符号串集合:若集合A中所有元素都是某字母表上的符 号串,则称A为字母表上的符号串集合。
两个符号串集合A和B的乘积定义为AB =xy|xA且 y B 若 集合A=ab,cde B = 0,1 则 AB =ab1,ab0,cde0,cde1 使用 * 表示上的一切符号串(包括ε )组成的集合。 Σ *称为Σ 的闭包。 上的除ε 外的所有符号串组成的集合记为+ 。 Σ +称 为Σ 的正闭包。
3.3 文法和语言的形式定义
• 定义7:文法的等价
– 若L(G1)=L(G2),则称文法G1和G2是等价的。
如文法G1[A]:A→0R A→01 R→A1
与G2[S]:S→0S1 等价 S→01
3.4文法的类型
文法的类型: 通过对产生式施加不同的限制,Chomsky将文法分为 四种类型:
0型文法:对任一产生式α →β ,都有α ∈(VN∪VT)+, β ∈(VN∪VT)* 1型文法:对任一产生式α →β ,都有|β |≥|α |, 仅仅 S→ε 除外 2型文法:对任一产生式α →β ,都有α ∈VN , β ∈(VN∪VT)* 3型文法:任一产生式α →β 的形式都为A→aB或A→a,其中 A∈VN ,B∈VN ,a∈VT
3.1 文法的直观概念
• 如何表述语言?
– 语言只有有限个句子:枚举 – 无穷个句子: 怎么办?
• 给出一些规则,用这些规则来说明(或者定义)句 子的组成结构,比如汉语句子可以是由主语后 随谓语而成,构成谓语的是动词和直接宾语
3.1 文法的直观概念
汉语中句子的构成规则: 〈句子〉∷= 〈主语〉〈谓语〉 〈主语〉∷= 〈代词〉|〈名词〉 〈代词〉∷= 我|你|他 〈名词〉∷= 王明|大学生|工人|英语 〈谓语〉∷= 〈动词〉〈直接宾语〉 〈动词〉∷= 是|学习 〈直接宾语〉∷= 〈代词〉|〈名词〉 “我是大学生”符合上述规则,是汉语的一个句子。
3.2 符号和符号串
例:Σ ={a,b} Σ *={ε ,a,b,aa,ab,ba,bb,aaa,aab,…} Σ +={a,b,aa,ab,ba,bb,aaa,aab,…}
{ } ......
* 2
* { } * 2 3 ......
3.2 符号和符号串
符号串s的头(前缀):移走符号串s尾部的零个或多于零个符号 得到的符号串. 如: b是符号串banana的一个前缀.
符号串s的尾(后缀):删去符号串s头部的零个或多于零个符号 得到的符号串. 如:nana是符号串banana的一个后缀. 符号串s的子串:从s中删去一个前缀和一个后缀得到的符号串. 如:ana是符号串banana的一个子串.
3.1 文法的直观概念
如果不考虑语义和语用,即只从语法这 一侧面来看语言,这种意义下的语言称作 形式语言。形式语言抽象地定义为一个数 学系统。“形式”是指这样的事实:语言 的所有规则只以什麽符号串能出现的方式 来陈述。形式语言理论是对符号串集合的 表示法、结构及其特性的研究。是程序设 计语言语法分析研究的基础。
相关文档
最新文档