大道至简之编译原理初探
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写一个计算器的例子
好了,说说编译吧。编译是一个语言翻译的过程,也就是把编程语言翻译成机器语言的过程。它要经过词法分析,语法分析,语义分析及代码生成这几个主要过程。其实很好理解,就像平时认识语言的过程一样,My name is Neo. 当你听到这句话时,你会首先看这句话的单词,你是不是认得,如果name是nome,你就不懂这个单词了,然后,你才会注意它的语法对不对,如果是My Neo name is,哪你就又要挠头了。最后,当你认清了单词和语法后,你又会明白这句话的意思是告诉你对方的名字叫Neo(语义分析)。假设你是一个中文翻译,你此时会告诉中国朋友,哪个老外的名字叫Neo(代码生成)。编译过过程也是一样,比如翻译C语言:Count = 3 编译时,先进行词法分析,按单词表认单词,然后根据语法表分析语法,得知这是赋值语句,而后得出它的语义是将3存入一个变量中。最后根据平台生成机器指令Mov R1, 3什么的,完成编译。
这样看起来,好像编译也不难啊 :P
下回,再说说用Lex, Yacc写一个计算器的例子
相关文章推荐
- [编译原理初探(一)]语法分析[1]
- 编译原理初探
- 编译原理与javacc初探
- 编译原理初探(续)
- 编译原理-表驱动法初探
- 编译原理初探
- 编译原理与javacc初探[转]
- iOS编译过程的原理和应用
- 软考(2)——看图心想编译原理
- 编译原理学习笔记(四)预测分析器(2)
- gcc/g++等编译器 编译原理: 预处理,编译,汇编,链接各步骤详解
- 深入剖析ASP.NET的编译原理之二:预编译(Precompilation)
- Compiler_编译原理复习小注
- Java编译原理
- javac 编译原理
- ProGuard进行混淆代码原理初探
- aspx文件编译成DLL文件的原理
- 0916 编译原理第二次上机实验
- 软考复习之路——编译原理
- 编译原理 - 词法分析器