8.第四章自顶向下的语法分析(1).ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《8.第四章自顶向下的语法分析(1).ppt》由会员分享,可在线阅读,更多相关《8.第四章自顶向下的语法分析(1).ppt(46页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第4章章 自顶向下的语法分析自顶向下的语法分析(1)语法分析语法分析(Syntax Analysis)文法的改造问题文法的改造问题自顶向下自顶向下(Top Down)的分析的分析推导推导(Derivation)2022/12/2914.1 语法分析的任务语法分析的任务n语法分析语法分析(Syntax Analysis)n检查扫描器输出的单词序列是否符合该语检查扫描器输出的单词序列是否符合该语言的文法言的文法(句子句子),并分析组成此句子的语法,并分析组成此句子的语法成分成分n完成语法分析的程序叫做完成语法分析的程序叫做(语法语法)分析器分析器nParsernSyntax Analyzer20
2、22/12/2924.1 语法分析的任务语法分析的任务扫描器扫描器分析器分析器语义处理语义处理单词符号单词符号语法树语法树源程序源程序n输入:输入:TokenToken序列序列n输出输出uu语法成分及组成语法成分及组成uu表现形式:语法树表现形式:语法树uu错误报告错误报告n出错处理出错处理:定位、续编译定位、续编译2022/12/293语法分析方法语法分析方法 递归子程序法递归子程序法n自顶向下自顶向下 预测分析法预测分析法(LL(1)Top DownTop DownTop DownTop Down 算符优先分析法算符优先分析法n自底向上自底向上 LR(0)、SLR(1)LR(1)、LALR
3、Bottom UpBottom UpBottom UpBottom Up文法产生语言文法产生语言自动机识别语言自动机识别语言2022/12/2944.2 自顶向下分析面临的问题与自顶向下分析面临的问题与CFG的改造的改造n一、自顶向下的分析一、自顶向下的分析n从文法的开始符号出发,寻求所给的输入符从文法的开始符号出发,寻求所给的输入符号串的最左推导号串的最左推导n从树根从树根S开始,构造所给输入符号串的语法树开始,构造所给输入符号串的语法树n例:例:G为:为:SxAy A*|*,输入串:,输入串:x*yS S S SxAy x*yS S S Sx x x xA A A Ay y y y*202
4、2/12/295二、重要概念回顾二、重要概念回顾n推导推导:(依据依据:)n最左最左(Left-most)推导推导最左分析最左分析n左句型左句型n最左推导对应最右归约最左推导对应最右归约 EE+E a1+Ea1+E*Ea1+a2*Ea1+a2*a3 EE+EE+E*E E+E*a3E+a2*a3a1+a2*a3n最右最右(Right-most)推导推导最右分析最右分析n规范推导、规范句型规范推导、规范句型(右句型右句型)n最右推导对应最左归约最右推导对应最左归约(规范归约规范归约)n二义性二义性(先天二义性语言、二义性文法先天二义性语言、二义性文法)2022/12/296三、重要问题三、重要问
5、题虚假匹配虚假匹配x*y发现不匹配发现不匹配,需需要回退要回退(回溯回溯)S S S Sx x x xA A A Ay y y y*S S S Sx x x xA A A Ay y y y*S S S S 输入串输入串输入串输入串x*yx*yx*yx*ySxAySxAy A*|*A*|*S SxAyx*yx*y匹配成功匹配成功匹配成功匹配成功xAyxAy2022/12/297三、重要问题三、重要问题回溯回溯S x*yx*yx*yx*yS S S S xAyxAyx*yx*yx*yx*y发现不匹配发现不匹配发现不匹配发现不匹配,需要回退需要回退需要回退需要回退xAyx*yS S S Sx x x
6、 xA A A Ay y y y*S S S Sx x x xA A A Ay y y y*x*yx*y匹配成功匹配成功匹配成功匹配成功2022/12/298三、重要问题三、重要问题二义性二义性及其消除及其消除nEE+E|E-E|E*E|E/E|(E)|id对对同同一一句句子子存存在两棵语法分析树,哪个是对的?在两棵语法分析树,哪个是对的?E E E EE E E E*E E E EididididE E E EE E E E+ididididididididE E E EE E E E+E E E EE E E EE E E Eidididid*idididididididid2022/12
7、/299三、重要问题三、重要问题二义性及其消除二义性及其消除二义性文法二义性文法nEE+E|E-E|E*E|E/E|(E)|id非二义性文法非二义性文法nEE+T|E-T|TnTT*F|T/F|FnF(E)|id改造方法:引入语法变量,使文法含有更多的信息改造方法:引入语法变量,使文法含有更多的信息2022/12/2910三、重要问题三、重要问题二义性及其消除二义性及其消除再例:再例:If语句语句Sif E then SSif E then S else SSother设执行下列语句前设执行下列语句前b=0,If a0 then if a0 then b=1 else b=-1当当a=1时时,
8、b=1;当当a=-1时,执行后时,执行后b=-1If a0 then if a0 then b=1 else b=-1当当a=1时时,b=1;当当a=-1时,执行后时,执行后b=02022/12/2911一个句子有两棵不同的语法树一个句子有两棵不同的语法树SSE ES SIf a0 then if a0 then b=1 else b=-1SSE ES SIf a0 then if a0 then b=1 else b=-12022/12/2912三、重要问题三、重要问题二义性及其消除二义性及其消除n1.重写文法重写文法SU|MUif E then SUif E then M else UMi
9、f E then M else M|other2.设置一个规则设置一个规则实现实现“就近就近”、“最长最长”匹配原则匹配原则改造改造改造改造1 1 1 1改造改造改造改造2 2 2 2STS|CSSTS|CSCifCif E then E thenT CS elseCS elseC C C CConditionConditionConditionConditionT T T TElseElseElseElse每个每个elseelse与前面最近的没有配对的与前面最近的没有配对的thenthen配对,配对,即出现在即出现在thenthen和和elseelse之间的语句必须是配对的之间的语句必须是配
10、对的2022/12/2913按照按照“改造改造1”构造的语法树构造的语法树SUSMEEMMIf a0 then if a0 then b=1 else b=-1MifMif E then M else E then M else M|otherM|other2022/12/2914按照按照“改造改造2”构造的语法树构造的语法树SST(最长最长)CCEESSIf a0 then if a0 then b=1 else b=-1STS|CSSTS|CSCifCif E then E thenT CS elseCS else2022/12/2915按照按照“改造改造2”构造的语法树构造的语法树STS
11、(非最长非最长)CCEE SSIf a0 then if a0 then b=1 else b=-1STS|CSSTS|CSCifCif E then E thenT CS elseCS else2022/12/2916三、重要问题三、重要问题二义性及其消除二义性及其消除SS S T(最长最长)T(最长最长)SCC C Cif E then if E then S else if E then S else if E then SSTS|CSSTS|CSCifCif E then E thenT CS elseCS else2022/12/2917三、重要问题三、重要问题左递归及其消除左递归及
12、其消除n例:文法例:文法SSay|*与它的句子与它的句子*ayay*ayayayayS S*不对不对!S SSaySayaySayayaySayayayay一个无限一个无限循环!循环!2022/12/2918三、重要问题三、重要问题左递归及其消除左递归及其消除n例例 简单算术表达式的文法简单算术表达式的文法左递归左递归nEE+T|E-T|T|-EnTT*F|T/F|FnFFP|PnP(E)|id|const|FUN(L)nFUN abs|sin|cos|ln|log|exp|sqrtnLE|E,LnVNE,T,F,P,FUN,LnVTid,const,+,-,*,/,(,),abs,sin,c
13、os,log,ln,exp,sqrtnSE2022/12/2919三、重要问题三、重要问题左递归及其消除左递归及其消除n无法根据左递归文法进行自顶向下的分析无法根据左递归文法进行自顶向下的分析A a1a2aiann直接左递归直接左递归nA A 当前变量当前变量 输入指针输入指针(栈顶、最左变量栈顶、最左变量)n n间接左递归间接左递归间接左递归间接左递归uuA A+AAn n左递归的消除方法左递归的消除方法左递归的消除方法左递归的消除方法uu将将将将AA|AA|AA|AA|替换为替换为替换为替换为AAAAAAAA 和和和和 A A A A AAAA 2022/12/2920例:例:表达式文法直
14、接左递归的消除表达式文法直接左递归的消除E E+TTT T*FFF (E)idE T EE T EE E+T +T E E|T F TT F TT T*F T*F TF(E)F(E)idid2022/12/2921例:例:间接左递归的消除间接左递归的消除SAc|c ABb|b BSa|a将将B的定义代入的定义代入A产生式得:产生式得:ASab|ab|b将将A的定义代入的定义代入S产生式得产生式得:SSabc|abc|bc|c消除直接左递归:消除直接左递归:SabcS|bcS|cSSabcS|删除删除“多余的多余的”产生式:产生式:ASab|ab|b和和BSa|a 结果:结果:SabcS|bcS
15、|cSSabcS|2022/12/2922消除左递归的一般方法消除左递归的一般方法n对产生式组对产生式组nAA1|A2|An|1|2|m n用如下产生式组替换用如下产生式组替换nA1 B|2 B|m BnB1 B|2 B|n B|n其中:其中:B为新变量,相当于为新变量,相当于An消除左递归的算法见消除左递归的算法见P70的算法的算法n为非终结符编号,再采用代入法将间接左递归变为非终结符编号,再采用代入法将间接左递归变为直接左递归,消除直接左递归为直接左递归,消除直接左递归2022/12/2923三、重要问题三、重要问题提取左因子提取左因子n例:例:if语句的原始文法语句的原始文法nS if
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第四 向下 语法分析
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内