加载中...

语义分析(Semantic Analysis)是编译器前端继词法、语法分析之后的阶段,检查程序在「含义」层面是否合法,并收集后续翻译所需的信息。
包括作用域与名字解析(把标识符绑定到声明)、类型检查与类型推断、隐式类型转换插入、常量表达式求值、访问权限与可达性检查等。分析过程围绕符号表展开,结果通常标注在抽象语法树上。
语法分析只判断记号序列是否符合文法;「变量未声明」「函数实参类型不匹配」这类错误无法用上下文无关文法表达,必须由语义分析捕获。
静态类型语言(Java、Rust、TypeScript)在此阶段报告大部分编译错误;IDE 的跳转定义、自动补全、重命名重构,本质上也依赖同一套语义分析设施。

登录 后参与讨论
暂无讨论,来发表第一条评论吧