中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Java > 综合文章
Mini Java编译器(五)
作者:未知 时间:2005-07-27 22:32 出处:CSDN 责编:chinaitpower
              摘要:Mini Java编译器(五)

六、系统的设计和实现

这个编译器是用Java写的,基于OO技术,所以整个系统是尽量用OOD设计的。OOD中最小的设计粒度是类,本系统的大致类结构如下

 

compiler

整个系统的根,UML图如下:

 

token

封装了所有的可识别单词,采用一符一码,单词对应的码定义在Token类中,该类是抽象类,仅作继承用。该包UML图如下:

common

公用包,封装了一些公用的对象和数据结构:

HierarchyTree类和HierarchyTreeNode类定义了继承树结构;

MemoryTable类和MemoryCell类定义了需要内存分配表;

Locatable接口和Locator类定义了定位器;

TokenTable定义了符号表;

 

继承树(HierarchyTreeNodeHierarchyTree

封装类之间的继承属性,数据机构上使用一棵N叉双向树,可以由父节点直接访问子节点,也可以由子节点直接访问父节点。

Java不支持多继承,Mini Java连接口继承(implements)也不支持,所以每个子节点只有一个父节点,而一个父节点可以有N个子节点。

虽然Mini Java规范中没有明确定义,但实现上仿照JavaObject类作为继承树的根节点。

具体实现时定义了一棵“伪树”,即存储结构为表,但以附加的level属性区分父节点与叶结点。

HierarchyTreeNode封装了节点,HierarchyTree则封装了和树有关的一些操作(插入、查找)。

 

符号表(TokenTableIdentifier

因为只有以下几种情况会出现“标识符已定义”“类已定义”或“方法已定义”语法错误:

同一个文件中声明了相同名称的类

同一个类中声明了相同名称的方法

同一个类中声明了相同名称的类变量

同一个方法中声明了相同名称的变量

方法中声明了与方法参数名称相同的变量

因此我在实现时修改了符号表的内容,去掉了“level”属性,增加了“belongsTo”属性,具体定义见第三部分的id_belongsTo表。

common包的UML图如下:

 

automation

封装了词法分析器和语法分析器,UML图如下:

 

exception

封装了所有可抛出的异常,UML图如下:

 

identifier

封装了所有标识符类别,实现Typable接口的类具有类型属性,UML图如下:

 

type

封装了所有类型,在Type抽象类中提供factory()方法,使用简单工厂(Simple Factory)模式生成类型对象,UML图如下:

 

ui

封装用户界面

 

ClassTreeModel

继承自javax.swing.tree.TreeModel,可将继承树的内容显示在图形界面中

 

TokenTableModel

继承自javax.swing.table.AbstractTableModel,可符号表的内容显示在图形界面中

 

MemoryTableModel

继承自javax.swing.table.AbstractTableModel,可内存分配表的内容显示在图形界面中

UML图如下:

 


关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有