当代码被被编译时将会进行 词法分析、语法分析、语义分析 ,
后面我们将用这段代码来举例说明:
array[index] = (index+4)*(2+6);
词法分析
当源代码被输入扫描器,扫描器的任务就是简单的进行词法分析,词法分析将会把代码中的字符分割成一系列的记号(关键字、标识符、字面量、特殊字符等)。
像上面例子将会被分析为:
语法分析
接下来,语法分析器将会对扫描产生的记号进行语法分析,从而产生语法树。这些语法树是以表达式为节点的树。
示图:
语义分析
最后将由语义分析器来完成语义分析,即对表达式的语法层面分析。编译器所能做的分析是语义的静态分析。静态语义分析通常包括声明和类型的匹配,类型的转换等。这个阶段会报告错误的语法信息。
示图:
当上面各分析中有不过关的,便会编译错误
完!