编译原理学习--编译器的介绍

编译器的介绍:

  编译器是一个程序,其核心功能是将源代码(C/C++,Java,C#,html等)翻译成目标代码(X86,ARM,IA64等),是一个重要的研究领域,也是其他许多研究领域的基础。

  一个简单的编译器结构

  

  编译器由多个阶段组成,每个阶段处理不同的问题,使用不同的理论、算法和数据结构。因此,编译器设计的重要问题就是合理划分组织各个阶段,实现接口清晰,易于维护和实现。

  下面是一个简单编译器的实例

   假设:

    源语言:加法表达式语言Sum:有两种语法形式:1.整形数字n  2.加法e1+e2    

    目标机器:栈式计算机Stack:1.一个操作数栈  2.两条指令:push n 和 add

  下面的任务是编译程序1+2+3到栈式计算机:

    阶段一:词法语法分析

    阶段二:语法树构建

        

    阶段三:代码生成:对语法树进行后续遍历,如果节点为n,则push n;如果节点为+,则add。

        则可生成目标机器指令:

                push 1

                push 2

                add

                push 3

                add

posted on 2015-01-22 10:37 Anthony007 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/anthony007/p/4240993.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值