编译原理[第二版]第4章词法分析.pptVIP

  1. 1、本文档共59页,可阅读全部内容。
  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文档。上传文档
查看更多
编译原理[第二版]第4章词法分析

第四章 词法分析;4.1 词法分析程序的设计;单词符号;二、输出表示:(单词种别,单词自身的值) A:=B+2 (id,指向A的符号表的入口指针) (id,指向B的符号表的入口指针) (num, 2) 三、词法分析工作独立的原因: 1、简化设计 2、改进编译效率 3、增加编译系统的可移植性 ;4.2 单词的描述工具;几类单词的描述;二、正规式(regular expression);正规式中的符号说明: “?”读为“或”(也有使用“+”代替 “?” 的) “? ”读为“连接”; “?”读为“闭包”(即,任意有限次的自重复连接)。 在不致混淆时,括号可省去,但规定算符的优先顺序为:“?”、“? ”、“?” 。 连接符“? ”一般可省略不写。 “?”、“? ”和“?” 都是左结合的。 正规集是正规语言的另一种表示。 如:字母(数字|字母)? 表示标识符。;例令?={a,b}, ?上的正规式和相应的正规集的例子有: 正规式 正规集 a {a} a?b {a,b} ab {ab} (a?b)(a?b) {aa,ab,ba,bb} a ? {? ,a,aa, ……任意个a的串} (a?b)? {? ,a,b,aa,ab ……所有由a 和b组成的串} (a?b)?(aa?bb)(a?b)? {??上所有含有两个相继 的a或两个相继的b组成 的串} ;例 ?={l,d},r=l(l?d)?定义的正规集: {l,ll,ld,ldd,……}(标识符) 其中:l代表字母,d代表数字,正规式即是 字母(字母|数字)? 它表示的正规集是“字母打头的字母数字串”。 例4.3 ?={d,.,e,+,-},则?上的正规式 : d?(.dd??? )(e(+?-??)dd???) 表示的是无符号数的集合。其中:d为0-9的数字。;(二)两个正规式等价;(三)正规式的运算律;三、正规文法到正规式 ;例 r = a(a?d)? VT={a,d} S?a(a?d)? S?aA A?(a?d)? A?(a?d)B A?? B?(a?d)B B?? ;2. 将正规文法转换成正规式 使用如下规则,最后只剩下一个开始符号定义的产生式,并且右部不含非终结符。 规则1 :A-xB,B-y = A=xy 规则2: A-xA|y = A=x*y 规则3: A-x, A-y = A=x|y ;例如:文法G[S]为: S-aA, S-a, A-aA, A-dA, A-a, A-d;4.3 有穷自动机;一、确定的有穷自动机(DFA) 1、定义: 一个确定的有穷自动机(DFA)M是一个五元组:M=(K,Σ,f,S,Z)其中 1.K是一个有穷集,它的每个元素称为一个状态; 2.Σ是一个有穷字母表,它的每个元素称为一个输入符号,所以也称Σ为输入符号字母表; 3.f是转换函数,是在K×Σ→K上的映射,即如f(ki,a)=kj,(ki∈K,kj∈K)就意味着,当前状态为ki,输入符为a时,将转换为下一个状态kj,我们把kj称作ki的一个后继状态; 4.S∈K是唯一的一个初态; 5.Z?K是一个终态集,终态也称可接受状态或结束状态。;例:;(1)DFA 的状态图表示;(2)DFA 的矩阵表示;2、∑*上的符号串t在M上运行 一个输入符号串t,(我们将它表示成Tt1的形, 其中T∈∑,t1∈∑*)在DFA M上运行的定义为: f(Q,Tt1)=f(f(Q,T),t1) 其中Q∈K。 扩充转换函数f,是K×Σ*→K上的映射,且: f(Q,?)=Q;例:证明t=baab被如下的DFA所接受。;DFA M所能接受的符号串的全体记为L(M) ;DFA M=(K,Σ,f,S,Z)的算法: K:=S; c:=getchar; while ceof do {K:=f(K,c); c:=getchar; }; if K is in Z then return (‘yes’) else return (‘no’);二、不确定的有穷自动机NFA;例;表格表示;∑*上的符号串t在NFA N上运行 一个输入符号串t,(我们将它表示成Tt1的形式,其中T∈∑,t1∈∑*)在NFA M上运行的定义为:f(Q, Tt1)=f(f(Q,T),t1),其中Q∈K. ∑*上的符号串t被NFA

文档评论(0)

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

分享好文档!

1亿VIP精品文档

相关文档