符号表和AST

符号表

符号表本质上就是在编译过程中的一种数据结构,用来标识和存储源代码的变量、函数等。在符号表中,源程序中的每个标识符都和它的声明或使用信息绑定在一起,比如其数据类型、作用域以及内存地址。

符号表一般使用用哈希表来实现,实现的作用域的问题一般用链表就可以解决

一般在语法分析阶段生成

AST抽象语法树

抽象语法树(abstract syntax tree 或者缩写为 AST),是源代码的抽象语法结构的树状表现形式,这里特指编程语言的源代码。树上的每个节点都表示源代码中的一种结构。

和符号表一样在编译过程都不一定是必须的结构

对于解释型的语言可以不生成中间代码来让虚拟机执行,可以直接根据AST直接解释

编译型语言一般通过AST来生成IR

一般在语法分析阶段生成