1 package polyglot.ast; 2 3 import polyglot.util.Enum; 4 5 9 public class Precedence extends Enum { 10 private int value; 11 12 public Precedence(String name, int value) { 13 super("prec_" + name); 14 this.value = value; 15 } 16 17 public int hashCode() { 18 return value; 19 } 20 21 22 public boolean equals(Object o) { 23 return o instanceof Precedence && equals((Precedence) o); 24 } 25 26 27 public boolean equals(Precedence p) { 28 return value == p.value; 29 } 30 31 32 public boolean isTighter(Precedence p) { 33 return value < p.value; 34 } 35 36 37 public static final Precedence LITERAL = new Precedence("literal", 0); 38 39 public static final Precedence UNARY = new Precedence("unary", 10); 40 41 public static final Precedence CAST = new Precedence("cast", 10); 42 43 public static final Precedence MUL = new Precedence("*", 20); 44 45 public static final Precedence STRING_ADD = new Precedence("string+", 30); 46 47 public static final Precedence ADD = new Precedence("+", 40); 48 49 public static final Precedence SHIFT = new Precedence("<<", 50); 50 51 public static final Precedence RELATIONAL = new Precedence("<", 60); 52 53 public static final Precedence INSTANCEOF = new Precedence("isa", 70); 54 55 public static final Precedence EQUAL = new Precedence("==", 80); 56 57 public static final Precedence BIT_AND = new Precedence("&", 90); 58 59 public static final Precedence BIT_XOR = new Precedence("^", 100); 60 61 public static final Precedence BIT_OR = new Precedence("|", 110); 62 63 public static final Precedence COND_AND = new Precedence("&&", 120); 64 65 public static final Precedence COND_OR = new Precedence("||", 130); 66 67 public static final Precedence CONDITIONAL = new Precedence("?:", 140); 68 69 public static final Precedence ASSIGN = new Precedence("=", 130); 70 71 public static final Precedence UNKNOWN = new Precedence("unknown", 999); 72 } 73 | Popular Tags |