注意:本类(和编译有关)文章大多参考《编译原理》,作者:陈意云,
张昱
《Compiler:Principles,Techniques,and Tools》,作者:Alfred V.Aho, Ravi Sethi, Jeffrey D.Ullman( 笔者推荐书籍 )
1. 编译器(compiler)
编译器是一种软件,它能够把一种语言(这种语言被成为source language)写的程序转化成为另外一种的语言(这种语言被成为target language)写的等同的程序,在转换的过程中,编译器会向用户报告源程序中出现的错误
上图就表示了一个编译器,error messages来源于source program
所谓的源程序,一般的存在形式是保存于文本文件中的字符串
这里还要谈一点就是,机器语言(mechine language)是一个很硬件相关(hardware dependence)的语言,只有使用mechine language编写的语言才可以在计算机上直接运行
编译的过程比较复杂,因此划分阶段是是否必要的,在通常的软件设计中,我们也应该有这样的思想,把整个程序分解成为模块(component),至于如何分解,不是本文需要讨论的问题,关于此类问题讨论,可以参考:
http://www.i170.com/user/killercat/Article_49005
http://www.i170.com/user/killercat/Article_44028
编译阶段介绍:
图解:
注意,并不是一定要进行完前一个阶段才进入下一个阶段,编译期间的活动(词法分析,语法分析等都属于活动)可能交替进行
1) 词法分析(又叫线性分析或者扫描)
词法分析器的工作流程:
这里将涉及到"词法记号","词法单元","模式"等概念,会在 http://www.i170.com/user/killercat/Article_60019 做详细讨论
2) 语法分析
《Compiler:Principles,Techniques,and Tools》,作者:Alfred V.Aho, Ravi Sethi, Jeffrey D.Ullman( 笔者推荐书籍 )
1. 编译器(compiler)
编译器是一种软件,它能够把一种语言(这种语言被成为source language)写的程序转化成为另外一种的语言(这种语言被成为target language)写的等同的程序,在转换的过程中,编译器会向用户报告源程序中出现的错误
上图就表示了一个编译器,error messages来源于source program
所谓的源程序,一般的存在形式是保存于文本文件中的字符串
这里还要谈一点就是,机器语言(mechine language)是一个很硬件相关(hardware dependence)的语言,只有使用mechine language编写的语言才可以在计算机上直接运行
编译的过程比较复杂,因此划分阶段是是否必要的,在通常的软件设计中,我们也应该有这样的思想,把整个程序分解成为模块(component),至于如何分解,不是本文需要讨论的问题,关于此类问题讨论,可以参考:
http://www.i170.com/user/killercat/Article_49005
http://www.i170.com/user/killercat/Article_44028
编译阶段介绍:
图解:
注意,并不是一定要进行完前一个阶段才进入下一个阶段,编译期间的活动(词法分析,语法分析等都属于活动)可能交替进行
1) 词法分析(又叫线性分析或者扫描)
词法分析器的工作流程:
这里将涉及到"词法记号","词法单元","模式"等概念,会在 http://www.i170.com/user/killercat/Article_60019 做详细讨论
2) 语法分析