在编译理论中,通常将编译过程抽象为5个主要阶段:词法分析(Lexical Analysis),语法分析(Parsing),语义分析(Semantic Analysis),优化(Optimization),代码生成(Code Generation)。这5个阶段类似Unix管道模型,上一个阶段的输出作为下一个阶段的输入。其中,词法分析是根据输入源代码文本流,分割出词,识别类别,产生词法元素(Token)流,如:
1 |
`int` `a = 10;`
|
1 |
`map<``int``, vector<``int``>>`
|
1 |
`map<``int``, vector<``int``> >`
|
1
2
3
4
5 |
`template``<``int` `N>`
`class` `Foo {`
`};`
`Foo<3>>1> foo;`
|
1 |
`Foo<(3>>1)> foo;`
|