CSDN博客

img fohoo

大道至简之编译原理初探

发表于2004/6/22 18:51:00  1089人阅读

       这点文字是为懒人写的,懒人总是希望能像Neo一样,用个程序插头就能一下子学会中国功夫,呵呵,我也想。有乐趣才会想学习,所以希望写点能引起懒人乐趣的文字,先体会到了编译的乐趣,才会有深入学习的兴趣,对吧?我就是这样一个懒人。

       好了,说说编译吧。编译是一个语言翻译的过程,也就是把编程语言翻译成机器语言的过程。它要经过词法分析,语法分析,语义分析及代码生成这几个主要过程。其实很好理解,就像平时认识语言的过程一样,My name is Neo. 当你听到这句话时,你会首先看这句话的单词,你是不是认得,如果name是nome,你就不懂这个单词了,然后,你才会注意它的语法对不对,如果是My Neo name  is,哪你就又要挠头了。最后,当你认清了单词和语法后,你又会明白这句话的意思是告诉你对方的名字叫Neo(语义分析)。假设你是一个中文翻译,你此时会告诉中国朋友,哪个老外的名字叫Neo(代码生成)。编译过过程也是一样,比如翻译C语言:Count  = 3  编译时,先进行词法分析,按单词表认单词,然后根据语法表分析语法,得知这是赋值语句,而后得出它的语义是将3存入一个变量中。最后根据平台生成机器指令Mov R1, 3什么的,完成编译。

     这样看起来,好像编译也不难啊 :P

下回,再说说用Lex, Yacc写一个计算器的例子

0 0

相关博文

我的热门文章

img
取 消
img