static void Main(string[] args) { if (args.Length == 1) { debug = false; } switch (args.Length) { case 0: Console.WriteLine("Specify a file path."); break; default: FileStream fs; try { fs = System.IO.File.OpenRead(args[0]); } catch (Exception e) { Console.WriteLine(e.Message); break; } MiniPL miniPL = MiniPL.GetInstance(); Scanner sc = miniPL.Scanner; Parser ps = miniPL.Parser; ParseTree ptree = ps.Parse(sc.Tokenize(fs)); MiniPL.Runnable prog = miniPL.ProcessParseTree(ptree, ps.Errors, ps.IsValidParseTree); prog.Execute(Console.In, Console.Out); break; } }
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()); }