Anthony007

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

编译器的介绍:

  编译器是一个程序,其核心功能是将源代码(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  阅读(557)  评论(0编辑  收藏  举报