形式语言与自动机-第2章-语言与文法_第1页
形式语言与自动机-第2章-语言与文法_第2页
形式语言与自动机-第2章-语言与文法_第3页
形式语言与自动机-第2章-语言与文法_第4页
形式语言与自动机-第2章-语言与文法_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1College of Computer Science & Technology, BUPT第二章第二章 语言及文法语言及文法n主要内容主要内容:n定义形式语言的术语定义形式语言的术语n给出文法的定义和文法的分类给出文法的定义和文法的分类n要求掌握:要求掌握:n语言和文法的形式定义语言和文法的形式定义nCHOMSKY文法体系的分类。文法体系的分类。College of Computer Science & Technology, BUPT引言n复习:复习:n什么是形式语言?什么是文法?什么是自动机?n形式语言的定义方式?n研究形式语言与自动机的意义?n问题的提出?本章关注问题的提出?本章关注

2、 语言与文法语言与文法n如何描述(产生)左右括号匹配的语言?n如何描述(产生)算术表达式?n知识点:知识点:n形式语言所研究的问题:产生语言,根据语言中的基本句子和其它句子的形成“规则”,得到(产生)语言所包含的所有句子。3College of Computer Science & Technology, BUPT第一节第一节 语言的定义与运算语言的定义与运算一、一、语言的一些术语:语言的一些术语:n 字母表:字母表: 字符的有限集合,记为字符的有限集合,记为T。 n字符串:字符串: 由字母表由字母表T中的字符构成的序中的字符构成的序列称字母表列称字母表T上的字符串(句子)。上的字符串(句子)

3、。n 常记为常记为u,v,w,x,y,z;n 常用常用a,b,c,d 标识单个字符。标识单个字符。4College of Computer Science & Technology, BUPT字字 母母 表表 (Alphabet) 概念概念 形式符号的集合形式符号的集合 记号记号 常用常用 T、 表示表示 举例举例- 英文字母表英文字母表 a, b, , z, A, B , , Z - 英文标点符号表英文标点符号表 , ; : . ? ! “ ” ( ) - 汉字表汉字表 , 自自, , 动动 , , 机机, - 化学元素表化学元素表 H, He, Li, , - T = a, n, y, 任

4、任,意意 5College of Computer Science & Technology, BUPT字字 符符 串串 (string) 概念概念 字母表字母表 T 上的一个上的一个字符串字符串(简称(简称串串),或称为),或称为 字字(word),),为为 T 中字符构成的一个有限序列。中字符构成的一个有限序列。 空串空串(empty string), 用用 表示,不包含任何字符。表示,不包含任何字符。 举例举例 设设 T = a, b ,则则 , a, ba, bbaba 等都是串等都是串 字符串字符串 w 的的长度长度,记为,记为 w ,是包含在是包含在 w 中字符的个中字符的个数数

5、举例举例 = 0, bbaba = 5 ai 表示含有表示含有i个个a的字符串的字符串6College of Computer Science & Technology, BUPT 连接(连接(concatenation) 设设 x, y为串为串, 且且 x a1a2 am, y b1b2 bn, 则则 x 与与 y 的连接的连接 x y a1a2 am b1b2 bn 连接运算的性质连接运算的性质 - ( x y ) z x( y z )- x x x - x y x + y 关关 于于 字字 符符 串串 的的 运运 算算7College of Computer Science & Tech

6、nology, BUPT 其它其它 如如 取头字符取头字符,取尾部取尾部,子串匹配子串匹配 等等n 设设1, 2, 3是字母表是字母表T上的字符串,称上的字符串,称1是字符是字符串串12的前缀,的前缀,2是字符串是字符串12的后缀,且的后缀,且2是字符串是字符串123的子串。的子串。 n 空串是任何字符串的前缀,后缀及子串。空串是任何字符串的前缀,后缀及子串。n 例例:abc的前缀的前缀 a ab abc . 后缀后缀 c bc abc . 子串子串 a b c ab bc abc , 即一个字符串可以看作是多个字符串的连接。即一个字符串可以看作是多个字符串的连接。 关关 于于 字字 符符 串

7、串 的的 运运 算算8College of Computer Science & Technology, BUPTn 字符串字符串的逆用的逆用 或或 T表示表示, 是是字符串字符串的倒置。的倒置。= b1b2bn = bnbn-1b2b1n 空串空串的逆还是的逆还是9College of Computer Science & Technology, BUPT字字 母母 表表 的的 幂幂 运运 算算 幂运算幂运算 设设 T 为字母表,为字母表,n 为任意自然数,为任意自然数, 定义(定义(1) T0 = (2)设)设 x Tn-1,a T, 则则a x Tn (3) Tn 中的元素只能由(中的元

8、素只能由(1)和)和(2)生成)生成 闭包闭包 T* = T0 T1 T2 闭包闭包 T+ = T1 T2 T3 T* = T+ , T+ = T* - - 10College of Computer Science & Technology, BUPT闭包的物理意义闭包的物理意义 T的星闭包的星闭包T*:字母表T上的所有字符串和空串的集合。T的正闭包的正闭包T+:字母表T上的所有非空字符串构成的集合T*= T+ 举例举例 设设 T = 0,1 ,则则 T0 = , T1 = 0,1 , T2 = 00,01 ,10 ,11 , T* = ,0,1,00,01 ,10 ,11, T+ = 0,

