- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第二章 形式语言与自动机理论基础 主要内容: 语言和文法 有限自动机 正则表达式 语言和文法 语言和文法的关系 什么是语言? 如何表述语言? 什么是程序设计语言? 如何表述程序设计语言? 语言和文法 基本概念 字母表:元素的非空有穷集合。 符号串:由字母表中的符号组成的任何有穷序列。 或者如下定义: 1. 空符号串ε是?上的符号串 2. 若x是?上的符号串,a是?的元素,则xa是?上的符号串 3. y是?上的符号串,当且仅当它可以由1和2导出 思考如下问题: 1. 符号串的长度如何定义? 2. {ε}和?有何区别? 3. 如何判断两个符号串相等? 语言和文法 符号串的连接:设x和y 均是字母表∑上的符号串,它们的连接是把y的所有符号顺序接在x的符号之后所得到的符号串。 符号串的方幂:设x是字母表∑上的符号串,把x自身连接n次得到的符号串z, 称作符号串x的n 次幂,记作 z=xn ,特别地:x0=? 前缀和后缀:设x是字母表上的符号串,x=yz ,则y是x 的前缀,z 是x的后缀,特别是当z≠?时,y是x的真前缀;y≠ε时,z是x的真后缀。 子字符串:非空字符串 x ,删去它的前缀和后缀后所得到的字符串称为 x 的子字符串,简称子串。如果删去的前缀和后缀不同时为ε,则称该子串为真子串。 语言和文法 符号串集合:若集合A中的所有元素都是某字母表上的符号串,则称A为该字母表上的符号串集合。 符号串集合的乘积:设A、B 是两个符号串集合,AB表示A与B的乘积,则定义 AB={xy|(x∈A)∧(y∈B)} 符号串集合的方幂:设A是符号串集合,则称Ai 是符号串集合 A的方幂,其中i 是非负整数。 A0={?}, A1=A, A2=AA, …, An=AA… A 符号串集合的正闭包:A+=A1 ∪ A2 ∪ A3 … 符号串集合的星闭包:A*= A0 ∪ A1 ∪ A2 ∪ A3 … 语言和文法 文法之概述 文法能清晰地描述程序设计语言的语法构成易于理解。 文法能自动地构造有效的语法分析器,检查源程序是否符合语言规定的语法形式。 文法定义可以了解程序设计语言的结构,有利于将源程序转化为目标代码,以及检查出语法错误。 基于文法实现的语言易于扩展 文法之定义 文法G定义为四元组(VT,VN,S,P) VT是有限的终极符集合 VN是有限的非终极符集合 S是开始符,S? VN P是产生式的集合,且具有下面的形式: ? ??,其中?,??(VT?VN)* 文法之分类 O型文法: 也称为短语文法,其产生式具有形式: ?→?,其中?,??(VT?VN)*,并且?至少含一个非终极符 。 1型文法: 也称为上下文相关文法。它是0型文法的特例,要求|?| ? |?| (S→?例外,但S不得出现于产生式右部)。 2型文法: 也称为上下文无关文法。它是1型文法的特例,即要求产生式左部是一个非终极符: A→? 。 3型文法: 也称为正则文法。它是2型文法的特例,即产生式的右部至多有两个符号,而且具有下面形式之一: A →a ,A →a B 其中A,B?VN ,a?VT 。 上下文无关文法(CFG) 定义为四元组(VT,VN,S,P) VT是有限的终极符集合 VN是有限的非终极符集合 S是开始符,S? VN P是产生式的集合,且具有下面的形式: A?X1X2…Xn 其中A?VN,Xi? (VT?VN) ,右部可空。 文法相关概念 推导(直接推导):如果A??是一个产生式,则有?A????? ,其中?表示一步推导(用A →?)。这时称???是由?A?直接推导的。 ?的含义是,使用一条规则,代替?左边的某个符号,产生?右端的符号串。 ? ?+ ?: 表示?通过一步或多步可推导出? ? ?* ? : 表示?通过0步或多步可推导出? 句型: 如果有S?* ? ,则称符号串?为CFG的句型 。我们用SF(G)表示文法G的所有句型的集合。 句子: 如果?只包含终极符,则称?为CFG的句子。 语言: L(G)={ u| S ?+ u ,u ? VT* } 文法G所定义的语言是其开始符所能推导的所有终极符号串(句子)的集合。 最左(右)推导: 如果进行推导时选择的是句型中的最左(右)非终极符,则称这种推导为最左(右)推导,并用符号?lm
文档评论(0)