Exemplo n.º 1
0
        static void Main(string[] args)
        {
            if (!CheckInput(args))
            {
                Die("Invalid parameters");
            }

            if (args[0] == "-t")
                printGrammerTree = true;
            if (args[0] == "-s")
                printSymbolTable = true;

            Scanner scaner = new Scanner();
            Parser parser = new Parser(scaner);
            ParseTree tree = parser.Parse(GetInput(args[args.Length - 1]));
            tree = SimplyTree(tree);
            if (printGrammerTree)
            {
                Console.WriteLine(tree.PrintTree());
                return;
            }
            EnviromentBlock globalSymbol = new EnviromentBlock();
            globalEnviroment.AddEnviroment(globalSymbol);
            AddIoFunctionToGlobal("return");
            AddIoFunctionToGlobal("print");
            AddIoFunctionToGlobal("readline");
            AddBuildinFunctionToGlobal("==");
            AddBuildinFunctionToGlobal("+");
            AddBuildinFunctionToGlobal("-");
            AddBuildinFunctionToGlobal("*");
            AddBuildinFunctionToGlobal("/");
            AddBuildinFunctionToGlobal("%");
            EvalTree(tree, globalEnviroment);
            if (printSymbolTable)
            {
                Console.WriteLine(globalEnviroment.Print());
            }
            else
            {
                RunMainFunction();
            }
            return;
        }
Exemplo n.º 2
0
 public Parser(Scanner scanner)
 {
     this.scanner = scanner;
 }