编译原理随笔3(自上而下的语法分析-推导法)

1、理论基础

  • 上下文无关文法
  • 下推自动机(PDA)

2、语法分析方式

  • 自上而下分析(上-PDA栈顶,下-PDA栈底)
  • 自下而上分析
    • 优先分析
    • LR分析

3、PDA

 PDA定义:

  • 用法:

    • 当输入串读完了,且下推栈为空; or 输入串读完了,且控制器到达某些终态

    •  原理解析:

      • 下推栈里面放着S(非终结符如:S->Sb|c) ,输入带是具体的语句如a+b# ,将语句与下推栈中中S相比,如果相同,消掉,读头向后移一位,继续比较
      • 当下推栈为空,且输入带为空(读头到末尾)则匹配,结束。
      • 如果下推栈中栈顶元素已经回溯完所有可能状态,仍不能和输入带的读头位置相匹配,-》不匹配,报错,结束。

4、带回溯的自上而下分析缺点

  1. 若文法存在左递归,会出现死循环
  2. 若产生式存在多个候选式,选择哪一个进行推导完全是盲目的。
  3. 回溯,时间&空间消耗大
  4. 若识别语句是错的,但是无法指出具体的错误。

5、不带有回溯的自上而下分析算法

  1. 消除左递归(如:P->Pa)

 

猜你喜欢

转载自www.cnblogs.com/sqchao/p/11564206.html