gcc hello.c
真实过程:
预处理(Prepressing)、编译(Complilation)、汇编(Assembly)、链接(Linking)
hello.c -> hello.i -> hello.s -> a.out
编译过程:
扫描、语法分析、语义分析、源代码优化、代码生成、目标代码优化
Source code --scanner--> Tokens
--parse--> Syntax Tree
--Semantic Analyzer-->Commented Syntax Tree
--Source Code Optimizer--> Intermediate Representation
--Code Generation--> Target Code
--Code Optimizer--> Final Target Code
词法分析
源代码程序被输入到扫描器(Scanner),运用一种类似有限状态机(Finity State Machine)的算法将源代码字符序列分隔为一系列的记号(Token)
语法分析
语法分析器(Grammer Parser)将对由扫描器产生的记号进行语法分析,从而生成语法树(Syntax Tree)。