home *** CD-ROM | disk | FTP | other *** search
- package espresso;
-
- class Literal extends AST {
- Object val;
-
- void print(int var1) {
- if (super.tag == 95) {
- System.out.print(String.valueOf(String.valueOf("\"").concat(String.valueOf(Convert.escape(this.val.toString())))).concat(String.valueOf("\"")));
- } else if (super.tag == 94) {
- System.out.print(String.valueOf(String.valueOf("'").concat(String.valueOf(Convert.escape(this.val.toString())))).concat(String.valueOf("'")));
- } else {
- System.out.print(this.val);
- }
-
- }
-
- Item gen() {
- return new ImmediateItem(this.val);
- }
-
- AST simplify() {
- return this;
- }
-
- Typ attr(Env var1, int var2, Typ var3) {
- if (Attr.checkKind(super.pos, 12, var2)) {
- switch (super.tag) {
- case 90:
- long var5 = ((Number)this.val).longValue();
- if ((long)0 <= var5 && var5 <= (long)'\uffff' && var3.tag == 4) {
- super.typ = Typ.charTyp;
- } else if ((long)-128 <= var5 && var5 <= (long)127 && var3.tag == 2) {
- super.typ = Typ.byteTyp;
- } else {
- if ((long)Short.MIN_VALUE <= var5 && var5 <= (long)32767 && var3.tag == 5) {
- super.typ = Typ.shortTyp;
- break;
- }
-
- super.typ = Typ.intTyp;
- }
- break;
- case 91:
- super.typ = Typ.longTyp;
- break;
- case 92:
- super.typ = Typ.floatTyp;
- break;
- case 93:
- super.typ = Typ.doubleTyp;
- break;
- case 94:
- int var4 = ((Number)this.val).intValue();
- if (var4 <= 127 && var3.tag == 2) {
- super.typ = Typ.byteTyp;
- } else {
- if (var4 <= 32767 && var3.tag == 5) {
- super.typ = Typ.shortTyp;
- break;
- }
-
- super.typ = Typ.charTyp;
- }
- break;
- case 95:
- super.typ = Predef.stringTyp;
- }
-
- super.typ = Attr.checkTyp(super.pos, super.typ, var3);
- } else {
- super.typ = Typ.errTyp;
- }
-
- return super.typ;
- }
-
- boolean isConstant() {
- return super.tag != 95;
- }
-
- boolean isExpr() {
- return true;
- }
-
- Literal(int var1, int var2, Object var3) {
- super(var1, var2);
- this.val = var3;
- }
- }
-