大道至简之编译原理初探

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值