示例#1
0
        public void TestCalc()
        {
            NakoNode topNode;

            // 1
            topNode = compiler.ParseOnlyValue("1+2*3");
            Assert.IsTrue(topNode.hasChildren());
            Assert.IsTrue(topNode.Children.checkNodeType(
                              new NakoNodeType[] {
                NakoNodeType.CALC
            }));
            // 2
            topNode = compiler.ParseOnlyValue("(1+2)*3");
            Assert.IsTrue(topNode.hasChildren());
            Assert.IsTrue(topNode.Children.checkNodeType(
                              new NakoNodeType[] {
                NakoNodeType.CALC
            }));
            // 3
            topNode = compiler.Parse("A=5");
            Assert.IsTrue(topNode.hasChildren());
            Assert.IsTrue(topNode.Children.checkNodeType(new NakoNodeType[] {
                NakoNodeType.LET
            }));
        }
示例#2
0
        public void TestInterpreterCalcReal()
        {
            NakoCompiler    ns     = new NakoCompiler();
            NakoInterpreter runner = new NakoInterpreter();

            // 1
            ns.source = "PRINT 2 * 1.5";
            ns.Tokenize();
            ns.Parse();
            runner.Run(ns.WriteIL());
            Assert.AreEqual("3", runner.PrintLog);

            // 2
            runner.Reset();
            ns.source = "PRINT (1 / 2) * 4";
            ns.Tokenize();
            ns.Parse();
            runner.Run(ns.WriteIL());
            Assert.AreEqual("2", runner.PrintLog);

            // 3
            runner.Reset();
            ns.source = "PRINT 4 % 3";
            ns.Tokenize();
            ns.Parse();
            runner.Run(ns.WriteIL());
            Assert.AreEqual("1", runner.PrintLog);

            // 4
            runner.Reset();
            ns.source = "PRINT 2 ^ 3";
            ns.Tokenize();
            ns.Parse();
            runner.Run(ns.WriteIL());
            Assert.AreEqual("8", runner.PrintLog);

            // 5 : べき乗の優先順位
            runner.Reset();
            ns.source = "PRINT 2 * 3 ^ 3";
            ns.Tokenize();
            ns.Parse();
            runner.Run(ns.WriteIL());
            Assert.AreEqual("54", runner.PrintLog);
        }
示例#3
0
        public void TestInterpreter2()
        {
            NakoCompiler    ns     = new NakoCompiler();
            NakoInterpreter runner = new NakoInterpreter();

            // 1
            ns.source = "A=5; PRINT A";
            ns.Tokenize();
            ns.Parse();
            runner.Run(ns.WriteIL());
            Assert.AreEqual("5", runner.PrintLog);

            // 2
            runner.Reset();
            ns.source = "A=5; B=8; C=A+B; PRINT C";
            ns.Tokenize();
            ns.Parse();
            runner.Run(ns.WriteIL());
            Assert.AreEqual("13", runner.PrintLog);
        }