sun编译原理第2章文法和语言的基本知识(第2讲).ppt

sun编译原理第2章文法和语言的基本知识(第2讲).ppt

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
● 2型: P:U ? v 其中U∈ N ,v∈ (T?N)* ● 0型、1型、2型、3型比较 ■ 短语、直接短语和句柄课堂练习 已知文法G[E]: E→T|E+T|E-T T→F|T*F|T/F F→(E)|i (1)该文法的开始符号是什么? (2)请给出该文法的终结符号集合VT和非终结符号集合VN。 (3)找出句型T+T*F+i的所有短语、直接(简单)短语、句柄。 ■ 文法的二义性 引例:已知简单整型算术表达式文法: exp ? exp op exp|( exp ) | i op ? + | - | * 请画出串 i - i * i 的语法树! 解: 1) 推导 2) 根据推导画语法树 同一个句子若可生成两棵不同的语法树,则定义该句子的文法叫二义性文法。 注意理解:若一个文法中存在某个句子,它有两个不同的最左(最右)推导,这个文法是二义性文法。 ■ 文法二义性的消除 ◆ 不修改文法,指定正确的语法树; ◆ 修改文法(考虑优先级、结合性等) 注意:文法的二义性和语言的二义性是两个不同的概念。 只要某文法定义的语言中,有一个句子有2棵以上的语法树,该文法就是二义性的; 而二义性语言是指,对它不存在无二义性的文法,这样的语言称为先天二义性的语言。 文法G[E]: E→T|E+T|E-T T→F|T*F|T/F F→(E)|i 文法G[E]: E?E+E | E*E| (E) | i 文法和语言分类:0型、1型、2型、3型(乔姆斯基层次) 0型文法称为短语结构文法(非限制)。产生式的左部和右部都可以是符号串,一个短语可以产生另一个短语。 ● 0型:P:u ? v 其中u∈ (T?N)+ ,v∈ (T?N)* ■ 乔姆斯基层次 2.6 文法和语言的分类 1型文法称为上下文敏感或上下文有关文法。也即只有在x,y这样的上下文中才能把U改写为u ● 1型:P:xUy ? xuy 其中 U∈N, x,y,u ∈ (T?N)* 例:1型(上下文有关)文法 文法G[S]: S→CD C→aCA C→ε C→bCB D→ε AD→aD BD→bD Aa→bD 2型文法称为上下文无关文法。也即把U 推导为v 时,不必考虑上下文。 文法G[S]: S→AB A→BS|0 B→SA|1 2型文法即上下文无关文法及相应的语言是我们主要研究的对象。 *信息学院 孙丽云 第2章 文法和语言的基本知识 2.1 概述 对程序设计语言的描述是从语法、语义和语用3个因素来考虑的。 语法是对语言结构的定义; 语义是描述了语言的含义; 语用则是从使用的角度去描述语言。 P8 对赋值语句的非形式化描述例子 缺点:不够清晰和准确。 ■ 形式化描述方法 是用一整套带有严格规定的符号体系来描述问题的方法。 2.2 字母表和符号串的基本概念 ■ 字母表和符号串 1、字母表:元素的非空有限集,例:?={a,b,c} 注意:(1)字母表中至少包含一个元素; (2)字母表中的元素可以是字母、数字或其他符号; (3)不同语言有不同的字母表; (4)任何语言的字母表指出了该语言中允许出现的一切符号。 2、符号(字符):字母表中的元素称为符号。 例:字母表?={a,b,c}中的a,b,c为符号。 ■ 字母表和符号串 3、符号串:符号的有穷序列称为符号串。例:字母表?={a,b,c},可组成的符号串有a,b,c,aa,ba,cba…… 注意:(1)符号串总是建立在某个特定字母表上的且只能由字母表上的有穷多个符号组成; (2)符号串中符号的顺序是很重要的; (3)符号串的长度:符号串中所包含的符号的个数。 例s=Iamstring, 则|s|=9 (4)不包含任何符号的符号串,称为空符号串,用ε表示,即|ε|=0 ■ 符号串的运算 1、符号串的连接 例:x=ab,y=vc,则xy=abvc 注意:对任意的符号串x,有xε=εx=x 2、集合的乘积 AB={xy|x∈A且y∈B} 例:A={xy,z} B={a,bc},则AB=? 注意:(1){ε}A=A{ε}=A (2) {ε}与{ }的区别 {ε}表示由空符号串ε所组成的集合, { }表示空集合Φ ■ 符号串的运算 3、符号串的幂运算 例:x=ab,则x0=ε, x1=ab,…… 4、集合的幂运算 例:A={x,y,z} ,则A0={ε},A1=A,A2=AA,…… 5、集合A的正闭包A+与闭包A* A+=A1∪A2∪A3∪…∪An… A*= A0∪A1∪A2∪…∪An…= {ε} ∪A+ 注意:A*中一定要包

文档评论(0)

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

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

1亿VIP精品文档

相关文档