Example #1
0
        public void ArithmeticTest()
        {
            AgfInterpreter interp = getFreshInterp();

            Assert.AreEqual(interp.eval("2*2"), "4");
            Assert.AreEqual(interp.eval("2+3"), "5");
            Assert.AreEqual(interp.eval("2-4"), "-2");
            Assert.AreEqual(interp.eval("5/2"), "2");
            Assert.AreEqual(interp.eval("4*5-19+3/2"), "2");
        }
Example #2
0
        public void AdvancedTest()
        {
            AgfInterpreter interp = getFreshInterp();

            interp.exec("a::new=4+3;a::new *= 5; pls::work /= 5; pls::work += 4*2;");
            Assert.AreEqual(interp.eval("a::new"), "35");
            Assert.AreEqual(interp.eval("pls::work"), "8");
            Assert.AreEqual(interp.eval("30-(a::typo*23-pls::work*2)"), "46");
            interp.exec("a::typo -= pls::work*2 + 4; new::guy = a::typo*-1");
            Assert.AreEqual(interp.eval("a::typo - new::guy"), "-40");
            //more could be added
        }
Example #3
0
        public void NestingTest()
        {
            AgfInterpreter interp = getFreshInterp();

            Assert.AreEqual(interp.eval("5==5 && 2>1"), "1");
            Assert.AreEqual(interp.eval("5==5 && 1<1"), "0");
            Assert.AreEqual(interp.eval("5==5 && 2>1 && 50 == 50"), "1");
            Assert.AreEqual(interp.eval("5==4 || 5>3 && 50 == 50"), "1");
            Assert.AreEqual(interp.eval("5==4 || 5<3 && 50 == 50"), "0");
            Assert.AreEqual(interp.eval("5==4 && 2>1 || 51 <= 50"), "0");
            Assert.AreEqual(interp.eval("5==5 && 2>1 || 51 <= 50"), "1");
        }
Example #4
0
        public void ConditionalTest()
        {
            AgfInterpreter interp = getFreshInterp();

            Assert.AreEqual(interp.eval("5==5"), "1");
            Assert.AreEqual(interp.eval("5==55"), "0");
            Assert.AreEqual(interp.eval("5!=5"), "0");
            Assert.AreEqual(interp.eval("5!=3"), "1");
            Assert.AreEqual(interp.eval("5<9"), "1");
            Assert.AreEqual(interp.eval("9<9"), "0");
            Assert.AreEqual(interp.eval("9>9"), "0");
            Assert.AreEqual(interp.eval("10>9"), "1");
            Assert.AreEqual(interp.eval("5<=9"), "1");
            Assert.AreEqual(interp.eval("9<=9"), "1");
            Assert.AreEqual(interp.eval("9>=9"), "1");
            Assert.AreEqual(interp.eval("8>=9"), "0");
        }
Example #5
0
        static void Main()
        {
            Console.WriteLine("REPL Commands: eval \"stmt\", exec \"stmt\", printmem");
            string input = "";
            Dictionary <string, Dictionary <string, int> > memory = new Dictionary <string, Dictionary <string, int> >();

            memory["testguy"]          = new Dictionary <string, int>();
            memory["testguy"]["buddy"] = 32;

            AgfInterpreter interp = new AgfInterpreter(ref memory);

            while (true)
            {
                string ret     = "";
                string command = "";

                Console.Write(">");
                input = Console.ReadLine();

                int i = input.IndexOf(' ');
                if (i != -1)
                {
                    command = input.Substring(0, i).ToUpper();
                }
                else
                {
                    command = input.ToUpper();
                }
                switch (command.ToUpper())
                {
                case "EVAL":
                    ret = interp.eval(input.Substring(input.IndexOf(' ') + 1));
                    break;

                case "EXEC":
                    interp.exec(input.Substring(input.IndexOf(' ') + 1));
                    break;

                case "PRINTMEM":
                    ret = interp.ShowMemory();
                    break;
                }
                Console.WriteLine(ret);
            }
        }
Example #6
0
        public void AssignmentTest()
        {
            AgfInterpreter interp = getFreshInterp();

            interp.exec("ayy::lmao = 23");
            Assert.AreEqual(interp.eval("ayy::lmao"), "23");

            interp.exec("ayy::help = ayy::lmao - 20");
            Assert.AreEqual(interp.eval("ayy::help"), "3");

            interp.exec("ayy::help += 20");
            Assert.AreEqual(interp.eval("ayy::lmao"), "23");

            interp.exec("a::new += ayy::lmao - 3");
            Assert.AreEqual(interp.eval("a::new"), "20");

            interp.exec("b::c = 90; c::d = 50");
            Assert.AreEqual(interp.eval("b::c"), "90");
            Assert.AreEqual(interp.eval("c::d"), "50");

            interp.exec("a::new *= 5; pls::work /= 5; pls::work += 4;");
            Assert.AreEqual(interp.eval("a::new"), "100");
            Assert.AreEqual(interp.eval("pls::work"), "4");
        }