标签:
编译器是一个程序,其核心功能是将源代码(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
标签:
原文地址:http://www.cnblogs.com/anthony007/p/4240993.html