From 8929308dcdaa2c164974c4a0bedb9794724da335 Mon Sep 17 00:00:00 2001 From: bdemsky Date: Sat, 15 Apr 2006 01:09:40 +0000 Subject: [PATCH] Add support for tasks & flags --- Robust/src/IR/FlagDescriptor.java | 18 +++ Robust/src/IR/State.java | 4 + Robust/src/IR/TaskDescriptor.java | 79 +++++++++++ Robust/src/IR/Tree/FieldNode.java | 28 ++++ Robust/src/IR/Tree/FlagExpressionNode.java | 8 ++ Robust/src/IR/Tree/FlagOpNode.java | 43 ++++++ Robust/src/IR/Tree/Kind.java | 2 + Robust/src/Lex/Keyword.java | 1 + Robust/src/Lex/Lexer.java | 2 +- Robust/src/Parse/java14.cup | 144 ++++++++++++++++++++- 10 files changed, 323 insertions(+), 6 deletions(-) create mode 100644 Robust/src/IR/FlagDescriptor.java create mode 100644 Robust/src/IR/TaskDescriptor.java create mode 100644 Robust/src/IR/Tree/FieldNode.java create mode 100644 Robust/src/IR/Tree/FlagExpressionNode.java create mode 100644 Robust/src/IR/Tree/FlagOpNode.java diff --git a/Robust/src/IR/FlagDescriptor.java b/Robust/src/IR/FlagDescriptor.java new file mode 100644 index 00000000..f2f6bfd2 --- /dev/null +++ b/Robust/src/IR/FlagDescriptor.java @@ -0,0 +1,18 @@ +package IR; + +/** + * Descriptor + * + * represents a symbol in the language (var name, function name, etc). + */ + +public class FlagDescriptor extends Descriptor { + + public FlagDescriptor(String identifier) { + super(identifier); + } + + public String toString() { + return "Flag "+getSymbol(); + } +} diff --git a/Robust/src/IR/State.java b/Robust/src/IR/State.java index f70466cb..ee0d12bb 100644 --- a/Robust/src/IR/State.java +++ b/Robust/src/IR/State.java @@ -85,6 +85,10 @@ public class State { treemethodmap.put(md,bn); } + public void addTreeCode(TaskDescriptor td, BlockNode bn) { + treemethodmap.put(td,bn); + } + public void addFlatCode(MethodDescriptor md, FlatMethod bn) { flatmethodmap.put(md,bn); } diff --git a/Robust/src/IR/TaskDescriptor.java b/Robust/src/IR/TaskDescriptor.java new file mode 100644 index 00000000..488783ce --- /dev/null +++ b/Robust/src/IR/TaskDescriptor.java @@ -0,0 +1,79 @@ +package IR; +import IR.Tree.ExpressionNode; +import java.util.Vector; + +/** + * Descriptor + * + */ + +public class TaskDescriptor extends Descriptor { + + protected String identifier; + protected Vector params; + protected SymbolTable paramtable; + protected VarDescriptor thisvd; + + + public TaskDescriptor(String identifier) { + super(identifier); + this.identifier=identifier; + this.uniqueid=count++; + params=new Vector(); + paramtable=new SymbolTable(); + thisvd=null; + } + + public String getSafeMethodDescriptor() { + String st=""; + for(int i=0;i