• 一个小笔记(4):递归下降分析法


    编译器的语法分析运用的就是递归下降分析法

    这似乎是一个很强大的东东

     

    这次笔记的是将这一算法运用在对一般的公式计算求值中,不带未知数

    例如,根据算法分析可以得到一棵树,由下至上进行计算就能求出值:

     

    如何分析?

     

    开始:

    从左到右查找,如果有左括号,则跳到与之对应的右括号继续查找,直到查找到"+"或"-",前部分进入"项分析",后部分进入"表达式分析"

     

    表达式分析:

    从左到右查找,如果有左括号,则跳到与之对应的右括号继续查找,直到查找到"+"或"-",前部分进入"项分析",后部分进入"表达式分析"

    如果是"+",则生成"加法结点"

    如果是"-",则生成"减法结点"

    "+"和"-"结点的左子结点为前部分计算出的值,右子结点为后部分计算出的值

    如果是项,返回之前,进入"项分析"

     

    项分析:

    从左到右查找,如果有左括号,则跳到与之对应的右括号继续查找,直到查找到"*"或"/",前部分进入"因子分析",后部分进入"项分析"

    如果是"*",则生成"乘法结点"

    如果是"/",则生成"除法结点"

    "*"和"/"结点的左子结点为前部分计算出的值,右子结点为后部分计算出的值

    如果是因子,返回之前,进入"因子分析"

     

    因子分析:

    如果因子是数值,返回数值结点

    如果因子是负号,返回负号结点

    如果因子是符号,返回符号结点

    如果因子是"(表达式)",去掉括号,返回之前,进入"表达式分析"

  • 相关阅读:
    CentOS6配置清华大学yum源
    Nginx转发导致请求头丢失
    驾驶本到期换新,要想照片拍的好看,办理不耽误时间请按照以下步骤进行
    Postman生成测试报告
    删除Cookie工具Cookie Manager
    datax dataxweb 安装教程
    Qt 窗口标志(Qt WindowFlags)
    Qt QPalette 使用总结
    Qt License分析、开源版与商业版的区别
    notepad++替换 为回退符,如何操作?
  • 原文地址:https://www.cnblogs.com/recordprogram/p/5660430.html
Copyright © 2020-2023  润新知