您的位置:首页 > 其它

大道至简之编译原理初探

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

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

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

下回,再说说用Lex, Yacc写一个计算器的例子
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: