2.1、词法分析 Lexical Analysis
词法分析往往是编译器的首项工作,它的核心工作就是分词,程序是由一个一个单词组成的,这里的单词专业术语称为词法记号,英文就是 Token。在代码中,我们能够识别 if, else, int 等关键字,main, printf, name 这样的标识符,+, -, = 这样的操作符号,还有花括号,圆括号,分号这样的符号,以及数字字面量,字符串字面量等等。这些都是 Token。
2.2、语法分析 Syntactic Analysis
词法分析结束后,代码(本质上就是字符串)就被分割成Tokens,那么接下来就是进行语法分析,语法分析是在词法分析的基础上识别程序的语法结构,这个结构是一个树状结构,是计算机容易理解和执行的结构。
进行语法分析的过程,也就是在构造这一棵树,一个程序就是一棵树,这棵树叫做 抽象语法树AST。树的每一个节点(子树)是一个语法单元,这个单元的构成规则就叫语法,每个节点下面还可以有下级节点。