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; }
public Parser(Scanner scanner) { this.scanner = scanner; }