示例#1
0
        public ProgState execute(ProgState prg)
        {
            IfStmt istmt = new IfStmt(new ArithExpr(var, "-", exp2), new IfStmt(new ArithExpr(var, "-", exp1), stm3, stm1), stm2);

            prg.GetExe.Push(istmt);
            return(null);
        }
示例#2
0
        public override ProgState execute(ProgState prg)
        {
            IStmt iss = new IfStmt(exp, thenStmt, new SkipStmt());

            prg.GetExe.Push(iss);
            return(null);
        }
示例#3
0
        public ProgState execute(ProgState prg)
        {
            int val = exp.Eval(prg.GetSym, prg.GetHeap);

            if (val != 0)
            {
                prg.GetExe.Push(this);
                prg.GetExe.Push(statement);
            }
            return(null);
        }
示例#4
0
        public ProgState execute(ProgState prg)
        {
            int val = expr.Eval(prg.GetSym, prg.GetHeap);

            if (val != 0)
            {
                prg.GetExe.Push(stmt1);
            }
            else
            {
                prg.GetExe.Push(stmt2);
            }
            return(null);
        }
示例#5
0
        public ProgState execute(ProgState prg)
        {
            int val = expr.eval(prg.GetSym, prg.GetHeap);

            try
            {
                int v = prg.GetSym.Get(id);
                prg.GetSym.Modify(id, val);
            }
            catch (VariableNotFoundException v)
            {
                prg.GetSym.Add(id, val);
            }
        }
示例#6
0
        public ProgState execute(ProgState prg)
        {
            int key;

            try
            {
                key = prg.GetSym.Get(var);
            }
            catch (VariableNotFoundException v)
            {
                throw v;
            }
            try
            {
                prg.GetHeap.Add(key, exp.Eval(prg.GetSym, prg.GetHeap));
            }
            catch (ArgumentException a)
            {
                prg.GetHeap.Modify(key, exp.Eval(prg.GetSym, prg.GetHeap));
            }
            return(null);
        }
示例#7
0
        public ProgState execute(ProgState prg)
        {
            int key;

            if (prg.GetHeap == null)
            {
                key = 1;
            }
            else
            {
                key = prg.GetHeap.Size() + 1;
            }
            prg.GetHeap.Add(key, exp.Eval(prg.GetSym, prg.GetHeap));
            try
            {
                prg.GetSym.Add(var, key);
            }
            catch (ArgumentException a)
            {
                prg.GetSym.Modify(var, key);
            }
            return(null);
        }
示例#8
0
        public ProgState execute(ProgState prg)
        {
            IStack <IStmt> stk = new ArrayStack <IStmt>();

            stk.Push(stm);
            IDict <string, int> dict = new ArrayDict <string, int>();
            int           i          = 0;
            List <string> keys       = new List <string>(prg.GetSym.GetKeys());

            int j = prg.GetSym.Size();

            while (i < j)
            {
                dict.Add(keys.ElementAt(i), prg.GetSym.Get(keys.ElementAt(i)));
                i++;
            }

            com.IList <int>  outer = prg.GetOut;
            IDict <int, int> heap  = prg.GetHeap;
            ProgState        prgg  = new ProgState(outer, dict, stk, heap);

            return(prgg);
        }
示例#9
0
 public ProgState execute(ProgState prg)
 {
     return(null);
 }
示例#10
0
 public ProgState execute(ProgState prg)
 {
     prg.GetExe.Push(second);
     prg.GetExe.Push(first);
     return(null);
 }
示例#11
0
 public ProgState execute(ProgState prg)
 {
     prg.GetOut.Add(expr.Eval(prg.GetSym, prg.GetHeap));
     return(null);
 }