编译原理 [0x04][0x00] ==(5.1)语法分析__自下而上分析

自下而上分析的基本思想

采用移进-归约思想进行自下而上分析
 
基本思想
 
       用一个寄存符号的先进后出栈,把输入符号一个一个地移进到栈里,当栈顶形成某个产生式的候选式时,即把栈顶的这一部分替换成( 归约 为)该产生式的左部符号。
 

 PS:即从后往前识别,当目前的识别的一串为产生式的时候,将非终结符归约成左侧的非终结符

         核心问题:识别可归约串

 

短语 

定义:
G 是一个文法, S 是文法的开始符号,假定α βδ是文法 G 的一个句型,如果有

                S\overset{* }{\Rightarrow }αAδ  A\overset{+ }{\Rightarrow }β

   则β称是句型αβδ相对于非终结符A短语

如果A{\Rightarrow }β,则称β是句型αβδ相对于规则A\rightarrowβ直接短语

eg:

考虑文法G(E)

               E \rightarrow T | E + T

               T \rightarrow F | T * F

               F \rightarrow (E) | i

和句型i1*i2+i3

短语:i1,i2,i3, i1*i2 , i1*i2+i3

直接短语:i1,i2,i3(直接构成,不需要进行二次从非终结符转换为终结符

句柄:即最左直接短语  i1

 

自下而上分析法(Bottom-up)

基本思想
  • 从输入串开始,逐步归约,直到文法的开始符号
  • 归约:根据文法的产生式规则,把串中出现的产生式的右部替换成左部符号
  • 从树叶节点开始,构造语法树
算符优先分析法(不讲)
  • 按照算符的优先关系和结合性质进行语法分析
  • 适合分析表达式
LR分析法
  • 规范归约:句柄作为可归约串

 

LR分析法

  • L:从左到右扫描输入
  • R:自下而上进行归约

 

工作框架

 

 

2019-10-27

 
 
发布了43 篇原创文章 · 获赞 7 · 访问量 3347

猜你喜欢

转载自blog.csdn.net/Zeroooooo/article/details/101371086