编译原理(4) 符号表
2023-08-09 14:53:19 # NJU # 编译原理

符号表

image-20221205174013530

1. 符号表

Definition (符号表 (Symbol Table))

$\textcolor{red}{\textbf{符号表}}是用于保存\textcolor{blue}{\textbf{各种信息}}的\textcolor{purple}{\textbf{数据结构}}$

image-20221205174251234

2. 作用域

“领域特定语言” (DSL) 通常只有单作用域 (全局作用域)

image-20221205174334165

“通用程序设计语言” (GPL) 通常需要嵌套作用域

image-20221205174355820

2.1 嵌套作用域

image-20221205174444387

一个函数包括两个作用域

  • 参数
  • 函数体

image-20221205174728843

3. 动手写一个符号表

image-20221206153825977

目标

image-20221206153914843

3.1 类图

image-20221206154419395

  • 通过监听器在遍历语法树的过程中构建符号表

3.2 Scope

image-20221207141835857

3.3 Listener

image-20221207150436040

image-20221207150444492

3.4 测试

image-20221207150521873

3.5 参考

symtab @ antlr by parrt

symtab @ cs652 by parrt