编译器工作过程

词法分析阶段处理的错误

非法字符、单词拼写错误等。

语法分析阶段处理的错误

标点符号错误、表达式中缺少操作数、括号不匹配等有关语言结构上的错误。

静态语义分析阶段(即语义分析阶段)处理的错误

运算符与运算对象类型不合法等错误。本题选择语义错误。

目标代码生成(执行阶段)处理的错误

动态语义错误,包括陷入死循环、变量取零时做除数、引用数组元素下标越界等错误等。


🏗️ 编译器阶段 & 能发现的错误

1. 词法分析(Lexical Analysis)

👉 主要检查:非法字符、拼写错误

🏗️ 编译器阶段 & 能发现的错误
1. 词法分析(Lexical Analysis)

👉 主要检查:非法字符、拼写错误

2. 语法分析(Syntax Analysis)

👉 主要检查:语法结构错误

int x = ;      // ❌ 错误:缺少表达式
if (x > 0      // ❌ 错误:缺少右括号

3. 语义分析(Semantic Analysis)

👉 主要检查:类型不匹配、作用域错误

int x = "abc";   // ❌ 类型错误:不能把字符串赋值给 int
y = 10;          // ❌ 作用域错误:变量 y 未声明

4. 中间代码生成 / 优化

👉 检查不到“新错误”,但可能提前优化:

int x = 1 + 2;   // ✅ 编译期直接折叠成 int x = 3;

5. 字节码生成(.class)

👉 生成阶段基本不报错,除非 前面未解决的问题残留