5 public class Rule implements Quantifiers {
9 Vector quantifiers = new Vector();
10 boolean isstatic = false;
11 boolean isdelay = false;
12 private Expr guard = null;
13 Inclusion inclusion = null;
14 SymbolTable st = new SymbolTable();
15 DNFRule dnfguard=null,dnfnegguard=null;
23 label = new String("rule" + count++);
26 public String toString() {
28 for(int i=0;i<numQuantifiers();i++) {
29 name+=getQuantifier(i).toString()+",";
31 name+=guard.name()+"=>"+inclusion.toString();
35 public int numQuantifiers() {
36 return quantifiers.size();
39 public Quantifier getQuantifier(int i) {
40 return (Quantifier) quantifiers.get(i);
47 public String getLabel() {
51 public void setStatic(boolean val) {
55 public void setDelay(boolean val) {
59 public void addQuantifier(Quantifier q) {
60 quantifiers.addElement(q);
63 public ListIterator quantifiers() {
64 return quantifiers.listIterator();
67 public void setGuardExpr(Expr guard) {
69 dnfguard=guard.constructDNF();
70 OpExpr opexpr=new OpExpr(Opcode.NOT,guard,null);
71 dnfnegguard=opexpr.constructDNF();
74 public Expr getGuardExpr() {
78 public DNFRule getDNFGuardExpr() {
82 public DNFRule getDNFNegGuardExpr() {
86 public void setInclusion(Inclusion inclusion) {
87 this.inclusion = inclusion;
90 public Inclusion getInclusion() {
94 public SymbolTable getSymbolTable() {
98 public Set getQuantifierDescriptors() {
100 HashSet topdescriptors = new HashSet();
102 for (int i = 0; i < quantifiers.size(); i++) {
103 Quantifier q = (Quantifier) quantifiers.elementAt(i);
104 topdescriptors.addAll(q.getRequiredDescriptors());
107 return SetDescriptor.expand(topdescriptors);
111 public Set getRequiredDescriptors() {
113 HashSet topdescriptors = new HashSet();
115 for (int i = 0; i < quantifiers.size(); i++) {
116 Quantifier q = (Quantifier) quantifiers.elementAt(i);
117 topdescriptors.addAll(q.getRequiredDescriptors());
120 assert guard != null;
121 topdescriptors.addAll(guard.getRequiredDescriptors());
123 assert inclusion != null;
124 topdescriptors.addAll(inclusion.getRequiredDescriptors());
126 return SetDescriptor.expand(topdescriptors);