Ric*_*ton 46
编译器通常由几个组件组成,其中一个组件是解析器.编译器中的一组通用组件是:
正如其他地方所提到的,小C是一个递归的正常编译器,它在解析时生成代码.基本上是语法分析,语义分析和代码生成.我记得,它也解析了解析器.
很久以前,我编写了一个C编译器(实际上有几个:用于微控制器的Introl-C系列),它在解析过程中使用了递归代码并进行了语法和语义检查,并生成了生成代码的程序的树形表示.
今天,我正在开发一个源代码 - >令牌 - > AST - > IR - >代码的编译器,就像我上面描述的那样.
解析器只是将文本读入内部的、更抽象的表示形式,通常是某种树或图。
编译器将这种内部表示形式转换为另一种格式。大多数情况下,这意味着将源代码转换为可执行程序。但目标不一定是机器代码。它也可以是另一种编程语言;编译器仍然是编译器。显然,编译器需要解析器来实际读取其输入。