9、1,00,01 ,10 ,11, 11College of Computer Science & Technology, BUPT语 言 (Languages) 概念概念 设设 T 为字母表,则任何集合为字母表,则任何集合 L T* 是是字母字母表表T上的上的一个语言(一个语言(language) 举例举例 - 英文单词集英文单词集 , English, , words , - C 语言程序集语言程序集 字母表?字母表?- 汉语成语集汉语成语集 , 马到成功马到成功, - 化学分子式集化学分子式集 , H2O, , NaCl , - any, 任意任意 12College of Compute

10、r Science & Technology, BUPT语 言 (Languages)举例举例:设:设T = a,b 则则 L1 = anbn | n1 L2 = bk | k 是质数是质数 L3 = 只有一个空句子的语言只有一个空句子的语言 L4 = = 空语言空语言 均为字母表均为字母表T上的语言。上的语言。由语言的定义知语言是集合,对于集合的运算可应由语言的定义知语言是集合,对于集合的运算可应用于对于语言的计算。如并,交,补,差。用于对于语言的计算。如并,交,补,差。13College of Computer Science & Technology, BUPT语言的基本运算 语言的积:

11、语言的积:两个语言L1 和L2的积L1 L2是由L1和L2中的字符串连接所构成的字符串的集合。即L1中所有字符串分别与L2中的字符串连接得到的集合。设T=a, b, L1和 L2是T上的语言。 L1 =ab, ba L2 =aa, bb则 L1 L2 =abaa, abbb, baaa, babb L2 L1 =aaab, aaba, bbab, bbban L1 L2 L2 L1 语言的积不可交换。语言的积不可交换。14College of Computer Science & Technology, BUPT语言的基本运算 语言的幂:语言的幂:语言的幂可归纳定义如下语言的幂可归纳定义如下:

12、 L0 = Ln = L Ln-1 = Ln-1 L n 1上例中,上例中,L12 =abab, abba, baab, baba L22 =aaaa, aabb, bbaa, bbbb 15College of Computer Science & Technology, BUPT第二节 文法n定义:所谓文法是用来定义语言的一个数学模型:所谓文法是用来定义语言的一个数学模型n表示语言的方法:n若语言若语言L是有限集合,可用是有限集合,可用列举法n若若L是无限集合(集合中的每个元素有限长度),是无限集合(集合中的每个元素有限长度),用其他方法。用其他方法。n方法一:文法产生系统,由定义的文法规

13、则产方法一:文法产生系统,由定义的文法规则产生出语言的每个句子生出语言的每个句子n方法二:机器识别系统:当一个字符串能被一方法二:机器识别系统:当一个字符串能被一个语言的识别系统接受,则这个字符串是该语个语言的识别系统接受,则这个字符串是该语言的一个句子,否则不属于该语言。言的一个句子,否则不属于该语言。16College of Computer Science & Technology, BUPT元语言元语言n定义定义:描述语言的语言描述语言的语言例如:各种各样的程序设计语言例如:各种各样的程序设计语言n当人们要解释或讨论程序设计语言本身时,又需要当人们要解释或讨论程序设计语言本身时,又需要

14、一种语言,被讨论的语言叫做对象语言,即某种程一种语言,被讨论的语言叫做对象语言,即某种程序设计语言,讨论对象语言的语言称为元语言序设计语言,讨论对象语言的语言称为元语言。17College of Computer Science & Technology, BUPTBNF(巴科斯范式)巴科斯范式) BNF范式通常被作为讨论某种程序设计语言语法的元语言n := 0|1|2|9 := “定义为”n := A|B|C|Z|a|b|z : = | | . n通过上述定义可知,所有以字母开头的,由字母和数字组成的字符串都是标识符。nBNF定义了一种语言,其中标识符如上定义。nBNF描述它所定义的语言,为

