コード例 #1
0
ファイル: Expressions.cs プロジェクト: Deliay/SuperBasic
 public virtual bool check()
 {
     if (!ReserveType.IsBoolean(First.Type) || !ReserveType.IsBoolean(Second.Type))
     {
         return(false);
     }
     return(true);
 }
コード例 #2
0
ファイル: Expressions.cs プロジェクト: Deliay/SuperBasic
 public Unary(Token tok, Expr exp) : base(tok, null)
 {
     Expr = exp;
     Type = ReserveType.Max(ReserveType.Int32, Expr.Type);
     if (Type == null)
     {
         throw new TypeCovertException(tok.Line, Type, Expr.Type);
     }
 }
コード例 #3
0
ファイル: Expressions.cs プロジェクト: Deliay/SuperBasic
 public Arith(Token tok, Expr x1, Expr x2) : base(tok, null)
 {
     First  = x1;
     Second = x2;
     Type   = ReserveType.Max(First.Type, Second.Type);
     if (Type == null)
     {
         throw new TypeCovertException(tok.Line, First.Type, Second.Type);
     }
 }
コード例 #4
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);
            }
        }
コード例 #5
0
        public If(Expr x, Stmt s) : base(x.lexline)
        {
            Expr = x;
            Stmt = s;

            if (!ReserveType.IsBoolean(Expr.Type))
            {
                throw new TypeMisMatchException(s.lexline, Expr.Type, "Boolean");
            }
        }
コード例 #6
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);
     }
 }
コード例 #7
0
        public void Init(Stmt s, Expr x)
        {
            Expr = x;
            Stmt = s;

            if (!ReserveType.IsBoolean(Expr.Type))
            {
                throw new TypeMisMatchException(this.lexline, Expr.Type, "Boolean");
            }
        }
コード例 #8
0
 public Else(Expr x, Stmt s1, Stmt s2) : base(x.lexline)
 {
     Expr  = x;
     Stmt1 = s1;
     Stmt2 = s2;
     if (!ReserveType.IsBoolean(Expr.Type))
     {
         throw new TypeMisMatchException(x.lexline, Expr.Type, "Boolean");
     }
 }
コード例 #9
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);
            }
        }
コード例 #10
0
ファイル: ModelFactory.cs プロジェクト: kofrasa/BudgetPal
        public static Document CreateTestDocument(string xmlString)
        {
            XElement root = XDocument.Parse(xmlString).Root;
            Document document = new Document();

            //Initialize Reserves
            foreach (var t in root.Elements("Type"))
            {
                ReserveType type = new ReserveType();
                type.Name = t.Attribute("name").Value;
                document.AddModelObject<ReserveType>(type);
                foreach (var c in t.Elements())
                {
                    Reserve reserve = new Reserve(1000);
                    reserve.Name = c.Attribute("name").Value;
                    reserve.Type = type;
                    document.AddModelObject<Reserve>(reserve);
                }
            }

            //Initialize Categories
            foreach (var e in root.Element("Expenses").Elements("Item"))
            {
                createCategory(document, null, e, CategoryType.Expense);
            }

            foreach (var i in root.Element("Incomes").Elements("Source"))
            {
                createCategory(document, null, i, CategoryType.Income);
            }

            createTransactions(document);

            Budget budget = new Budget(Period.CurrentWeek);
            budget.Name = "Week Budget";
            document.AddBudget(budget);

            budget = new Budget(Period.CurrentMonth);
            budget.Name = "Month Budget";
            document.AddBudget(budget);

            budget = new Budget(Period.CurrentQuarter);
            budget.Name = "Quarter Budget";
            document.AddBudget(budget);

            budget = new Budget(Period.CurrentYear);
            budget.Name = "Year Budget";
            document.AddBudget(budget);

            return document;
        }
コード例 #11
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);
 }
コード例 #12
0
ファイル: Expressions.cs プロジェクト: Deliay/SuperBasic
 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);
     }
 }
コード例 #13
0
ファイル: ModelFactory.cs プロジェクト: kofrasa/BudgetPal
 public static ReserveType CreateReserveType(string name)
 {
     ReserveType type = new ReserveType();
     type.Name = name;
     return type;
 }