From 3ead6094d60e86cfba653227419a5cd50df1a189 Mon Sep 17 00:00:00 2001 From: bdemsky Date: Tue, 14 Nov 2006 22:01:40 +0000 Subject: [PATCH] starting to work on supporting packages and import statements. --- Robust/src/IR/ClassDescriptor.java | 23 ++++++--- Robust/src/IR/Tree/BuildIR.java | 20 ++++++++ Robust/src/Main/Main.java | 2 +- Robust/src/Parse/java14.cup | 82 ++++++++++++++++++++---------- 4 files changed, 92 insertions(+), 35 deletions(-) diff --git a/Robust/src/IR/ClassDescriptor.java b/Robust/src/IR/ClassDescriptor.java index 3b51b536..b1e05b13 100644 --- a/Robust/src/IR/ClassDescriptor.java +++ b/Robust/src/IR/ClassDescriptor.java @@ -3,19 +3,12 @@ import java.util.*; import IR.Tree.*; public class ClassDescriptor extends Descriptor { - public ClassDescriptor(String classname) { - super(classname); - superclass=null; - flags=new SymbolTable(); - fields=new SymbolTable(); - methods=new SymbolTable(); - classid=UIDCount++; - } private static int UIDCount=0; private final int classid; String superclass; ClassDescriptor superdesc; boolean hasFlags=false; + String packagename; Modifiers modifiers; @@ -23,6 +16,20 @@ public class ClassDescriptor extends Descriptor { SymbolTable flags; SymbolTable methods; + public ClassDescriptor(String classname) { + this("", classname); + } + + public ClassDescriptor(String packagename, String classname) { + super(classname); + superclass=null; + flags=new SymbolTable(); + fields=new SymbolTable(); + methods=new SymbolTable(); + classid=UIDCount++; + this.packagename=packagename; + } + public int getId() { return classid; } diff --git a/Robust/src/IR/Tree/BuildIR.java b/Robust/src/IR/Tree/BuildIR.java index 636821f7..17eceb26 100644 --- a/Robust/src/IR/Tree/BuildIR.java +++ b/Robust/src/IR/Tree/BuildIR.java @@ -17,6 +17,26 @@ public class BuildIR { /** Parse the classes in this file */ public void parseFile(ParseNode pn) { + NameDescriptor packages; + Vector singleimports=new Vector(); + Vector multiimports=new Vector(); + + ParseNode ipn=pn.getChild("imports").getChild("import_decls_list"); + if (ipn!=null) { + ParseNodeVector pnv=ipn.getChildren(); + for(int i=0;i