private void RunImpl() { _console.SetTitle(Title); _console.WriteLine(Greeting); string input; while (true) { _console.Canceled = false; _console.SetTextStyle(ConsoleTextStyle.Normal); string prompt = (App.Status == AppStatus.WaitingMoreInput ? PromptMoreInput : Prompt); //Write prompt, read input, check for Ctrl-C _console.Write(prompt); input = _console.ReadLine(); if (_console.Canceled) { if (Confirm(Resources.MsgExitConsoleYN)) { return; } else { continue; //from the start of the loop } } //Execute App.ClearOutputBuffer(); EvaluateAsync(input); //Evaluate(input); WaitForScriptComplete(); switch (App.Status) { case AppStatus.Ready: //success _console.WriteLine(App.GetOutput()); break; case AppStatus.SyntaxError: _console.WriteLine(App.GetOutput()); //write all output we have _console.SetTextStyle(ConsoleTextStyle.Error); foreach (var err in App.GetParserMessages()) { _console.WriteLine(string.Empty.PadRight(prompt.Length + err.Location.Column) + "^"); //show err location _console.WriteLine(err.Message); //print message } break; case AppStatus.Crash: case AppStatus.RuntimeError: ReportException(); break; default: break; } //switch } } //Run method