zoukankan      html  css  js  c++  java
  • 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语言编译器进行具体介绍的

    
    
       
    
  • 相关阅读:
    jQuery插件开发的模式和结构
    jQuery插件开发详细教程
    一个JavaScript Function Outliner插件 第三个版本 让你的JavaScript代码也支持折叠
    web开发过程中经常用到的一些公共方法及操作
    C#操作注册表
    EventBus使用详解(一)——初步使用EventBus
    android xml布局文件中tools:layout的作用
    调用android系统相机拍照并保存
    Android组件间通信库EventBus学习
    网络通信框架Volley使用详细说明
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/6785679.html
Copyright © 2011-2022 走看看