语法分析实践

词法分析:识别出token
语法分析:分析出程序的结构,并构建AST。
以下就是构建数学表达式的正则式表示,及其框图。注意优先级越高,分析的时候越在里层,加减法的优先级很低,分析的时候将表达式表示为term的相加减,term又转化为factor的相乘除。

  • 这里没有凸显出一些递归下降分析法的缺点是因为该系列博文作者很聪明,将表达式的文法表示得很好,避免了需要分情况再回溯,也没有出现左递归。因此文法描述之后要做一些方便后面文法分析的文法转化(详情可以见公开课编译原理(哈工大) - 20.4-2文法转换(Av17649289,P20))
  • 另外这里好像分析的句子,但其实看到后面你会看到整个程序都是可以分析乘一棵AST
语法分析实践_第1张图片
image.png

语法分析实践_第2张图片
image.png

语法分析实践_第3张图片
image.png

识别出以上的结构之后构建AST也是按照框图一层层地往下剖析,很简单。

image.png
  • A递归下降分析法、B递归预测分析法、C非递归预测分析法的区别
    A是递归,根据输入和候选项,因为有多个候选项,所以要猜,猜错要回溯
    B也是递归,但是文法进行进一步的处理后每个候选项的非终结符都是不一样的,所以不用猜,也不用回溯
    C


    语法分析实践_第4张图片

    语法分析实践_第5张图片
    image.png

    语法分析实践_第6张图片
    image.png
  • 变量合法性的检查(第11篇博文)
    注意语法分析的合法性检查表和运行时的全局变量记忆表是不一样的,前者是语法分析的任务,后者是解释器/CPU的任务,


    语法分析实践_第7张图片
    image.png
  • 变量合法性的检查实现方法
    遍历AST

你可能感兴趣的:(语法分析实践)