15、元语言。18College of Computer Science & Technology, BUPTn例如:汉语语法中定义了句子的结构由主语、谓语、宾语组成。这里主谓宾只是描述了句子的结构,并不是句子。而按照这种结构组成的建立在汉字上的字符串就是句子。如他是学生。n文法是一种元语言,一种方法,根据文法产文法是一种元语言,一种方法,根据文法产生出语言的句子。生出语言的句子。19例例1类类PASCAL语句语句定义定义20College of Computer Science & Technology, BUPT三、Chomsky文法体系n例如:BNF := := := :=a|b|z|A|B|

16、Z :=0|1|9将:= 改为表示可被代替用I, L, D分别表示标识符、字母、数字;21College of Computer Science & Technology, BUPT则上述表达式可以表示为则上述表达式可以表示为 IL IIL IID La|b|.|z D0|1|.9这就是一个文法的生成式集合。这就是一个文法的生成式集合。22College of Computer Science & Technology, BUPTnChomsky文法体系中,任何一种文法必须包含有两个不同的有限符号的集合,即非终结符集合N和终结符集合T。一个形式规则的有限集合P(生成式集合),一个起始符S。nP

17、中的生成式是用来产生语言句子的规则,而句子则是仅由终结符组成的字符串。这些字符串必须从一个起始符S开始,不断使用P中的生成式而导出来。n可见文法的核心是生成式的集合,它决定了语言中句子的产生。23College of Computer Science & Technology, BUPT文法的形式定义n文法G是一个四元组G=(N,T,P,S), 其中N 非终结符的有限集合T 终结符的有限集合 NT=P 形式为的生成式的有限集合。 且(NT)* N+ (NT)* (NT)*S 起始符 且S N。24College of Computer Science & Technology, BUPTn将上

18、例用文法表示G=(N,T,P,S)N = I, L, DT = a, b, c,z, 0, 1, 9P = I, La, , D0, , D9S = I n文法是语言的产生系统,研究怎样构造文法能产生出符合要求的句子。25College of Computer Science & Technology, BUPT四推导与句型1、直接推导设G =(N,T,P,S)是文法,若A是P中的生成式,和是(NT)*中的字符串,则有A = 称A直接推导出,或说是A的直接推导。26College of Computer Science & Technology, BUPTn设G = (N,T,P,S)是文法,

19、、0、1n、都是(NT)*中的字符串,且=0、 =n,其中i直接推导出i+1 (0in),则称序列0=1=2=n是长度为n的推导序列,而=0是长度为0的推导序列。n对推导出记为 ,若推导序列长度大于0,则记为 。n推导序列的每一步,都产生一个字符串,这些字符串一般称为句型。2、推导序列*G G 27College of Computer Science & Technology, BUPT3、句型和句子n句型字符串字符串是文法是文法G的句型,当且仅当的句型,当且仅当S ,且且(NT)* 。n 句子是是G的句子,当且仅当的句子,当且仅当S , 且且T*。(。(是是由终结符组成的字符串)由终结符组

20、成的字符串)例:例:I =L =a I =IL =LL =zL =zbn句型包含句子*G *G 28College of Computer Science & Technology, BUPT4文法产生的语言由文法由文法G产生的语言记为产生的语言记为L(G)。 L(G) = |T*且且S 或:或:L(G)中的一个字符串,必是由终结符组成中的一个字符串,必是由终结符组成的,并且是从起始符的,并且是从起始符S推导出来的。推导出来的。*G College of Computer Science & Technology, BUPT例:文法产生语言例例1:括号匹配的语言及产生:括号匹配的语言及产生递归

