理学自下而上语法分析.pptx
《理学自下而上语法分析.pptx》由会员分享,可在线阅读,更多相关《理学自下而上语法分析.pptx(51页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、例例S aABe A Abc|bB dabbcde 第1页/共51页例例S aABe A Abc|bB dabbcdeaAbcdeaAbcde 第2页/共51页例例S aABe A Abc|bB dabbcdeaAbcdeaAde 第3页/共51页例例S aABe A Abc|bB dabbcdeaAbcdeaAdeaABe 第4页/共51页例例S aABe A Abc|bB dabbcdeaAbcdeaAdeaABeS 第5页/共51页例例S aABe A Abc|bB dabbcdeaAbcdeaAdeaABeS S rm aABe rm aAde rm aAbcde rm abbcde第
2、6页/共51页自下而上的语法分析的一般过程自下而上的语法分析的一般过程实现思想实现思想从输入符号串开始,从左到右进行扫描,将输入符号逐个移入一个栈中,边移入边分析,一一旦旦栈栈顶顶符符号号串串形形成成某某个个产产生生式式的的右右部部时时,就用该产生式的左部非终结符代替,称为归归约约。重复这一过程,直到归约到栈中只剩下文法的开始符号时,则分析成功,称为“移进-归约”方法。从语语法法树树的的角角度度看:从语法树的树叶开始,逐步向上归约构造分析树,直到形成根结点。是推导推导的逆过程。第7页/共51页最左推导最左推导(Left-most Derive)每次推导都替换当前句型的最左边的非终结符。与最右归
3、约对应。最右推导最右推导(Right-most Derive)每次推导都替换当前句型的最右边的非终结符。与最左归约(规范归约规范归约)对应,得规范句型。例:例:设有文法GS:(1)S aABe (2)A b (3)A Abc (4)B d 使用最右推导:因为S aABe aAde aAbcde abbcde,所以abbcde是文法G的句子。第8页/共51页 步骤步骤动作动作(1)S aABe(2)A b(3)A Abc(4)B d最左归约过程是最右推导的逆过程,对输入串abbcde的移进归约过程如下:该分析过程反复执行该分析过程反复执行“移进移进”和和“归约归约”两个动作,直到栈中只有开始符号
4、为止。两个动作,直到栈中只有开始符号为止。ab aA ab A acbA aA ad A aBA aeBA aS1移进a2移进b3归约24移进b5移进c6归约37移进d8归约49移进e10归约1第9页/共51页“移进-归约”分析法中栈的使用移进-归约分析器使用了一个符号栈和一个输入缓冲区1、句型表示 a1 a2 a3#X1X2X3#“移进-归约”分析程序输出栈(存放句型前缀)输入串符号栈内容符号栈内容 +输入缓冲区内容输入缓冲区内容#当前句型当前句型#一般形式:符号栈的内容剩余输入串初态:#输入串#终态:#S#2、分析器结构 第10页/共51页3.过程描述:过程描述:do do 将输入串最左边
5、的符号移入栈内;while(在栈里符号串中找到一个可归约串在栈里符号串中找到一个可归约串);归约可归约串 while (文法开始符号出现在栈顶或者发现错误);分析成功的条件分析成功的条件:栈顶为文法符号,输入串为空。注意:注意:注意:注意:该过程并未涉及如何在栈里找可归约串。实际上,不同的找可归约串的方法,构成了不同的分析算法。第11页/共51页分析器的四种动作分析器的四种动作1)1)移进移进:读入下一个输入符号并把它下推进栈。2)2)归约归约:当栈顶符号串形成一个可归约的串(如:句句柄柄)时,直接进行归约,即用产生式左侧的非终结符替换栈顶的句柄。3)3)接受接受:当栈底只有“#”和开始符号,
6、而输入也已经到达右端标志符号“#”时,识别出符号串是句子,执行该动作,表示分析成功,是归约的一种特殊情况。4)4)出错出错:栈顶的内容与输入符号相悖,即当识别程序发现输入符号串不是句子时,进行出错处理。注意:决定移进和归约的依据是什么?注意:决定移进和归约的依据是什么?栈顶是否出现了可归约的符号串。栈顶是否出现了可归约的符号串。第12页/共51页“移进归约”语法分析小结:从输入串的开始依次读入单词(移进移进栈中)。一旦发现可归约串可归约串(某个产生式的右端)就立即归约归约。归约就是将栈顶的一串符号用文法产生式的左部代替,归约可能重复多次,然后继续移进。若最终能归约成文法的开始符号,则分析成功(
7、接接受受);否则出错出错。由于总是将句型的最左边的可归约串替换成非终结符,该方法通常得到是最右推导。关键是如何识别可归约的符号串如何识别可归约的符号串?第13页/共51页语法分析中问题的提出:语法分析中问题的提出:在构造语法树的过程中,何时归约?当可归约串出现在栈顶时就进行归约。如何知道在栈顶符号串中已经形成可归约串?如何进行归约?通过不同的自底向上的分析算法来解释,不同的算法对可归约串的定义是不同的,但分析过程都有一个共同的特点:边移进边归约边移进边归约。规范归约:使用句柄句柄来定义可归约串算符优先:使用最左素短语最左素短语来定义可归约串第14页/共51页自下而上语法分析主要有以下三种方法:
8、自下而上语法分析主要有以下三种方法:简单优先分析法简单优先分析法(规范归约规范归约)文法按文法按一定原则规定文法符号的优先关系一定原则规定文法符号的优先关系算符优先分析法算符优先分析法(不规范归约不规范归约)规定规定算符算符之间的优先关系之间的优先关系 LR分析法(规范归约)分析法(规范归约)LR(0)、LR(1)、SLR(1)和和LALR(1)第15页/共51页语法分析树的生成演示语法分析树的生成演示a b b c d ea b b c d eAABSAbAbAAbcAAbcBdBdSaABeSaABe(1)S aABe(2)A b(3)A Abc(4)B dS aABe aAde aAbc
9、de abbcde第16页/共51页规范归约相关概念复习有文法G,开始符号为S,如果有S=xy,则xy是文法G的句型句型,x,y是任意的符号串如果有S=xAy,且有A=,则是句型xy相对于非终结符A的短语短语如果有S=xAy,且有A-,则是句型xy相对于A-的直接短语直接短语位于一个一个句型最左边的直接短语称为句柄句柄.句型-短语-直接短语-句柄*+*注:每次归约的部分就是分析为句柄句柄的字符串(最右推导)。在规范归约中,关键问题就转化为如何识别句柄如何识别句柄?第17页/共51页回到上例用回到上例用句柄句柄对句子对句子abbcde进行归约有:进行归约有:用句柄对句子进行归约的过程与用移进-归
10、约过程是一致的,使用归约的产生式及其顺序是一致的。句型归约规则abbcde(1)S aABe(2)A b(3)A Abc(4)B d(2)Ab(3)A AbcaAbcdeaAde(4)B d(1)S aABeaABeS第18页/共51页练习:有文法如下练习:有文法如下(1)E-E+T|T(2)T-T*F|F(3)F-(E)|id1)写出输入串)写出输入串 id1+id2*id3 的规范归约过程;的规范归约过程;2)给出该文法)给出该文法“移进移进-归约归约”语法分析的过程。语法分析的过程。第19页/共51页E=E+T =E+T*F =E+T*id =E+F*id =E+id*id =T+id*
11、id =F+id*id =id+id*id第20页/共51页 动作动作 栈栈 输入缓冲区输入缓冲区1)1)准备准备#id#id1 1+id+id2 2*id*id3 3#2)2)移进移进#id#id1 1 +id +id2 2*id*id3 3#3)3)归约归约 Fid#F +idFid#F +id2 2*id*id3 3#4)4)归约归约 TF#T +idTF#T +id2 2*id*id3 3#5)5)归约归约 ET#E +idET#E +id2 2*id*id3 3#6)6)移进移进#E+id#E+id2 2*id*id3 3#7)7)移进移进#E+id#E+id2 2 *id *id3
12、 3#8)8)归约归约 Fid#E+F *idFid#E+F *id3 3#9)9)归约归约 TF#E+T *idTF#E+T *id3 3#10)10)移进移进#E+T*id#E+T*id3 3#11)11)移进移进#E+T*id#E+T*id3 3#12)12)归约归约 Fid#E+T*F#Fid#E+T*F#13)13)归约归约 TT*F#E+T#TT*F#E+T#14)14)归约归约 EE+T#E#EE+T#E#15)15)接受接受所得的结果是:用产生式序列表示语法分析树所得的结果是:用产生式序列表示语法分析树(1)E-E+T|T(2)T-T*F|F(3)F-(E)|ididid1 1
13、+id+id2 2 *id *id3 3FTEFTFTE第21页/共51页移进归约分析中的问题移进归约分析中的问题1)1)移进移进-归约冲突归约冲突 在分析到某一步时,既可以移进,又可以归约上例第10)步可以移进*,也可以按产生式EE+T进行归约。2)2)归约归约-归约冲突归约冲突存在两个可选的句柄,可对栈顶符号进行归约例如上述第13)步,可以用TF进行归约,又可以按TT*F进行归约。各种分析方法中处理冲突的技术不同各种分析方法中处理冲突的技术不同第22页/共51页第23页/共51页算符优先分析算符优先分析算符优先分析法的思想源于表达式的分析,即利用相邻终结符号之间的关系来寻找可归约串。将句型
14、中的终结符号当作“算符”,借助于算符之间的优先关系确定句柄。显然,在一个符号串中,任意两个相邻终结符号a和b之间,只可能存在以下四种优先关系:(1)a,b优先性相同,记作a b。(2)a优先性高于b,记作a b。(3)a优先性低于b,记作a b。(4)a与b不可能相邻,即此符号串不是句型(出错)。如果以上四种关系中的任意两种都不会同时成立,则可以根据终结符号之间的归约关系进行语法分析。第24页/共51页1.算符文法:一个上下无关文法G,如果没有P-,且没有P-.QR.(P,Q,R属于非终结符),则G是一个算符文法。算符文法。2.算符优先关系算符优先关系的定义(自底向上,可通过树形结构观察)a
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 理学 自下而上 语法分析
限制150内