编译简介

注意:本类(和编译有关)文章大多参考《编译原理》,作者:陈意云, 张昱
《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) 语法分析
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值