《0上下文无关语言》-课件.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
上下文无关文法的应用 用上下文无关文法描述语言 XML和文档类型定义 * * 用上下文无关文法描述语言 一般的程序设计语言都使用括号(圆括号,方括号,花括号等),并且都是嵌套地、匹配地使用。所谓匹配就是一个左括号必须有一个右括号和它对应,所谓嵌套就是括号可以多层出现(一对括号外面还有一对括号,依此类推)。不考虑其它符号,圆括号匹配和嵌套的正常情况如(()),()(),(()())等等,不匹配的情况如((),()),),()())等等。 可以用一个上下文无关文法G=({B},{( ,)},P,B),产生所有匹配的圆括号串(包括空串,即没有括号的情况)。其中P包含以下的产生式: B→BB∣(B)∣ε * 用上下文无关文法描述语言 除了括号之外,程序设计语言中还包含许多其它的结构。 例如下面给出的文法G1: E→I∣E+E∣E*E∣(E) I→a∣b I→Ia∣Ib∣I0∣I1 它定义了很简单算术表达式E, 但L(G1)也不是正则语言。 * 用上下文无关文法描述语言 常用的程序设计语言中有许多结构和圆括号很相似。例如,一个代码块的开始和结束,就像 Pascal 语言中的 begin 和end,C 语言中的花括号“{”和“}”,它们在整个程序中也必须是匹配的。 在程序设计语言中,有时还会出现另外一种结构,这种结构和括号结构略有不同,匹配时可以不考虑“左括号”。 例如,在C语言中的 if 和 else 就是这样,一个 if 子句可以不和 else 子句匹配而单独存在,也可以和一个 else子句匹配。一个能产生所有可能的 if 和 else 序列的文法 G2 如下: S→ε∣SS∣ifS∣ifSelseS 其中if和else都做为终结符看待。例如,ifelseifelse,ififelse,ifelseifelse和ifif等都是由文法G2产生的序列,而elseif,ifelseelse等就不能由文法G2产生。 * XML和文档类型定义 XML的目的不是描述文档的格式,而是试着描述文本的“语义”。 例如,像“12 Maple St.”这样的文本看上去像一个地址。 在XML中,代表一个地址的短语要用标记符ADDR围起来,例如: ADDR 12 Maple St./ADDR 用ADDR标记是否意味着是一座建筑物的地址,那可不一定。 例如,如果这个文档是关于内存分配的,那么ADDR标记的可能是一个内存地址。 为了把这些不同类型的标记符区别开来,人们希望开发一个标准,该标准采用DTD的形式。 一个DTD(Document Type Defination的缩写)本质上就是一个上下文无关文法,不过它有着自己的用来描述变元和产生式的记号。 下面的例子将展示一个简单的DTD,并且介绍DTD语言的一些描述方法。用来描述DTD的语言本质上就是一种CFG记法。 * XML和文档类型定义 一个 DTD 的形式如下: !DOCTYPE DTD的名字[ 元素定义的列表 ] 其中,元素定义的形式是: !ELEMENT 元素的名字(元素的描述) 元素的描述实质上是正则表达式,这些正则表达式的基础是: 其他元素的名字, 特殊的术语 #PCDATA,代表任何不包含 XML 标记符的文本。 * XML和文档类型定义 允许的运算符有: “∣”代表并。 逗号“,”代表连接。 闭包运算有三种。 * —— 表示运算对象零次或多次出现 + —— 表示运算对象一次或多次出现 ? —— 表示运算对象零次或一次出现 可以用圆括号把运算符和它们的运算对象括起来,以示优先,否则就采用通常正则表达式构造的优先级。 * XML和文档类型定义 考虑以下的情况:假设计算机销售商们协商建立一套 DTD 的标准,这套标准是用来在 Web上发布他们正在销售的各种 PC的介绍。每种 PC的介绍中包含一个型号,以及这个型号的特性的细节描述。 例如,RAM的大小、磁盘的数目和大小等等。 右图展示出一个假想的、非常简单的刻画个人计算机的DTD。 * XML和文档类型定义 * XML和文档类型定义 图中写出的 DTD 中元素的规则看上去和 CFG 不是很像。其中有些和CFG 的产生式相似,例如: !ELEMENT PROCESSOR ( MANF,MODEL,SPEED) 和下面这条产生式 PROCESSOR →MANF MODEL SPEED 已经很像。 DTD 中的规则 !ELEMENT DISK ( HARDDISK∣CD∣DVD) 也容易转换成产生式组的缩写法: DISK →HARDDISK∣CD∣DVD * XML和文档类型定义 然而,DTD中比较难转换的一种规则是: !ELEMENT PC ( MODEL,PRICE,PROCESSOR

文档评论(0)

夏天 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档