编译技术在我们日常的工作中可以说无处不在,React JSX语法的解析,Typescript转化为Javascript,XML、JSON的解析,Spring字节码生成技术,PHP的模板引擎,还有最近很火的文言文编程项目(wenyan-lang)……这些都和编译技术息息相关,既然编译技术有这么大作用,那么它到底是什么?首先我们给出一个整体的介绍,如下图所示:
从图中可以知道,编译技术总共分为6个过程,其中词法分析、语法分析、语义分析这三个过程统称为前端,生成中间码、优化、生成目标代码这三个过程叫做后端。有了一个整体的印象之后,就可以一步一步来解释每一个过程的作用。
写过程序的人都知道,程序语言一般包含一些特殊关键字:if、else、for、while、class、import……运算符:>、<、=、+、-、*、/……以及特殊字符:{、}、(、)、,、:……所以第一步就是要把程序代码先转化成这样一个一个的词法记号(Token),这个过程叫做词法分析(Lexical Analysis)。