zoukankan      html  css  js  c++  java
  • 编译原理随笔4(自下而上的语法分析-递归法)

    0、基础知识

    • 推导
      • 自上而下的语法分析过程
      • 预测分析程序,递归下降分析法(最左推导)
      • 注:要求文法是LL(1)文法
    • 规约
      • 自下而上的语法分析过程
      • 简单优先分析法,算符优先分析法,LR分析法

    1、自下而上的语法分析方法

    • 过程思想:
      • 最左规约的过程
      • 由输入串开始,朝着文法的开始符号进行规约
      • 规约成非终结符
      • 注:输入串是指词法分析器送过来的二元式序列
    • 下推自动机PDA
    • 语法分析程序执行动作
      • 移入:读入一个单词,入栈,读头后移
      • 规约:检查栈顶 若干个符号能否规约,若能,则以产生式左部替代该符号,同时输出产生式编号----关键点:找句柄

      • 识别成功: 移入-规约结局为,栈内只剩下栈底符号和文法开始符号,读头指向结束符。
      • 识别失败
    • 分类
      • 优先分析器(Procedence Parser)
        • 简单优先分析器
        • 算符优先分析器
      • LR分析器 

    简单优先分析器

    1. 基本思想
      1. 相邻文法符号之间的优先关系。
    2. 核心步骤:找句柄    
    3. 简单优先文法    
      1. 优点:技术简单
      2. 缺点:适用范围小,分析表尺寸太大
    4. 算符优先分析法
      1. 原理:仿照四则远算的计算过程构造的
      2. 特点:简单直观、是不规范的规约,未必按照句柄进行规约,
      3. 关键:规定符号(终结符)的优先级以及综合性质 
      4. 文法:表达式文法
        1. 不考虑非终结符,仅考虑终结符之间的优先级
      5. 直观算符分析法
        1. 优点:简单,易于手工实现,适于分析各种算术表达式;;;可以很方便的将表达式翻译成目标指令(四元式)

        2. 因为用两个栈,容易将错误的语句识别为正确的,无法指出输入串出错位置。

      6. 通用算符分析法
  • 相关阅读:
    在老王指导下第一次完成购物车!!!
    自己封装的getElementByClassName函数,解决部分浏览器不兼容的问题
    第一次用js实现window10日历----动态的哟!
    第一次完成注册页面!分享一下,哈哈哈!
    array和string的方法
    js关于函数全局变量和局部变量的区分
    CSS3的3D效果样式transform属性中的rotate3d
    css中的 权重
    margin padding 和边框线的使用
    图片bug
  • 原文地址:https://www.cnblogs.com/sqchao/p/11573778.html
Copyright © 2011-2022 走看看