【编译和链接三】编译器——语法分析、词法分析、语义分析、编译器后端
内容总结
- 词法分析是把程序分割成一个个 Token 的过程。
- 语法分析是把程序的结构识别出来,并形成一棵便于由计算机处理的抽象语法树。
- 语义分析是消除语义模糊,给这棵树生成一些属性信息.
- 编译器后端是把这棵树生成汇编代码。
一、词法分析(Lexical Analysis)
通常,编译器的第一项工作叫做词法分析。就像阅读文章一样,文章是由一个个的中文单词组成的。程序处理也一样,只不过这里不叫单词,而是叫做“词法记号”,英文叫 Token。
举个例子,看看下面这段代码,如果我们要读懂它,首先要怎么做呢?
-
我们会识别出 if、else、int 这样的关键字,main、printf、age 这样的标识符,+、-、= 这样的操作符号,还有花括号、圆括号、分号这样的符号,以及数字字面量、字符串字面量等。这些都是 Token。
-
那么,如何写一个程序来识别 Token 呢?可以看到,英文内容中通常用