首页 > 代码库 > Tiny语言编译器简介

Tiny语言编译器简介

1.简介:编译器是将一种语言翻译成另一种语言的程序。编译器将源程序的代码作为输出,从而产生用目标语言编写的等价程序。例如源代码为C/C++等高级语言,那么目标语言就是目标机器的机器代码,也就是可以直接运行的机器代码(各种二进制)。下面就是一个编译过程的简单例子:

x=2 (高级语言)
MOV x,2  (汇编语言)
C7 06 0000 0002  (机器代码)

    

 2.相关程序

     a.解释程序(interpreter):它会立即执行程序而不是编译完成后在执行,典型的解释程序有Java,Lisp等

     b.汇编程序(assembler):它将汇编语言翻译成机器代码

     c.连接程序(linker):编译器和汇编程序经常以来其他的头文件或者资源,连接程序将他们收集到一个可执行文件中

     d.装载程序(loader):处理所有的与基地址和起始地址相关的可重定位地址

     e.编辑器(editor):编写源代码

     f.调试程序(debugger):调试程序用的

     g.描述器(profiler):描述程序的运行时间等信息

     h.项目管理器(project manager):用于项目管理的程序

   

3.编译的一般步骤

    以字符流的形式扫描程序,进行词法分析,然后进行语法分析,语义分析,源代码优化,代码生成,目标代码优化等一般性步骤(之后会重点分析)


4.主要数据结构

记号(token),语法树,符号表,常数表,中间代码,临时文件

   

5.TINY语言简介

  a.语句序列用分号隔开

  b.所有变量都是整形变量,且不需要声明

  c.只有两个控制语句,if和repeat

  d.if判断语句必须以end结束,且有可选的else语句

  e.read和write完成输入输出

  f.花括号表示注释,但不允许嵌套注释

  g.有<和=两个比较运算符

  h.有+、-、*、/简单运算符

下面来看一个简单例子:

{ Sample program in TINY language - compute factorial } 

read x;{input an integer} 
if 0<x then {don‘t compute if x<=0} 
  fact := 1; 
  repeat 
    fact := fact*x;
    x := x-1 
  until x = 0;
   write fact{output factorial of x}
end

以后会对TINY语言编译器进行详细介绍的