- 词法&语法分析
- 语义分析
- 作用域扫描
- 引用消解
- 变量消解
- 变量未定义检查
- 变量重复定义检查
- 函数消解
- 函数未定义检查
- 函数重复定义检查
- 函数嵌套检查
- 变量消解
- 类型检查
- 变量/常量类型推导
- 变量/常量赋值类型检查
- 函数传参/返回类型检查
- 数组元素类型一致检查
- 语义合法性检查
- break/continue语句只能出现在循环里
- return语句只能出现在函数里
- 有返回类型的函数必须有return语句
- 检查常量是否被二次赋值
- 检查右值是否被赋值
- if和else必须匹配
- LLVM IR生成