コード例 #1
0
ファイル: TestNakoInterpreter.cs プロジェクト: weyk/nadesiko2
        public void TestInterpreter1()
        {
            NakoCompiler    ns     = new NakoCompiler();
            NakoInterpreter runner = new NakoInterpreter();
            object          o;

            // 1
            ns.source = "1+2*3";
            ns.Tokenize();
            ns.ParseOnlyValue();
            runner.Run(ns.WriteIL());
            o = runner.StackTop;
            Assert.IsNotNull(o);
            Assert.IsTrue(7 == NakoValueConveter.ToLong(o));

            // 2
            ns.source = "(1+2)*3";
            ns.Tokenize();
            ns.ParseOnlyValue();
            runner.Run(ns.WriteIL());
            o = runner.StackTop;
            Assert.IsNotNull(o);
            Assert.IsTrue(9 == NakoValueConveter.ToLong(o));

            // 3
            ns.source = "1+4/2";
            ns.Tokenize();
            ns.ParseOnlyValue();
            runner.Run(ns.WriteIL());
            o = runner.StackTop;
            Assert.IsNotNull(o);
            Assert.IsTrue(3 == NakoValueConveter.ToLong(o));
        }
コード例 #2
0
        private void _branch_false(NakoILCode code)
        {
            object v = calcStack.Pop();

            if (NakoValueConveter.ToLong(v) == 0)
            {
                autoIncPos = false;
                runpos     = Convert.ToInt32((long)code.value);
            }
        }
コード例 #3
0
 private object calc_method_xor(object a, object b)
 {
     if (a is long && b is long)
     {
         return((long)a ^ (long)b);
     }
     if (a is double || b is double)
     {
         return(NakoValueConveter.ToLong(a) ^ NakoValueConveter.ToLong(b));
     }
     throw new NakoInterpreterException("オブジェクトは論理演算できません");
 }