语义分析
符合语法的程序不一定有有意义或是程序员期望的语义。
狭义上的语义分析是编译器前端的最后一部分,手段是对 AST 做一些分析和变换,目的是确定程序的某些静态属性,例如变量的声明与作用域、变量与表达式的类型、函数调用是否符合定义等等。最后,语义分析将把 AST 转换为某种中间表示(IR)。
绑定与符号表¶
绑定¶
符号表¶
符号表的命令式(Imperative Style)实现¶
符号表的函数式(Functional Style)实现¶
类型检查¶
编程语言的类型系统、类型系统的形式化¶
见编程语言原理(PPL)课程。
参考:机械工业出版社《实用编程语言理论基础(原书第二版)》(2021)第二部分、第四部分。