public static void Interactive() { IN = Console.In; OUT = Console.Out; ERROR = Console.Error; try { var scope = new Scope(); var compiler = new Translator(); for (string line = Line(); line != null; line = Line()) { Tokenizer tokens = new Tokenizer(new ParseReader(new StringReader(line))); try { Parser parser = new Parser(tokens); try { StmtAST stmt = parser.Stmt(); if(parser.Tokens.PeekType() != new EoF()) ERROR.WriteLine("WARNING: Ignoring tokens: " + parser.Tokens.PeekToken().GetText()); object value = stmt.Translate(compiler).Exec(scope); if(value != null) OUT.WriteLine(value.ToString()); OUT.Flush(); } catch(InternalStorkNetException e) { OUT.Write("INTERNAL ERROR: " + e.Message + "\n"); OUT.Write(e.StackTrace); } catch(StorkNetException e) { OUT.Write("ERROR: " + e.Message + "\n"); } } finally { tokens.Close(); } } } catch (Exception e) { OUT.WriteLine(e.StackTrace); } }