public override void Execute() { try { CommandContext.LastCommandFailed = false; Scanner scanner = new Scanner(); Parser parser = new Parser(scanner); ParseTree parseTree = parser.Parse(Statement); if (0 < parseTree.Errors.Count) { throw new ArgumentException(parseTree.Errors[0].Message); } object result = parseTree.Eval(null); ICommand command = (ICommand) result; CommandContext.ResultWriter = GetResultWriter(); CommandContext.TextWriter = Console.Out; command.Validate(); command.Execute(); } catch (Exception ex) { CommandContext.LastCommandFailed = true; if (CommandContext.DebugLog) { Console.WriteLine("Command execution failed with error:\n{0}", ex); } else { while (null != ex.InnerException) { ex = ex.InnerException; } Console.WriteLine("Command execution failed with error '{0}'", ex.Message); } } }
public Parser(Scanner scanner) { this.scanner = scanner; }