怎样去写一个编译器(用C语言写C语言编译器),需要哪些知识做铺垫,可以给一下相关网站和书籍的推荐吗?

如题所述

书籍请参考编译原理的龙书,以及flex,bison,llvm的manual。
如何写我可以给你一个大致的流程,
编译器由词法分析器->语法分析器->中间代码生成器->后端组成。
用C语言写编译器一般可以按照以下步骤:
1.使用flex生成词法分析器。(flex可以通过自己编写的描述文件来自动生成词法分析器)
2.使用bison生成语法分析器。(bison可以通过自己编写的描述文件来自动生成语法分析器)
3.通过语法分析器得到输入代码的语法树表示。
4.编写遍历函数遍历语法树生成中间代码。(这里推荐使用LLVM的中间代码表示)
5.利用LLVM工具集来编译执行所得到的中间代码。
相关网站:
龙书(当当上去买一本)

http://dinosaur.compilertools.net/flex/index.html(flex手册)
http://dinosaur.compilertools.net/bison/index.html(bison手册)
http://www.llvm.org(LLVM官网)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-04-23
编译原理,有这门课程
第2个回答  2014-04-23
先把c学好再说吧,有编译原理,最好再研究一下汇编