语义分析

符合语法的程序不一定有有意义或是程序员期望的语义

狭义上的语义分析是编译器前端的最后一部分手段是对 AST 做一些分析和变换目的是确定程序的某些静态属性例如变量的声明与作用域变量与表达式的类型函数调用是否符合定义等等最后语义分析将把 AST 转换为某种中间表示IR

绑定与符号表

绑定

符号表

符号表的命令式Imperative Style实现

符号表的函数式Functional Style实现

类型检查

编程语言的类型系统类型系统的形式化

见编程语言原理PPL课程

参考机械工业出版社实用编程语言理论基础原书第二版2021第二部分第四部分

类型等价

类型检查