博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PL/0编译器(java version)–PL0.java
阅读量:5064 次
发布时间:2019-06-12

本文共 2154 字,大约阅读时间需要 7 分钟。

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:  }

转载于:https://www.cnblogs.com/ZJUT-jiangnan/p/3560954.html

你可能感兴趣的文章
贪吃蛇游戏改进
查看>>
新作《ASP.NET MVC 5框架揭秘》正式出版
查看>>
“前.NET Core时代”如何实现跨平台代码重用 ——源文件重用
查看>>
【POJ1845】Sumdiv(数论/约数和定理/等比数列二分求和)
查看>>
在WPF中使用Caliburn.Micro搭建MEF插件化开发框架
查看>>
IdentityServer4-用EF配置Client(一)
查看>>
UWP: 掌握编译型绑定 x:Bind
查看>>
asp.net core系列 35 EF保存数据(2) -- EF系列结束
查看>>
WPF程序加入3D模型
查看>>
WPF中实现多选ComboBox控件
查看>>
读构建之法第四章第十七章有感
查看>>
C#中的IEnumerable<T>知识点
查看>>
android访问链接时候报java.net.MalformedURLException: Protocol not found
查看>>
dwz ie10一直提示数据加载中
查看>>
Windows Phone开发(4):框架和页 转:http://blog.csdn.net/tcjiaan/article/details/7263146
查看>>
Windows Phone Marketplace 发布软件全攻略
查看>>
Unity3D研究院之打开Activity与调用JAVA代码传递参数(十八)【转】
查看>>
语义web基础知识学习
查看>>
hexo个人博客添加宠物/鼠标点击效果/博客管理
查看>>
python asyncio 异步实现mongodb数据转xls文件
查看>>