网站大量收购独家精品文档,联系QQ:2885784924

2第二章 编译基础.ppt

  1. 1、本文档共52页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二章编译基础 课程内容 字母表与符号串 文法与语言的关系 ? -文法的概念 ? -文法与语言的形式定义 文法构造与文法简化 ? -由语言构造文法的例子 ? -文法的简化 语法树与文法的二义性文法的概念   学习的目的 构造编译程序的算法是从研究源程序及目标程序产生的,首先找到源语言的形式描述,根据这种描述,构造出相应的分析加工程序。 语言分语法,语义和语用。程序语言语法的形式描述是很好用的,语义的形式描述不那么好用,但它推动语言理论的发展。 第一节?? 符号和符号串 一、字母表? 字母表是符号的非空有穷集合。任何程序语言都有自己的字母表,例如: 1.机器语言:由符号“0”和“1”组成的字母表, ∑={0,1} 2.ASCII字符集; 3.汉语的字母表中包括汉字、数字及标点符号 4. C字母表为: ∑={A~Z, a~z, 0~9, +, -, *, /, , =, ,? :, ,, ; ,., -,? (,? ), {,? },? [,? ] }?? 二、? 符号串 1.符号 ? 一个抽象实体,我们不再形式地定义它(就象几何中的”点”一样).例如字母是符号,数字也是符号 2.符号串? ? 由字母表中的符号所组成的的任何有穷序列被称之为该字母表上的符号串,也称作“字”或“句子”。 (1)不包含任何符号的符号串,称为空符号串简称空串,记为ε 。 (2) 若∑={a,b} ??? 则a,b,ab,ba,abb,baa...是∑上的符号串。 在符号串中,符号的顺序是很重要的,符号串ab就不同于ba,abca和aabc也不同。 3?术语? 设z是符号串 长度:是该符号串中的符号的数目。例如|aab|=3,|ε|=0。 前缀(头):删去z尾部的若干个(包括0个)符号所得的。 表示: z=x…… 后缀(尾):删去z头部的若干个(包括0个)符号所得的。 表示: z=……x 真前缀(固有头)x,真后缀(固有尾)x :x≠z 子串: 从z中删去一个前缀和一个后缀 逆转(用z表示):将z中的符号按相反次序写出而得到的符号串。 例:符号串z=banana 长度:banana=6 前缀:e,b,ba,ban,bana,banan,banana 真前缀: e,b,ba,ban,bana,banan 后缀:banana,anana,nana,ana,na,a, e 真后缀: anana,nana,ana,na,a, e 子串:? banana,anana,banan,anan,…, e 逆转(用z表示):ananab 三.符号串的运算 1.连接:设x和y是符号串,它们的连接 xy是把y的符号写在x的符号之后得到的符号串。例如,x=ba,y=nana,xy=banana εx=xε=x 2.方幂:符号串x自身连接n次得到的。 ??????? x0=e ; x1=x;? x2=xx; ????????? ……;xn=xn-1x= xxn-1; ??? 例如,? x=ba, ?????????????? x1= ba,? x2=baba, x3=bababa, ?????????????? xn=(ba)n 四. 符号串集合(语言)的运算 定义:集合中的一切元素都是某字母表上的符号串。 ?设A和B是两个符号串集合,则 ?1. 乘积(连接):AB={ xy|x ∈ A and y ∈ B} A={ab,bc}B={ac,cb}AB={abac,abcb,bcac,bccb} ?2. 合并:A∪B={x|x ∈ A or x ∈ B} A∪B={ab,bc,ac,cb} ?3. 空集:f? fA=Af=f ?4. 方幂:符号串集合的自身乘积。 ???????????????????? A0={ε}, A1=A, ????????? A2=AA, ..., An=An-1A=AAn-1 ??????? A={a,b} A0={ε}, A1=A={a,b}, ??????? A2=AA={aa,ab,ba,bb} ??????? A3=A2A=AA2={aaa,aab,aba,abb, …} 5. 集合A的Kleene闭包(星闭包),记作A*,字母表A的各次方幂之并。其含义是由A上符号组成的所有串的集合(包括空串ε) A*=∪Ai(i=0) =A0∪A1∪A2∪A3?∪… A={a,b} A*={ε,a,b,aa,ab,ba,bb, ???????????? aaa,aab,aba,abb, …} ?6.集合A的正闭包,记作A+,其含义是由字母表A上的符号组成的所有串(不包括空串ε)的集合。 A+=∪Ai(i =1) =A1

文档评论(0)

好文精选 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档