Esempio n. 1
0
        private List <Error> GetErrors(string program)
        {
            MiniPL    miniPL = MiniPL.GetInstance();
            Scanner   sc     = miniPL.Scanner;
            Parser    ps     = miniPL.Parser;
            ParseTree ptree  = ps.Parse(sc.Tokenize(program));

            MiniPL.Runnable prog = miniPL.ProcessParseTree(ptree, ps.Errors, ps.IsValidParseTree);

            return(prog.errors);
        }
Esempio n. 2
0
        private string RunWithInput(string program, string input)
        {
            MiniPL  miniPL = MiniPL.GetInstance();
            Scanner sc     = miniPL.Scanner;
            Parser  ps     = miniPL.Parser;

            ParseTree ptree = ps.Parse(sc.Tokenize(program));

            MiniPL.Runnable prog = miniPL.ProcessParseTree(ptree, ps.Errors, ps.IsValidParseTree);

            StringWriter writer = new StringWriter();
            StringReader reader = new StringReader(input);

            prog.Execute(reader, writer);

            return(writer.ToString());
        }
Esempio n. 3
0
        public void Semantics_DeclarationScanTest()
        {
            string text = "print \"Give a number\";\n" +
                          "var n : int;\n" +
                          "read n;\n" +
                          "var f : int := 1;\n" +
                          "var i : int;\n" +
                          "for i in 1..n do\n" +
                          "    f := f * i;\n" +
                          "end for;\n" +
                          "print \"The result is: \";\n" +
                          "print f;";
            MiniPL    miniPL = MiniPL.GetInstance();
            Scanner   sc     = miniPL.Scanner;
            Parser    ps     = miniPL.Parser;
            ParseTree ptree  = ps.Parse(sc.Tokenize(text));

            MiniPL.Runnable prog = miniPL.ProcessParseTree(ptree, ps.Errors, ps.IsValidParseTree);

            Assert.AreEqual(3, prog.declarations.Count);
        }