/// <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); } }
public PrgState(MyIStack<T> stk, MyIDictionary symtbl, MyIList ot, MyIHeap heap, int id) { exeStack = stk; @out = ot; symTable = symtbl; mHeap = heap; mId = id; }
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)); }
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); }
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); }
public void SetHeap(MyIHeap heap) { mHeap = heap; }
//Evaluates the Exp public abstract int Eval(MyIDictionary tbl, MyIHeap heap);