Beispiel #1
0
 public Unary(DragonToken tok, Express x) : base(tok, null)
 {
     expr = x;
     type = Symbols.DragonType.Max(Symbols.DragonType.Int, expr.type);
     if (type == null)
     {
         PrintError("type error");
     }
 }
 public Logical(DragonToken tok, Express x1, Express x2) : base(tok, null)
 {
     expr1 = x1;
     expr2 = x2;
     type  = Check(expr1.type, expr2.type);
     if (type == null)
     {
         PrintError("type error");
     }
 }
Beispiel #3
0
 public Arith(DragonToken tok, Express x1, Express x2) : base(tok, null)
 {
     expr1 = x1;
     expr2 = x2;
     type  = Symbols.DragonType.Max(expr1.type, expr2.type);
     if (type == null)
     {
         PrintError("type error");
     }
 }
 public Id GetId(DragonToken t)
 {
     for (DragonEnvironment e = this; e != null; e = e.Prev)
     {
         Id found = (Id)(e.Table[t]);
         if (found != null)
         {
             return(found);
         }
     }
     return(null);
 }
 public void Put(DragonToken t, Id i)
 {
     Table.Add(t, i);
 }
 public Not(DragonToken tok, Express x2) : base(tok, x2, x2)
 {
 }
 public Express(DragonToken tok, Symbols.DragonType p)
 {
     Op   = tok;
     type = p;
 }
Beispiel #8
0
 public Operation(DragonToken tok, Symbols.DragonType p) : base(tok, p)
 {
 }
 public And(DragonToken tok, Express x1, Express x2) : base(tok, x1, x2)
 {
 }
 public Relation(DragonToken tok, Express x1, Express x2) : base(tok, x1, x2)
 {
 }
Beispiel #11
0
 public Constant(DragonToken tok, Symbols.DragonType p) : base(tok, p)
 {
 }