home *** CD-ROM | disk | FTP | other *** search
/ Tutto per Internet / Internet.iso / soft95 / Java / espints / espinst.exe / classes / espresso / Literal.class (.txt) < prev    next >
Encoding:
Java Class File  |  1996-02-28  |  2.2 KB  |  90 lines

  1. package espresso;
  2.  
  3. class Literal extends AST {
  4.    Object val;
  5.  
  6.    void print(int var1) {
  7.       if (super.tag == 95) {
  8.          System.out.print(String.valueOf(String.valueOf("\"").concat(String.valueOf(Convert.escape(this.val.toString())))).concat(String.valueOf("\"")));
  9.       } else if (super.tag == 94) {
  10.          System.out.print(String.valueOf(String.valueOf("'").concat(String.valueOf(Convert.escape(this.val.toString())))).concat(String.valueOf("'")));
  11.       } else {
  12.          System.out.print(this.val);
  13.       }
  14.  
  15.    }
  16.  
  17.    Item gen() {
  18.       return new ImmediateItem(this.val);
  19.    }
  20.  
  21.    AST simplify() {
  22.       return this;
  23.    }
  24.  
  25.    Typ attr(Env var1, int var2, Typ var3) {
  26.       if (Attr.checkKind(super.pos, 12, var2)) {
  27.          switch (super.tag) {
  28.             case 90:
  29.                long var5 = ((Number)this.val).longValue();
  30.                if ((long)0 <= var5 && var5 <= (long)'\uffff' && var3.tag == 4) {
  31.                   super.typ = Typ.charTyp;
  32.                } else if ((long)-128 <= var5 && var5 <= (long)127 && var3.tag == 2) {
  33.                   super.typ = Typ.byteTyp;
  34.                } else {
  35.                   if ((long)Short.MIN_VALUE <= var5 && var5 <= (long)32767 && var3.tag == 5) {
  36.                      super.typ = Typ.shortTyp;
  37.                      break;
  38.                   }
  39.  
  40.                   super.typ = Typ.intTyp;
  41.                }
  42.                break;
  43.             case 91:
  44.                super.typ = Typ.longTyp;
  45.                break;
  46.             case 92:
  47.                super.typ = Typ.floatTyp;
  48.                break;
  49.             case 93:
  50.                super.typ = Typ.doubleTyp;
  51.                break;
  52.             case 94:
  53.                int var4 = ((Number)this.val).intValue();
  54.                if (var4 <= 127 && var3.tag == 2) {
  55.                   super.typ = Typ.byteTyp;
  56.                } else {
  57.                   if (var4 <= 32767 && var3.tag == 5) {
  58.                      super.typ = Typ.shortTyp;
  59.                      break;
  60.                   }
  61.  
  62.                   super.typ = Typ.charTyp;
  63.                }
  64.                break;
  65.             case 95:
  66.                super.typ = Predef.stringTyp;
  67.          }
  68.  
  69.          super.typ = Attr.checkTyp(super.pos, super.typ, var3);
  70.       } else {
  71.          super.typ = Typ.errTyp;
  72.       }
  73.  
  74.       return super.typ;
  75.    }
  76.  
  77.    boolean isConstant() {
  78.       return super.tag != 95;
  79.    }
  80.  
  81.    boolean isExpr() {
  82.       return true;
  83.    }
  84.  
  85.    Literal(int var1, int var2, Object var3) {
  86.       super(var1, var2);
  87.       this.val = var3;
  88.    }
  89. }
  90.