很多科班出身的搞开发的同事大都应该学过《编译原理》这门课程,或许也动手做过一些实践。这次向大家推荐一个由清华大学学生完成的C语言编译器实现 -- UCC。
这个项目目前位于sf.net网站,开放源代码,代码使用C语言编写,对于理解和实践编译原理有很大的指导意义,其完备的代码和中英文设计文档是亮点。
项目主页/代码下载:http://ucc.sourceforge.net
以下为其作者对项目的简介:
“上了一学期的编译原理,但是对于如何去实现一个真正的编译器仍然觉得困惑;
学习了一些好的优化算法或者自己有些好的想法,想在gcc上实践一下,但发现gcc
实在太大了,有点无从下手。
如果你曾经有过上面这些感受,也许可以尝试一下ucc。
ucc是一款遵从ANSI C89标准的编译器,大约15,000行C代码。目前支持x86平台上的
Linux和Windows系统,能正确编译自身并成功运行。它有下面一些特点:
1. 代码结构清晰直观,有比较详细的中文文档讲述它的实现
2. 使用三地址码作为中间码,构建了由基本块组成的控制流图,适合很多优化算法
3. 编译速度快。词法分析,语法分析和目标代码生成器都是手写的(其中的代码
生成器本想用burg这样的工具自动生成,但这样可能会给代码的理解带来难度,
最后手写了一个简单的代码生成器)
联系客服