1:  package compiler;
   2:   
   3:  import java.io.BufferedWriter;
   4:  import java.io.FileWriter;
   5:   
   6:  /**
   7:   * 组织输入输出接口
   8:   *
   9:   * @author jiangnan
  10:   */
  11:  public class PL0 {
  12:   
  13:      
  14:      public static final String pcodeFile = "d:\\pcode.txt";
  15:      public static final String tableFile = "d:\\table.txt";
  16:      public static final String runtimeFile = "d:\\runtime.txt";
  17:      public static final String errFile = "d:\\error.txt";
  18:      public static final String inputFile="d:\\input.txt";
  19:      public static BufferedWriter pcodeWriter;                 //输出虚拟机代码
  20:      public static BufferedWriter runtimeWriter;               //输出结果
  21:      public static BufferedWriter tableWriter;                //输出名字表
  22:      public static BufferedWriter errWriter;                   //输出错误信息
  23:   
  24:      public Praser praser;
  25:   
  26:      public PL0(String filepath) {
  27:          Scanner scan = new Scanner(filepath);
  28:          praser = new Praser(scan,//词法分析器
  29:                  new SymbolTable(),//名字表
  30:                  new Interpreter());
  31:      }
  32:   
  33:      public boolean compile() {
  34:          try {
  35:              pcodeWriter = new BufferedWriter(new FileWriter(pcodeFile));
  36:              tableWriter = new BufferedWriter(new FileWriter(tableFile));
  37:              runtimeWriter = new BufferedWriter(new FileWriter(runtimeFile));
  38:              errWriter = new BufferedWriter(new FileWriter(errFile));
  39:              praser.nextsym();                                    //前瞻分析需要预先读入一个符号
  40:              praser.parse();                                        //开始语法分析过程(连同语法检查,目标代码生成)
  41:              pcodeWriter.close();
  42:              tableWriter.close();
  43:              runtimeWriter.close();
  44:              errWriter.close();
  45:          } catch (Exception e) {
  46:              e.printStackTrace();
  47:              System.out.println("***compile error***");
  48:          } finally {
  49:   
  50:          }
  51:          //编译成功是指完成编译过程并且没有错误
  52:          return (praser.myErr.errCount == 0);
  53:      }
  54:  }

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

PL/0编译器(java version)–PL0.java的更多相关文章

  1. PL/0编译器(java version) - MainFrame.java

    1: /* 2: * To change this license header, choose License Headers in Project Properties. 3: * To chan ...

  2. PL/0编译器实践---后记

    花了几天时间,把清华版的<编译原理>一书中的PL/0编译器实践了一遍.颇有收获,记录如下: 理解代码的技巧,如何理解一份代码,比如这个程序,其逻辑相对于一般程序就比较复杂了,如何翻译,虚拟 ...

  3. PL/0编译器(java version)–Praser.java

    1: package compiler; 2:   3: import java.io.IOException; 4: import java.util.BitSet; 5:   6: /** 7: ...

  4. PL/0编译器(java version) – SymbolTable.java

    1: package compiler; 2: //竟然没有对符号表检查大小,会溢出的. 3:   4: import java.io.IOException; 5:   6: public clas ...

  5. PL/0编译器(java version) - Interpreter.java

    1: package compiler; 2:   3: import java.io.BufferedReader; 4: import java.io.BufferedWriter; 5: imp ...

  6. PL/0编译器(java version) - Err.java

    1: package compiler; 2:   3: import java.io.BufferedWriter; 4:   5: public class Err { 6:   7: publi ...

  7. PL/0编译器(java version) – Scanner.java

    1: package compiler; 2:   3: import java.io.BufferedReader; 4: import java.io.FileNotFoundException; ...

  8. PL/0编译器(java version) – Symbol.java

    1: package compiler; 2:   3: /** 4: * 采用全局变量sym来存储符号码,并用全局变量id和num来传递语义值 5: * 6: * @author jiangnan ...

  9. PL/0编译器(java version)–Pcode.java

    1: package compiler; 2:   3: /** 4: * //虚拟机指令 5: * 6: * @author jiangnan 7: * 8: */ 9: public class ...

随机推荐

  1. Maya FEM节点框架完成

    这几天把物理模拟框架移植到maya之中了. maya编程有一点比较关键,就是要让自己的程序逻辑适应maya的节点求值机制.在物理模拟中,往往需要进行时间积分,对此我的解决办法是,写一个节点rigSim ...

  2. Pureftp-安全的ftp服务器部署

    一.简介: Pure-FTPd 是一款免费(BSD)的,安全的,高质量和符合标准的FTP服务器. 侧重于运行效率和易用性. 它提供了简单的答案,他满足了大众化的需求,包括普通用户以及主机供应商们 Pu ...

  3. action中result没有值

    action中result没有值,访问action会输出action中的所有数据,输出类型为.action类型 .

  4. usb驱动开发1之学习准备

    此系列是http://blog.csdn.net/fudan_abc/博文的整理,同时加入了自己的理解.很敬佩fudan_abc的文章,仔细学习和分析受益很多.注:fundan_abc所分析linux ...

  5. CentOS 7 添加win7启动项——修改默认启动项

    CentOS 7使用grub2引导启动,在win7之后装完CentOS再启动会丢失win7启动项. 首先,添加win7启动项,步骤如下: 1.使用root登陆系统 2.用文本编辑器打开 /boot/g ...

  6. The ServiceClass object does not implement the required method in the following form: OMElement sayHello(OMElement e)

    今天遇到一件诡异的事情,打好的同一个aar包,丢到测试环境tomcat,使用soapui测试,正常反馈结果. 丢到本地tomcat,使用soapui测试,始终报以下错误. <soapenv:En ...

  7. Response.Redirect("x.aspx);跳转后session为null的解决方法

    通常我们做登陆的时候都是登录成功后为管理员保存一些信息,一般都会写类似下面的代码 if(登录成功) { Session["xx"] = "user"; Resp ...

  8. 用python简单处理图片(4):图像中的像素访问

    前面的一些例子中,我们都是利用Image.open()来打开一幅图像,然后直接对这个PIL对象进行操作.如果只是简单的操作还可以,但是如果操作稍微复杂一些,就比较吃力了.因此,通常我们加载完图片后,都 ...

  9. 结合C++和GDAL实现shapefile(shp)文件的读取

    工具:vs2012+GDAL 2.0 数据:中国省界SHP文件bou2_4p.shp   可点击下载 包含头文件: #include "ogrsf_frmts.h" 代码: int ...

  10. 动画:UIKitAnimation 简单动画学习 iOS (一) 渐变 、 移动 、翻页、来回翻转 ——转载

    转载请说明(谢谢) http://blog.csdn.net/a21064346/article/details/7851695 点击打开链接 以下 一个系列的 动画效果 在 UIView.h文件中可 ...