From 9246ffa33701c11317fe04981cffb7cde7e85f82 Mon Sep 17 00:00:00 2001 From: bdemsky Date: Mon, 15 May 2006 23:49:49 +0000 Subject: [PATCH] Semantic checks for tasks...Made the TaskDescriptor inherit from the MethodDescriptor. --- Robust/src/IR/ClassDescriptor.java | 9 +--- Robust/src/IR/MethodDescriptor.java | 7 ++- Robust/src/IR/State.java | 4 ++ Robust/src/IR/TaskDescriptor.java | 65 ++++++++++++++------------- Robust/src/IR/Tree/FlagEffect.java | 4 ++ Robust/src/IR/Tree/FlagEffects.java | 21 +++++++++ Robust/src/IR/Tree/SemanticCheck.java | 52 ++++++++++++++++++++- Robust/src/IR/Tree/TaskExitNode.java | 4 ++ Robust/src/Makefile | 31 +++++++++---- 9 files changed, 146 insertions(+), 51 deletions(-) diff --git a/Robust/src/IR/ClassDescriptor.java b/Robust/src/IR/ClassDescriptor.java index 504d026d..d977805e 100644 --- a/Robust/src/IR/ClassDescriptor.java +++ b/Robust/src/IR/ClassDescriptor.java @@ -5,15 +5,14 @@ import IR.Tree.*; public class ClassDescriptor extends Descriptor { public ClassDescriptor(String classname) { super(classname); - this.classname=classname; superclass=null; + flags=new SymbolTable(); fields=new SymbolTable(); methods=new SymbolTable(); classid=UIDCount++; } private static int UIDCount=0; private final int classid; - String classname; String superclass; ClassDescriptor superdesc; @@ -57,7 +56,7 @@ public class ClassDescriptor extends Descriptor { public String printTree(State state) { int indent; - String st=modifiers.toString()+"class "+classname; + String st=modifiers.toString()+"class "+getSymbol(); if (superclass!=null) st+="extends "+superclass.toString(); st+=" {\n"; @@ -112,10 +111,6 @@ public class ClassDescriptor extends Descriptor { this.modifiers=modifiers; } - public void setName(String name) { - classname=name; - } - public void setSuper(String superclass) { this.superclass=superclass; } diff --git a/Robust/src/IR/MethodDescriptor.java b/Robust/src/IR/MethodDescriptor.java index 195d7076..a9a36658 100644 --- a/Robust/src/IR/MethodDescriptor.java +++ b/Robust/src/IR/MethodDescriptor.java @@ -21,7 +21,7 @@ public class MethodDescriptor extends Descriptor { public MethodDescriptor(Modifiers m, TypeDescriptor rt, String identifier) { - super(identifier); + this(identifier); this.modifier=m; this.returntype=rt; this.identifier=identifier; @@ -32,6 +32,9 @@ public class MethodDescriptor extends Descriptor { thisvd=null; } + protected MethodDescriptor(String s) { + super(s); + } public Modifiers getModifiers() { return modifier; @@ -53,7 +56,7 @@ public class MethodDescriptor extends Descriptor { } public MethodDescriptor(Modifiers m, String identifier) { - super(identifier); + this(identifier); this.modifier=m; this.returntype=null; this.identifier=identifier; diff --git a/Robust/src/IR/State.java b/Robust/src/IR/State.java index b2545392..06666e20 100644 --- a/Robust/src/IR/State.java +++ b/Robust/src/IR/State.java @@ -76,6 +76,10 @@ public class State { return (BlockNode)treemethodmap.get(md); } + public BlockNode getMethodBody(TaskDescriptor td) { + return (BlockNode)treemethodmap.get(td); + } + public SymbolTable getClassSymbolTable() { return classes; } diff --git a/Robust/src/IR/TaskDescriptor.java b/Robust/src/IR/TaskDescriptor.java index 47a92909..243e8fef 100644 --- a/Robust/src/IR/TaskDescriptor.java +++ b/Robust/src/IR/TaskDescriptor.java @@ -3,18 +3,15 @@ import IR.Tree.FlagExpressionNode; import IR.Tree.FlagEffects; import java.util.Vector; import java.util.Hashtable; +import IR.Tree.Modifiers; /** * Descriptor * */ -public class TaskDescriptor extends Descriptor { +public class TaskDescriptor extends MethodDescriptor { - protected String identifier; - protected Vector params; - protected SymbolTable paramtable; - protected VarDescriptor thisvd; protected Hashtable flagstable; protected Vector vfe; @@ -25,25 +22,45 @@ public class TaskDescriptor extends Descriptor { flagstable=new Hashtable(); params=new Vector(); paramtable=new SymbolTable(); - thisvd=null; } public void addFlagEffects(Vector vfe) { this.vfe=vfe; } - public String getSafeMethodDescriptor() { - String st=""; - for(int i=0;i