5 语义分析——符号表

5 语义分析——符号表

image-20221213102821223

image-20221213102827748

image-20221213103048408

image-20221213103052640

对于通用语言有嵌套作用域,因此我们要写的其实是一个符号表树

例子:

一个函数带来了两个作用域:参数作用域和函数体作用域

image-20221213103330978

实现:

image-20221213103505911

  • define 是在当前作用域加入符号

  • resolve 是根据名称查找符号是不是被定义过,不仅要在当前作用域查找,还要到上层父作用域查找,即沿着树不停向上查找。直到根节点都没找到就说明未定义使用,从而报错

只考虑三种作用域:

image-20221213104634553

  • 全局作用域(全局变量、函数名、内置类型如int,void)

  • 局部作用域(用大括号包围的作用域)

  • 函数作用域(函数的形参

更复杂的作用域

image-20221213113627768

  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
  • Copyrights © 2022-2024 zzb
  • RZ
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信