21、定义递归定义提供了集合的定义方式。构造规律。n基础:定义该集合的最基本的元素,“()”n递归:若S是合法串,则:(S)是合法串; SS 是合法串;文法产生式集合:S()S(S)S SSCollege of Computer Science & Technology, BUPT例 文法产生语言例例2:程序设计语言中算术表达式的文法:程序设计语言中算术表达式的文法运算符运算符A :+、- -、* *、/ /利用利用递归定义递归定义方式。重点是构造规律。n基础:单个变量是最基本的串,i,n递归:若S是合法串,则:SAS 是合法串; ( S)是合法串产生式集合:Si ; SSAS; S(S);A+;

22、A; A*; A/; 31College of Computer Science & Technology, BUPT第三节 Chomsky文法体系分类n文法文法 G = (N,T,P,S); P: 其中其中 (NT)* N+ (NT)* (NT)* 属于属于Chomsky文法体系文法体系n该体系对该体系对生成式(产生式)生成式(产生式)的形式做了一的形式做了一些规定,分为四类,即些规定,分为四类,即0型、型、1型、型、2型、型、3型文法型文法n0型文法:无限制文法型文法:无限制文法对应的语言:递归可枚举语言,与图灵机等价。32College of Computer Science & Tec

23、hnology, BUPT1型文法n也称上下文有关文法(也称上下文有关文法(CSG:Context-sensitive Grammar)生成式的形式为生成式的形式为,其中其中 | | ,(NT)+, (NT)* N+ (NT)*n对应的语言:上下文有关语言(对应的语言:上下文有关语言(CSL:Context-sensitive Language)n若不考虑若不考虑,与线性有界自动机(与线性有界自动机(LBA, Linear Bounded Automaton)等价。等价。College of Computer Science & Technology, BUPT1型文法语言限定约束:n左部的长

24、度小于右部左部的长度小于右部n不含不含A-A-n实际程序语言中上下文有关的部分:n过程调用时形参与实参的一致性检查等。过程调用时形参与实参的一致性检查等。34College of Computer Science & Technology, BUPT2型文法n也称上下文无关文法(也称上下文无关文法(CFG:Context-free Grammar) A , AN, 且且 (NT)*n对应的语言:上下文无关语言对应的语言:上下文无关语言 (CFL: Context-free Language)。n对 应 的 自 动 机 : 下 推 自 动 机 (对 应 的 自 动 机 : 下 推 自 动 机 (

25、 P D A : Pushdown Automaton)。College of Computer Science & Technology, BUPTn语言限定约束:语言限定约束: 左部是单个非终结符。nCFL对实际语言结构的抽象:对实际语言结构的抽象:n表示句子的语法结构,如:表达式,嵌套结构。n目前的程序设计语言主要采用CFL描述语法结构。36College of Computer Science & Technology, BUPT3型文法也称正则文法也称正则文法n右线性文法(右线性文法(Right-linear Grammar) AB 或或 A A、BN, T*。n左线性文法(左线性文

26、法(Left-linear Grammar):):AB 或或 AA、BN, T*。n对应的语言:正则语言对应的语言:正则语言n对应的自动机:有限自动机对应的自动机:有限自动机(Finite Automaton)。37College of Computer Science & Technology, BUPT例例1:G = (A,B,C, a,b,d, P, A) P: AAB;ABCAAB;Ad;Ba;Cb 是是1型文法。型文法。 A=dA=AB =dB =daA=AB =ABB =dBB =daB =daaA=AB =CAAB =bAAB =bdAB =bdCAAB =bdbAAB =bdbdAB=bdbddB =bdbdda38College of Computer Science &

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论