CHAPTER 2(文法和语言 Grammar and Language).pptVIP

CHAPTER 2(文法和语言 Grammar and Language).ppt

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CHAPTER 2(文法和语言 Grammar and Language)

* * 2.4 分析树 上下文无关文法能够描述现今程序设计语言的大部分语法结构 算术表达式 赋值语句 条件语句等 * * 2.4 分析树 表达式文法:G = ( {+,*,i,(,)}, {E}, E, P ) P: E → id E → E+E E → E*E E → (E) E表示算术表达式, id表示程序的“变量”,该文法定义了由变量,+,*,( 和 ) 组成的算术表达式的语法结构,即: 变量是算术表达式;若E1和E2是算术表达式,则E1+ E2,E1*E2和 (E1) 也是算术表达式。 * * 2.4 分析树 分析树用图形方式展现了从文法的开始符号推导出相应语言中的符号串的过程。 * * 2.4 分析树与句型 构造分析树 9 - 5 + 2 digit list list digit digit list G3:list → list+digit | list-digit | digit digit → 0|1|2|3|4|5|6|7|8|9 * * 2.4 分析树 分析树的特性: 根标识为开始符号 内部结点标识为非终结符号 每一内部结点及其子结点对应一条产生式,该结点是产生式的左部,子结点从左至右排列构成产生式的右部 * * 2.4 分析树 文法的二义性(Ambiguity) 如果一个文法有两棵或两棵以上的分析树能够生成同一个给定的终结符号串,称此文法具有二义性。 * * 例子 2.4 分析树 G4:string → string+string | string-string | 0|1|2|3|4|5|6|7|8|9 9 5 2 string string string string - string + (9-5)+2 * * 例子 2.4 分析树 G4:string → string+string | string-string | 0|1|2|3|4|5|6|7|8|9 string string string string - string + 9 5 2 + 9-(5+2) * * 第一章:编译概述 第一章:编译概述 * * Chapter2 Grammar and Language 串和语言(Strings and Languages ) 文法和语言的定义 (Definitions of Grammar and Language) 文法和语言的分类 (Classification of Grammar and Language) 分析树 (Parse Tree) * * 2.1 串和语言 字母表(alphabet): 字母表是符号(symbols)的非空有穷集合,用∑表示 符号:可以相互区别的记号(元素) 不同的语言有不同的字母表 汉语——汉字 英语——26个英文字母 * * 2.1 串和语言 符号串(String): 符号串是由字母表中的符号所组成的有穷序列 在语言理论中,符号串又称为: 句子(sentence)、字(word) 例如: Σ={a,b} a, b, aa, ab, aabba…都是Σ上的符号串 ε是任何Σ上的符号串 * * 2.1 串和语言 符号串的长度 符号串中包含符号的个数 符号串 s 的长度记为 |s| 例如,对于字母表{a,b,c},aab 是其上的一个符号串, | aab |=3 注意:空符号串ε, | ε |=0 * * 2.1 串和语言 符号串的前缀(prefix)、后缀(suffix)、子串(substring) 后缀:删去符号串 s 头部的零个或多于零个符号得到的符号串 例如: nana是符号串banana的一个后缀 前缀:移走符号串 s 尾部的零个或多于零个符号得到的符号串 例如: b是符号串banana的一个前缀 * * 2.1 串和语言 符号串的真前缀、真后缀和真子串——非空 子串:从 s 中删去一个前缀和一个后缀得到的符号串 例如:ana是符号串banana的一个子串 * 对于每个符号串s, s和ε两者都是符号串 s的前缀,后缀和子串 * * 2.1 串和语言 语言(Language): 某个字母表上的符号串的集合 例如: 汉语——所有符合汉语语法的句子构成的集合 C语言——所有合法的C程序构成的集合 注意:空集{ }、 ? 和{ε}的不同 * * 2.1 串和语言 符号串的运算: 连接(concatenation):符号串x、y的连接,是把 y 的符号写在 x 的符号

文档评论(0)

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

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

1亿VIP精品文档

相关文档