编译课笔记02

词法分析、语法树

Posted by Leo on September 1, 2022

编译课程02

语法树

语法树的定义

句型结构的图示表示,是有向图

与推导式的对应大概有如下关系

  • 结点:符号

    • 根结点:识别符号
    • 中间结点:非终结符
    • 叶节点:终结符或非终结符(不一定推导完全,有可能只是某个句型对应的语法树)
  • 有向边:结点间的派生关系。

    其自顶向下的生成关系大致如下

    推导关系相当于语法树的生成过程。每一步的推导等同于语法树的一支,最终生成句型w的语法树

    注意,有些句子会有不同的推导过程(最左、最右、一般),因此语法树的生成过程也会不同。但是最后生成的树的形状可能相同,也可能不同。(有无二义性的区别,具体会在后文提到)

例子如下:

image.png

子树和短语

  • 子树:语法树中的一个结点及其所有后代结点的集合。此时那个结点就为子树的根。
  • 短语:子树的末端结点按从左向右的顺序为句型中的符号串,则该符号串为该句型相对于该子树根的短语。
  • 简单短语:所有叶子结点到子树根的路径为1的短语
  • 句柄:最左边出现的简单短语

image.png