第2章 文法和语言21 文法的基本概念 1个程序设计语言是1个记.ppt

第2章 文法和语言21 文法的基本概念 1个程序设计语言是1个记.ppt

  1. 1、本文档共56页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章 文法和语言21 文法的基本概念 1个程序设计语言是1个记

第二章 文法和语言 2.1 文法的基本概念 一个程序设计语言是一个记号系统,如自然语言一样,它的完整的定义应包括语法和语义两方面。所谓一个语言的语法是指一组规则,用它可以形成和产生一个合适的程序,目前在程序设计语言的识别中广泛使用的是上下文无关的文法。在这理主要介绍文法和语言的概念。 例:设有文法: 句子→主语谓语 主语→冠词形容词名词 冠词→the 形容词→big 谓语→动词直接宾语 动词→ate|caught 直接宾语→冠词名词 名词→mouse|cat 则: 句子=主语谓语=冠词形容词名词谓语 =the形容词名词谓语= the big名词谓语 =the big cat 谓语=the big cat 动词直接宾语 =the big cat ate直接宾语=the big cat ate冠词名词=the big cat ate the 名词 =the big cat ate the mouse 2.1.1 符号和符号串 定义 2.1 字母表是有穷非空集合。用Σ表示。 例:无符号二进制数的字母表为{0,1} C语言的字母表为字母、数字和若干专用符号组成的符号集 定义 2.2 符号串是由字母表中的符号组成的有穷序列,又称字符串、串。 例:a,b,c,ba,bbac,caacb,···等都是字母表{a,b,c}上的符号串 定义 2.3 不包含任何字符串的空符号串用ε表示 定义 2.4 符号串x的长度,即符号串x中的字符用|x|表示(读作x的长度) 例:|abc|=3 |a|=1 |ε|=0 定义 2.5 设非空符号串u=xvy,其中v≠ε,则称v为u的子串,若|u| |v|则称v为u的真子串 定义 2.6 如果z=xy是一个符号串,则x是z和头,而y是z的尾。如果x是非空的,那么y是固有尾;同样如果y非空,那么x是固有头。 例:设z=abc,那么z的头是ε,a,ab,abc。除abc外,其它都是固有头。z的尾是ε,c,bc,abc。z的固有尾是ε,c,bc 定义 2.7 设x、y 是同一字母表上的两个符号串,把y的符号写在X的符号之后得到的符号串,称为的连接。记为xy 例:x=ab,y=wabu 则 z=xy=abwabu 显然:|x|+|y|=|z| εx=xε=x 定义 2.8 设x是符号串,把x自身连接n次得到符号串z,即z=xx···xx(n个x),称为符号串x的方幂,记为z=xn 例:x0=ε x1=x x2=xx x3=xxx ··· 定义 2.9 符号串集合若集合A中的一切元素都是其字母表上的符号串,则称A为该字母表上的符号串集合。 注意:ε、{ε}和Φ(表示空集)的区别 定义 2.10 两个符号串集合A和B的乘积AB定义为: AB={xy|x∈A且y∈B} 例:设A={a,bc},B={b,c,da}则集合AB={ab,ac,ada,bcb,bcc,bcda}。 注意:由于εx=xε=x 因此{ε}A=A{ε}=A ,但ΦA=AΦ=Φ 则: A0={ε} A1=A A2=AA An=An-1A=AAn-1(n0) 显然: Σ1是字母表中的所有单个字符组成的字符串 Σ2是所有由字母表中二个的字符组成的字符串 Σ3是所有由字母表中三个的字符组成的字符串 Σn是所有由字母表中长度为n的字符串集合 定义 2.11 A的闭包 A*=A0∪A1∪A2∪··· A的正闭包 A+= A1∪A2∪A3∪··· 显然A+=AA*=A*A A*=A0∪A+   由于一个字母表上的正闭包包含了该字母表中的符号所能组成的一切符号串,而语言是该字母表上的某些符号串的集合,因此,某个字母表上的语言是这个字母表上的正闭包的子集,而且通常是真子集。 例:若Σ={0,1},则Σ*={ε,0,1,00,01,10,11,000,001,010, ···} 例:令L={A,B,C,···,Z,a,b, ···,z},D={0,1, ···9} 1.L∪D 2.LD 3.L4 4. L(L∪D)* 5. D+ 6.D+∪L*则分别代表什么集合? 1.字母或数字(包括ε)的集合 2.由字母开头后面跟一个数字的集合 3.由4个字母组成的字符串的集合 4.由字母开头后面是字母数字(可省略)的集合 5.数字串集合 6.数字串和字母串集合(包括ε) 约定:当对符号串z=xy的头感兴趣而对其余部分

您可能关注的文档

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档