Esempio n. 1
0
        public Set(Temp i, Expr x) : base(x.lexline)
        {
            t    = i;
            Expr = x;

            if (!ReserveType.ConvertableT1T2(i.Type, x.Type))
            {
                throw new TypeCovertException(lexline, Id.Type, Expr.Type);
            }
        }
Esempio n. 2
0
 public Set(Id i, Expr x) : base(x.lexline)
 {
     Id   = i;
     Expr = x;
     Id.setInit();
     if (!ReserveType.ConvertableT1T2(i.Type, x.Type))
     {
         throw new TypeCovertException(lexline, Id.Type, Expr.Type);
     }
 }
Esempio n. 3
0
        public SetElem(Access x, Expr y) : base(x.lexline)
        {
            Array = x.array;
            Index = x.index;
            Expr  = y;

            if (!ReserveType.ConvertableT1T2(y.Type, x.Type))
            {
                throw new TypeCovertException(this.lexline, y.Type, x.Type);
            }
        }
Esempio n. 4
0
 public override void gen(int begin, int after)
 {
     if (Parent.Params.ReturnType != ReserveType.Void)
     {
         if (!ReserveType.ConvertableT1T2(Parent.Params.ReturnType, ReturnVal.Type))
         {
             throw new TypeMisMatchException(this.lexline, ReturnVal.Type, Parent.Params.ReturnType.ToString());
         }
         Temp t = new Temp(Parent.Params.ReturnType);
         CurrentGenerator.Temp(t);
         new Set(t, ReturnVal).gen(begin, after);
         CurrentGenerator.Return(t);
     }
     else
     {
         CurrentGenerator.Return(null);
     }
     //emitLabel(Parent.ExitLabel);
 }
Esempio n. 5
0
 public override bool check()
 {
     if (First.Type is Symbols.Array || Second.Type is Symbols.Array)
     {
         return(false);
     }
     else if (First.Type == Second.Type)
     {
         return(true);
     }
     else if (ReserveType.IsNumberic(First.Type) && ReserveType.IsNumberic(Second.Type))
     {
         if (ReserveType.ConvertableT1T2(First.Type, Second.Type))
         {
             return(true);
         }
         return(false);
     }
     else
     {
         return(false);
     }
 }