public Completion ExecuteStatement(Statement statement) { var maxStatements = Options.GetMaxStatements(); if (maxStatements > 0 && _statementsCount++ > maxStatements) { throw new StatementsCountOverflowException(); } switch (statement.Type) { case SyntaxNodes.BlockStatement: return _statements.ExecuteBlockStatement(statement.As<BlockStatement>()); case SyntaxNodes.BreakStatement: return _statements.ExecuteBreakStatement(statement.As<BreakStatement>()); case SyntaxNodes.ContinueStatement: return _statements.ExecuteContinueStatement(statement.As<ContinueStatement>()); case SyntaxNodes.DoWhileStatement: return _statements.ExecuteDoWhileStatement(statement.As<DoWhileStatement>()); case SyntaxNodes.DebuggerStatement: return _statements.ExecuteDebuggerStatement(statement.As<DebuggerStatement>()); case SyntaxNodes.EmptyStatement: return _statements.ExecuteEmptyStatement(statement.As<EmptyStatement>()); case SyntaxNodes.ExpressionStatement: return _statements.ExecuteExpressionStatement(statement.As<ExpressionStatement>()); case SyntaxNodes.ForStatement: return _statements.ExecuteForStatement(statement.As<ForStatement>()); case SyntaxNodes.ForInStatement: return _statements.ExecuteForInStatement(statement.As<ForInStatement>()); case SyntaxNodes.FunctionDeclaration: return new Completion(Completion.Normal, null, null); case SyntaxNodes.IfStatement: return _statements.ExecuteIfStatement(statement.As<IfStatement>()); case SyntaxNodes.LabeledStatement: return _statements.ExecuteLabelledStatement(statement.As<LabelledStatement>()); case SyntaxNodes.ReturnStatement: return _statements.ExecuteReturnStatement(statement.As<ReturnStatement>()); case SyntaxNodes.SwitchStatement: return _statements.ExecuteSwitchStatement(statement.As<SwitchStatement>()); case SyntaxNodes.ThrowStatement: return _statements.ExecuteThrowStatement(statement.As<ThrowStatement>()); case SyntaxNodes.TryStatement: return _statements.ExecuteTryStatement(statement.As<TryStatement>()); case SyntaxNodes.VariableDeclaration: return _statements.ExecuteVariableDeclaration(statement.As<VariableDeclaration>()); case SyntaxNodes.WhileStatement: return _statements.ExecuteWhileStatement(statement.As<WhileStatement>()); case SyntaxNodes.WithStatement: return _statements.ExecuteWithStatement(statement.As<WithStatement>()); case SyntaxNodes.Program: return _statements.ExecuteProgram(statement.As<Program>()); default: throw new ArgumentOutOfRangeException(); } }
private Completion ExecuteStatement(Statement statement) { return _engine.ExecuteStatement(statement); }