语法分析和语法分析.ppt
《语法分析和语法分析.ppt》由会员分享,可在线阅读,更多相关《语法分析和语法分析.ppt(39页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、编编译译原原理理第第四四章章语法分析及语法分析程序语法分析及语法分析程序东华大学计算机学院本章内容本章内容v自顶向下分析和自底向上分析自顶向下分析和自底向上分析v围绕分析器的自动生成展开围绕分析器的自动生成展开东华大学计算机学院难难重重点点语法分析是编译程序的核心部分。语法分析是编译程序的核心部分。语法分析的作用是识别由词法分析给语法分析的作用是识别由词法分析给出的单词符号序列是否是给定文法的出的单词符号序列是否是给定文法的正确句子(程序)正确句子(程序)目前语法分析常用的方法有自顶向下目前语法分析常用的方法有自顶向下(自上而下)分析和自底向上(自下(自上而下)分析和自底向上(自下而上)分析两
2、大类。而上)分析两大类。东华大学计算机学院v自顶向下分析法:自顶向下分析法:从文法的开始符号出发,反复使从文法的开始符号出发,反复使用文法的产生式,寻找与输入符用文法的产生式,寻找与输入符号串匹配的推导。号串匹配的推导。v自底向上分析法:自底向上分析法:从输入符号串开始,逐步进行归约,从输入符号串开始,逐步进行归约,直至归约到文法的开始符号。直至归约到文法的开始符号。东华大学计算机学院自底向上的语法分析自底向上的语法分析例:文法例:文法G:ScAdAabAa识别输入串识别输入串w=cabd是否是该文法的是否是该文法的句子句子 S AA c a b d c a b d c a b dv关键:句柄
3、的确定关键:句柄的确定东华大学计算机学院自顶向下分析的语法分析自顶向下分析的语法分析例:例:文法文法SaCbCcd|c为输入串为输入串w=acb建立分析树建立分析树SSSaCbaaCCbbcdc试探试探的过程的过程v问题:会产生回溯问题:会产生回溯东华大学计算机学院自自顶向顶向下分析法的另一问题下分析法的另一问题若有文法若有文法G6S:(1)SSa(2)Sb推导推导baa#v问题:左问题:左递归递归SbSSaSSabSSaSaSSaSab东华大学计算机学院自自顶向下分析法需要解决的问题顶向下分析法需要解决的问题左递归左递归对文法进行改造对文法进行改造回溯回溯如何唯一地确定所采用的产生式?如何唯
4、一地确定所采用的产生式?LL(1)文法文法当拒绝当拒绝w时时,只能知道只能知道w不是句子不是句子,不知不知出何错及出在何处出何错及出在何处东华大学计算机学院4.1自顶向下的语法分析自顶向下的语法分析消除文法的左递归消除文法的左递归带回溯的递归子程序带回溯的递归子程序回溯的消除及回溯的消除及LL(1)文法文法东华大学计算机学院4.1.1消除文法的左递归消除文法的左递归例:例:AA|A的解是:的解是:*引入新的非终结符引入新的非终结符A,令其产生令其产生*,则有则有:A AA A|对于对于AA1|A2|An|1|m消除直接左递归消除直接左递归A1A|mA及及A1A|nA|东华大学计算机学院消除文法
5、左递归消除文法左递归的矩阵方法的矩阵方法设文法的非终结符为设文法的非终结符为X1,X2,Xn,Xi的产生的产生式分为以式分为以VN符和符和VT符打头的两类符打头的两类.将将|改改写为写为+,有有Xi=X1 1i+X2 2i+Xn ni+i其其中中,i是以是以VT符打头的产生式之和符打头的产生式之和,ki可以为可以为 这样这样,文法文法G可表示为可表示为X=XA+B。东华大学计算机学院消除文法左递归消除文法左递归的矩阵方法的矩阵方法该方程有解该方程有解:X=BA*为得到为得到A*,由于由于则有则有:X=BZ,Z=I+AZ其中其中X的产生式以的产生式以VT符打头符打头,而而Z的产生式的产生式以以
6、ijij V*打头打头,因此将不含左递归因此将不含左递归.注意注意,由此所得的文法含有无用符号和无用由此所得的文法含有无用符号和无用产生式产生式,需化简需化简东华大学计算机学院消除文法左递归消除文法左递归的的例子例子例例4.1SSa|Ab|aASc相应的矩阵为相应的矩阵为展开矩阵展开矩阵,得得SSaZ11aZ11 AAaZ12aZ12Z11Z11aZ11|cZ21|aZ11|cZ21|Z12Z12aZ12|cZ22aZ12|cZ22Z21Z21bZ11bZ11Z22Z22|bZ12|bZ12消除文法中无用产生式消除文法中无用产生式SaZ11Z11aZ11|cZ21|Z21bZ11东华大学计算机
7、学院消除回溯的条件消除回溯的条件候选式的候选式的终结首符集终结首符集FIRST()=a|*a,a VT,V*时时,FIRST()若若A-产生式的各产生式的各候选式候选式 i(i=1,2,m)都都推不出推不出,且,且FIRST(i)互不相交,则互不相交,则当扫描当前输入符号当扫描当前输入符号ai FIRST(j)时时,唯唯一可用于推导的产生式只能是一可用于推导的产生式只能是Aj。东华大学计算机学院消除回溯的条件消除回溯的条件存在某候选式存在某候选式 i i,i i*,即即FIRST(FIRST(i),i),有有两种选择两种选择匹配当前扫描符号匹配当前扫描符号a a:存在某存在某 j j,使使 j
8、 j推导出以推导出以a a打头的符打头的符号串号串选择选择 i i,让跟随在后的符号串推导让跟随在后的符号串推导出以出以a a打头的符号串。打头的符号串。东华大学计算机学院消除回溯的条件消除回溯的条件若两种选择都可行若两种选择都可行,则回溯不可避免。则回溯不可避免。因此因此,要求当要求当 i i*时时,跟在后的符号串不跟在后的符号串不能推导出其它能推导出其它 j j所能推导出的首终结符所能推导出的首终结符符号串符号串。定义:定义:A A后的所有终结符之集后的所有终结符之集FOLLOW(A)=a|S#FOLLOW(A)=a|S#*AaAa,a,a V VT T T T#,#,V V*当当A A为
9、一句型的尾符号时为一句型的尾符号时,#,#FOLLOW(A)FOLLOW(A)。东华大学计算机学院消除回溯的条件消除回溯的条件无回溯的无回溯的条件条件为为:若若 i i*,则则FOLLOW(A)FOLLOW(A)与其它与其它 j j互不相交互不相交FOLLOW(A)FOLLOW(A)FIRST(FIRST(j)=j)=.东华大学计算机学院First&Follow文法为:文法为:0 0 0 0)SM H 1SM H 1SM H 1SM H 1)Sa Sa Sa Sa 2 2 2 2)HL S o 3HL S o 3HL S o 3HL S o 3)HHHH 4 4 4 4)Kd M L 5Kd
10、M L 5Kd M L 5Kd M L 5)KKKK 6 6 6 6)Le H f Le H f Le H f Le H f 7 7 7 7)MK 8MK 8MK 8MK 8)Mb L MMb L MMb L MMb L M非终结符非终结符 FIRST 集集 FOLLOW 集集 S a,d,b,e#,o M d,b e,#,o H ,e#,f,o L e a,d,b,e,o,#K d,e,#,o东华大学计算机学院LL(1)文法文法消除回溯的条件:对消除回溯的条件:对G中每个中每个A VT,A-产生式产生式中任何两个候选式中任何两个候选式 i,j,均满足均满足:(1)FIRST(i)FIRST(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语法分析
限制150内