欢迎来到163文库! | 帮助中心 精品课件PPT、教案、教学设计、试题试卷、教学素材分享与下载!
163文库
全部分类
  • 办公、行业>
  • 幼教>
  • 小学>
  • 初中>
  • 高中>
  • 中职>
  • 大学>
  • 各类题库>
  • ImageVerifierCode 换一换
    首页 163文库 > 资源分类 > PPT文档下载
    分享到微信 分享到微博 分享到QQ空间

    第四章语法分析和语法分析程序课件.ppt

    • 文档编号:4383896       资源大小:276KB        全文页数:14页
    • 资源格式: PPT        下载积分:19文币     交易提醒:下载本文档,19文币将自动转入上传用户(晟晟文业)的账号。
    微信登录下载
    快捷注册下载 游客一键下载
    账号登录下载
    二维码
    微信扫一扫登录
    下载资源需要19文币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    优惠套餐(点此详情)
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、试题类文档,标题没说有答案的,则无答案。带答案试题资料的主观题可能无答案。PPT文档的音视频可能无法播放。请谨慎下单,否则不予退换。
    3、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者搜狗浏览器、谷歌浏览器下载即可。。

    第四章语法分析和语法分析程序课件.ppt

    1、的分析器由一张的分析器由一张(LL(1)(LL(1)分析表分析表),),一个一个(表驱动程表驱动程序序)及一及一组成组成控制程序分析表分析表XYZ#分析栈a1 a2 ai an#输入 输入是待分析的符号串(输入是待分析的符号串(),以),以结尾。结尾。分析表是一二维数组,分析表是一二维数组,M:VN(VT#)(P ERR),MA,a的值按下述规则确的值按下述规则确定定:对于每个产生式对于每个产生式A1|2|m(1)若若a FIRST(i),则置则置MA,a=“Ai”;(2)FIRST(i),a FOLLOW(A),置置MA.a=“Ai”,(3)除上述两种情况外除上述两种情况外,其它元素均填其它

    2、元素均填“ERR”.分析表元素的含义分析表元素的含义:指明当前应用何产生式进行推导指明当前应用何产生式进行推导,或指明输入串出现错误或指明输入串出现错误考虑如下(例如文法考虑如下(例如文法1)|iA|对于对于G G中的每个文法符号中的每个文法符号X X,为求为求FIRST(X),FIRST(X),反复应用如下规则反复应用如下规则,直到集合不再增大直到集合不再增大:(1)(1)if (if ()FIRST(X)=X;)FIRST(X)=X;(2)if(2)if()if(X)if(Xa aP P a a V VT T)a)aFIRST(X);FIRST(X);if(X if(XP)P)FIRST(

    3、X);FIRST(X);(3)if(3)if()if(Y)if(Y V VN N)FIRST(Y)FIRST(Y)-)-FIRST(X);FIRST(X);for(1for(1 j j k-1)if(Y k-1)if(Yj j V VN NFIRST(YFIRST(Y)FIRST(Y)FIRST(Yj j)-)-FIRST(X);FIRST(X);if(for(1 if(for(1 j j k):k):FIRST(Y FIRST(Yj j)FIRST(X);FIRST(X);V V*,=X=X1 1X X2 2X Xn n,求求FIRST(FIRST()类似于求类似于求X XY Y1 1Y Y

    4、2 2Y Yk k,略略.,反复使用如下规则,直到不再增大:算法的证明:对于1.,由定义直接得到;对于2.,由于A是有用符号,则必存在含A的句型:S S*A A B B BaBa (a (a FIRST(FIRST(););对于3.,类似地,S S*A A BB ,显然,FIRST(FIRST()FOLLOW(A),FOLLOW(A),并且,FIRST(FIRST()FOLLOW(B).FOLLOW(B).证毕我们以我们以 (文法文法1 1)为例为例,计算相应的计算相应的集和集和集集.1.求所有符的集.利用规则规则(2),有 FIRST()=,FIRST()=FIRST()=;再利用规则规则(

    5、3),有FIRST()=FIRST()=,FIRST()=FIRST()=,FIRST()=FIRST()=FIRST()=FIRST()=2.求集(1)由规则规则(1),#FOLLOW(),再由产生式 FOLLOW(),从而,FOLLOW()=(2)由规则规则(3)及产生式可知FOLLOW()FOLLOW(),即有 FOLLOW(E)=(3)(3)由由规则规则(2)(2)及产生式及产生式有有 再由再由规则规则(3)(3)及及和和有有 FOLLOW(FOLLOW()FOLLOW(FOLLOW()即即FOLLOW(FOLLOW()=)=(4)(4)由由规则规则(3)(3)有有有有FOLLOW(F

    6、OLLOW()FOLLOW(FOLLOW(),即即FOLLOW(FOLLOW()=)=(5)(5)由由规则规则(2)(2)及及,有有 FIRST(FIRST()-)-FOLLOW(FOLLOW(),再由再由规则规则(3)(3)及及和和,有有FOLLOW(FOLLOW()FOLLOW(FOLLOW(),从而从而,FOLLOW(FOLLOW()=)=(6)(6)由由规则规则(2)(2)及及,有有 FIRST(FIRST()FOLLOW(FOLLOW(),FIRST(),FIRST()FOLLOW(FOLLOW(),),故有故有 FOLLOW(FOLLOW()=)=,FOLLOW(,FOLLOW()

    7、=)=.产生式产生式FIRSTFIRSTFOLLOWFOLLOW1.1.E ETETE(,(,i i ),#),#2.2.E EATEATE +,-+,-),#),#3.3.T TFTFT(,(,i i +,-,),#+,-,),#4.4.T TMFTMFT *,/*,/+,-,),#+,-,),#5.5.F F(E)(E)i i(i i +,-,*,/,),+,-,*,/,),#6.6.A A+-+-(,(,i i 7.7.M M*/*/(,(,i i 对已给的LL(1)文法,在得到各文法符号的集和集之后,就可容易地构造出(也称).在实际的表存储结构中,矩阵中每个元素并非真正存储的是产生式产

    8、生式,而是其右部的逆序右部的逆序(也可以是产生式序号序号),这样便于分析时使用,并节省了内存空间.在A VN所在行,a VT所在列,MA,a的填写方法如下:(1)if(AP and a FIRST()MA,a=A;(2)if(*(FIRST()and a FOLLOW(A)MA,a=A;(3)Otherwise,MA,a=ERR.i+-*/()#EETEETEEA ATEA ATETFTFTFTFTTMFTMFTFi(E)A+-M*/分析器对输入串的分析在控制程序的控制下进行,步骤如下:#Sa1 a2 an#2.设在分析的某时刻设在分析的某时刻,的分析格局为的分析格局为#X1 X2 Xm-1

    9、Xmai ai+1 an#c此时此时,根据当前栈顶符号根据当前栈顶符号Xm的不同情况的不同情况,分别作如下处理分别作如下处理:(1)Xm VT,且且Xm=ai,则匹配则匹配,将将Xm 顶出栈顶出栈,输入指针输入指针+;否则否则(Xm ai),出错出错;(2)Xm VN 查表查表MXm,ai,若若MXm,ai=“ERR”,则出错则出错;若若MXm,ai=“Xm Y1Y2Yk”,则将则将Xm 出栈出栈,Y1Y2Yk 按逆序压入栈按逆序压入栈,得到格局得到格局1.初始化初始化.首先将首先将#及开始符及开始符S压入栈压入栈,各各指针置初值指针置初值.此时此时,格局为格局为#X1 X2 Xm-1YkYk

    10、-1.Y1ai ai+1 an#(3)若若则表明输入串已完全得到匹配则表明输入串已完全得到匹配,结束结束.步步骤骤分分析析栈栈余余留留输输入入串串所所用用产产生生式式1.#Ei+i*i#E TE2.#E Ti+i*i#T F FT3.#E T Fi+i*i#F F i4.#ETii+i*i#5.#ET+i*i#T 6.#E+i*i#E A ATE7.#ET A+i*i#A +8.#ET+i*i#9.#ETi*i#T F FT10.#ETFi*i#F i i11.#ETii*i#12.#ET*i#T M MF FT13.#ETF M*i#M M*14.#ETF*i#15.#ETFi#F i i1

    11、6.#ETii#17.#ET#T 18.#E#E 19.#E#成成功功对于对于LL(1)LL(1)文法而言文法而言,我们总能构造出相应的预测分析表我们总能构造出相应的预测分析表,且表中决不会且表中决不会含有多重定义的元素含有多重定义的元素.然而对于然而对于非非LL(1)LL(1)文法文法,它们不满足它们不满足LL(1)LL(1)文法文法的条件的条件,尽管仍可为其建尽管仍可为其建立预测分析表立预测分析表,但表中必然会出现但表中必然会出现多重定义多重定义的的元素元素(why?(why?)例如例如,文法文法GS:SabB ASC|BAA|BAbA CB|.可见可见非非LL(1)LL(1)文法文法所造

    12、之表中所造之表中,必有冲突元素必有冲突元素.事实上事实上,是否有冲突元素是否有冲突元素也是判别一文法是否是也是判别一文法是否是LL(1)LL(1)文法文法的方法之一的方法之一.对于某些对于某些非非LL(1)LL(1)文法文法而言而言,通过通过,反复反复等方法等方法,有时是可以将其改造成有时是可以将其改造成的的.当文法中含有形如 A1|2|m 的产生式时,可将其改写为:AAA1|2|m 若诸候选式1,2,m 中的一部分仍含有左因子,则再进行提取工作,如此等等.这样,就可能可能得到一个LL(1)文法.例如,EE+T|TT(E)|a(E)|a经改造后可得文法ETE E+TE|TaT|(E)T(E)|

    13、这是一个LL(1)文法.应当指出,并非并非所有的文法都能改造为LL(1)文法.例如,文法GS:SAU|BRAaAU|bBaBR|bUcRd 文法中S的两个候选式AU及BR的FIRST集相交,G是非LL(1)的.为提取左因子,先将S产生式中的A,B用其右部替换,得:SaAUU|bU|aBRR|bR,经提取左因子,得 显然它仍不是LL(1)文法 能由LL(1)文法产生的语言称为LL(1)语言.它们已被证明具有许多重要特性,主要有:(1)任何任何LL(1)文法都是文法都是;(2)是非是非LL(1)的的;(3)存在一种算法存在一种算法,它能它能LL(1);(4)存在一种算法存在一种算法,它能它能LL(1);(5)是否是是否是LL(1)语言是语言是的的;(6)非非LL(1)语言是语言是存在存在的的.若在分析过程中,每步向前扫描k个符号来确定选用的产生式,此分析方法称为是LL(k)分析.此法极少用,故从略.


    注意事项

    本文(第四章语法分析和语法分析程序课件.ppt)为本站会员(晟晟文业)主动上传,其收益全归该用户,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!




    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库