Esempio n. 1
0
        /// <summary>
        /// Evaluates the Expression
        /// </summary>
        public override int Eval(MyIDictionary tbl, MyIHeap heap)
        {
            int leftOp  = mExp1.Eval(tbl, heap);
            int rightOp = mExp2.Eval(tbl, heap);

            switch (mOp)
            {
            case "+":
                return(leftOp + rightOp);

            case "-":
                return(leftOp - rightOp);

            case "*":
                return(leftOp * rightOp);

            case "/":
                if (rightOp == 0)
                {
                    throw new MyDivisionByZeroException("Division by zero");
                }
                else
                {
                    return(leftOp / rightOp);
                }

            default:
                return(0);
            }
        }
Esempio n. 2
0
 public PrgState(MyIStack<T> stk, MyIDictionary symtbl, MyIList ot, MyIHeap heap, int id)
 {
     exeStack = stk;
     @out = ot;
     symTable = symtbl;
     mHeap = heap;
     mId = id;
 }
Esempio n. 3
0
        public override int Eval(MyIDictionary tbl, MyIHeap heap)
        {
            GetIntInput inp = new GetIntInput();

            inp.ShowDialog();


            return(Int32.Parse(inp.GetText()));
        }
        public override int Eval(MyIDictionary tbl, MyIHeap heap)
        {
            int heapAddr = tbl.Lookup(mVarName);

            try
            {
                heap.ContainsKey(heapAddr);
            }
            catch (ArgumentNullException npe)
            {
                throw new MyNullPointerException("Heap memory location unallocated");
            }

            return(heap.Get(heapAddr));
        }
Esempio n. 5
0
        public PrgState <T> Execute <T>(PrgState <T> state)
        {
            MyIHeap       heap     = state.GetHeap();
            MyIDictionary symTable = state.GetSymTable();

            if (symTable.IsDefined(mVarName))
            {
                heap.Update(symTable.Lookup(mVarName), mExp.Eval(symTable, heap));;
            }
            else
            {
                throw new ArgumentException("Heap address undefined");
            }

            return(null);
        }
Esempio n. 6
0
        public PrgState <T> Execute <T>(PrgState <T> state)
        {
            MyIHeap       heap     = state.GetHeap();
            MyIDictionary symTable = state.GetSymTable();

            if (symTable.IsDefined(mVarName))
            {
                symTable.Update(mVarName, heap.Size() + 1);
                heap.Put(heap.Size() + 1, mExp.Eval(symTable, heap));
            }
            else
            {
                symTable.Add(mVarName, heap.Size() + 1);
                heap.Put(heap.Size() + 1, mExp.Eval(symTable, heap));
            }

            return(null);
        }
 //Evaluates the exp
 public override int Eval(MyIDictionary tbl, MyIHeap heap)
 {
     return(tbl.Lookup(mId));
 }
        /**
         * Evaluates the expression
         * Return :
         *  1 - true
         *  0 - false
         * @throws DataTypesException
         */

        public override int Eval(MyIDictionary tbl, MyIHeap heap)
        {
            int rightOp = 0;
            int leftOp  = mExp1.Eval(tbl, heap);

            if (mExp2 != null)
            {
                rightOp = mExp2.Eval(tbl, heap);
            }
            switch (mOp)
            {
            case "==":
                if (leftOp == rightOp)
                {
                    return(1);
                }
                else
                {
                    return(0);
                }

            case "!=":
                if (leftOp != rightOp)
                {
                    return(1);
                }
                else
                {
                    return(0);
                }

            case "<":
                if (leftOp < rightOp)
                {
                    return(1);
                }
                else
                {
                    return(0);
                }

            case "<=":
                if (leftOp <= rightOp)
                {
                    return(1);
                }
                else
                {
                    return(0);
                }

            case ">":
                if (leftOp > rightOp)
                {
                    return(1);
                }
                else
                {
                    return(0);
                }

            case ">=":
                if (leftOp >= rightOp)
                {
                    return(1);
                }
                else
                {
                    return(0);
                }

            case "&&":
                if (leftOp != 0 && rightOp != 0)
                {
                    return(1);
                }
                else
                {
                    return(0);
                }

            case "||":
                if (leftOp != 0 || rightOp != 0)
                {
                    return(1);
                }
                else
                {
                    return(0);
                }

            case "!":
                if (leftOp == 0)
                {
                    return(0);
                }
                else
                {
                    return(1);
                }

            default:
                return(0);
            }
        }
 // Evaluates the exp
 public override int Eval(MyIDictionary tbl, MyIHeap heap)
 {
     return(mNumber);
 }
Esempio n. 10
0
 public void SetHeap(MyIHeap heap)
 {
     mHeap = heap;
 }
Esempio n. 11
0
 //Evaluates the Exp
 public abstract int Eval(MyIDictionary tbl, MyIHeap heap);