编译原理第2章 编译基础.ppt

  1. 1、本文档共53页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
§2.0 概 述 对程序设计语言的描述是从语法、语义和语用三个因素来考虑。 §2.0 概 述 §2.1 符号表 一. 符号串与字母表 1.字母表:元素的非空有穷集合。两含义:①字母表中至少包含一个元素。②字母表中元素可以是字母、数字或其它符号。 例如:∑={ a , b , c } 2. 符号(字符):字母表中元素。 3. 符号串:用字母表中的符号组成的任何有穷序列,也称字。 例如:a , ab , bba , acab , … 注意: ①符号串中符号的顺序是很重要的。 ②不包含任何符号的符号串称空串,记为ε。 |ε|=0 ③一个字母表上全部符号的集合是无穷的。? 4. 符号串的前缀、后缀以及子串: 设x是一符号串,例如:x=abc 符号串的前缀:从x的尾部删除若干个(=0)符号后所余下的部分。例如:ε,a,ab,abc 符号串的后缀:从x的头部删除若干个(=0)符号后所余下的部分。例如:ε,c,bc,abc 子串:从x中删除前缀和后缀之后所余下的部分。 例如:ε,a,b,ab,bc,abc 二.? 符号串的运算 1.符号串的连接:设x,y是符号串,则串xy称为它们的连接。 例如:设x=my y=computer xy=mycomputer yx=computermy 注意:对任意x Xε=εX=X 2.集合的和与乘积:设A,B是符号串的集合,则: A∪B={ω|ω∈A或ω∈B} AB={ xy|x∈A且y∈B} 例如:设 A={a,b} B={c,d} 则: A∪B={a,b,c,d} AB={ac,ad,bc,bd} 注意:Φ∪A=A∪Φ=A ΦA=AΦ=Φ {ε}A=A{ε}=A Φ={ }≠{ε} 3. 符号串的幂运算:若x是符号串,则 x0=ε, x1=x, x2=xx, … 例如:设 x=abc 则: x0=ε, x1=abc, x2=abcabc, … 4. 集合的幂运算:若A是符号串的集合,则 A0={ε}, A1=A, A2=AA, … 例如:设 A={a,b} 则: A0={ε}, A1={a,b}, A2={aa,ab,ba,bb}, … 5. 集合的A+(正闭包)和A*(自反传递闭包): 设A为任一集合,则: A+= A1∪A2∪A3∪ …∪An∪ … (A上所有符号串所组成的集合) A*=A0 ∪ A+={ε}∪ A+ 例如:设A={a,b,c} A+={a,b,c,aa,ab,ac,ba,bb,bc,…} A*={ε, a,b,c,aa,ab,ac,ba,bb,bc,… } §2.2 文法和语言的形式定义 一.形式语言:是一字母表上按某种规则构成的所有符号串的集合。反之,任一字母表上符号串的集合均可定义为一个形式语言。 ? 二.形式语言的描述:(三种方法) 1.当语言为有穷集合时,用枚举法。 2.用文法描述语言 例如:设有字母表 ∑ ={0,1} ∑+ ={0,1,00,01,11,10,000,100,… } 用A表示∑+ ,A→0 (定义为,生成,导出) 用产生式表示∑+: A→0 A→1 A→A0 A→A1 ? 3.用自动机识别语言:构造一种装置来识别语言,它可以判断某符号串是否是该语言的句子。 例如: 1100→ → 是(接收) 11ab→ → 不是(不接收) ? 三.? 文法的形式定义 1. 规则(产生式):是一个符号与一个符号串的有序对(A,α),通常写作:A→α或 A∷=α ? 2.非终结符与终结符: 非终结符:出现在规则左部能派生出符号或符号串的那些符号。通常用大写字母表示。 终结符:是组成语言不可再分的基本符号,通常用小写字母表示。 3.文法的形式定义:是规则的非空有穷集合,通常定义为四元组: G[S]=(Vn,Vt,P,S) 其中: Vn:规则中非终结符的集合。 Vn={A} Vt:规则中终结符的集合。 Vt={0,1} P: 文法规则式的集合。 P: A→0 A→1 A→A0 A→A1 S: 文法的开始符号(识别符号) 由它开始识别我们所定义的语言。S=A 例1 例2 例3 例4 例5 继续 例1.设有字母表 ∑ ={a,b},请为语言 L={a2n, b2n | n=1 } 设计一个文法。

文档评论(0)

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

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

1亿VIP精品文档

相关文档