主题:【原创】语言编译器等请教 -- 中国农民
简单的说,C的编译器也可以是用C来写的啊。当然了,第一个C的编译器(最最最最。。。。最原始的一个当然是用汇编来搞了,原因呢?很简单,还没有东西可以编译C的程序啊)有了第一个C的编译器之后,就没有必要(注意,是没有必要,而不是不能)再继续完全使用汇编了。
这个过程就有点儿想工业革命似的--工业革命之前,人类要手工制作机器;工业革命之后,人类可以用机器自动制造机器。没有原始的C编译器之前,汇编语言和机器语言是程序员仅有的选择。当第一个C的编译器出来之后,程序员就可以写C程序了,就可以用C语言来写编译器了。再后来,更高级的语言出来了,就像小孩子搭积木一样,程序员可以用最基本的东西搭出非常复杂的东西;比如说用C来写一个C++的编译器。
国内中科大有一个教材《编译原理》就是介绍编译器的基本原理和理论基础的。我们学这门课的时候的课程项目就是如何实现一个类PL/1(一种很想Pascal)语言的编译器和执行器。
再多嘴说两句,编译其实就是一个翻译的过程,比如说:a = 0; a = a +1; 翻译成汇编大概就是这个样子:byte a;set a 0; add a 1;(伪的不能再伪的伪汇编)。编译器的职责就是读一个高级语言程序的文本,然后将它翻译成相应的汇编或机器代码。想通了这一点,剩下的就是需要一些编译原理里面如何做词法分析,语法分析之类的东西了。这些都是有标准算法的,看看相应的教材应该会有帮助:)
- 相关回复 上下关系8
🙂假如由C做C++的编译器 中国农民 字60 2007-11-24 08:11:40
🙂IMHO 1 whoknows 字1080 2007-11-26 14:19:35
🙂能否再详细点? 中国农民 字77 2007-11-26 16:53:59
😜不好意思最近比较忙,没有下河
🙂你的伪代码 罗博 字120 2007-12-07 07:24:21
🙂You can google the inventor, but whoknows 字602 2007-12-07 12:29:56
🙂Try this for inputing Chinese 1 东方射日 字109 2007-11-26 16:32:43
🙂还可以想想cross-compilation 美人他爹 字144 2007-11-19 14:02:42