/********************************************************************++ Copyright (c) Microsoft Corporation. All rights reserved. --********************************************************************/ using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Reflection; using System.Reflection.Emit; namespace System.Management.Automation.Language { /// /// /// public interface ICustomAstVisitor { /// object VisitErrorStatement(ErrorStatementAst errorStatementAst); /// object VisitErrorExpression(ErrorExpressionAst errorExpressionAst); #region Script Blocks /// object VisitScriptBlock(ScriptBlockAst scriptBlockAst); /// [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Param")] [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "param")] object VisitParamBlock(ParamBlockAst paramBlockAst); /// object VisitNamedBlock(NamedBlockAst namedBlockAst); /// object VisitTypeConstraint(TypeConstraintAst typeConstraintAst); /// object VisitAttribute(AttributeAst attributeAst); /// object VisitNamedAttributeArgument(NamedAttributeArgumentAst namedAttributeArgumentAst); /// object VisitParameter(ParameterAst parameterAst); #endregion Script Blocks #region Statements /// object VisitFunctionDefinition(FunctionDefinitionAst functionDefinitionAst); /// object VisitStatementBlock(StatementBlockAst statementBlockAst); /// object VisitIfStatement(IfStatementAst ifStmtAst); /// object VisitTrap(TrapStatementAst trapStatementAst); /// object VisitSwitchStatement(SwitchStatementAst switchStatementAst); /// object VisitDataStatement(DataStatementAst dataStatementAst); /// object VisitForEachStatement(ForEachStatementAst forEachStatementAst); /// object VisitDoWhileStatement(DoWhileStatementAst doWhileStatementAst); /// object VisitForStatement(ForStatementAst forStatementAst); /// object VisitWhileStatement(WhileStatementAst whileStatementAst); /// object VisitCatchClause(CatchClauseAst catchClauseAst); /// object VisitTryStatement(TryStatementAst tryStatementAst); /// object VisitBreakStatement(BreakStatementAst breakStatementAst); /// object VisitContinueStatement(ContinueStatementAst continueStatementAst); /// object VisitReturnStatement(ReturnStatementAst returnStatementAst); /// object VisitExitStatement(ExitStatementAst exitStatementAst); /// object VisitThrowStatement(ThrowStatementAst throwStatementAst); /// object VisitDoUntilStatement(DoUntilStatementAst doUntilStatementAst); /// object VisitAssignmentStatement(AssignmentStatementAst assignmentStatementAst); #endregion Statements #region Pipelines /// object VisitPipeline(PipelineAst pipelineAst); /// object VisitCommand(CommandAst commandAst); /// object VisitCommandExpression(CommandExpressionAst commandExpressionAst); /// object VisitCommandParameter(CommandParameterAst commandParameterAst); /// object VisitFileRedirection(FileRedirectionAst fileRedirectionAst); /// object VisitMergingRedirection(MergingRedirectionAst mergingRedirectionAst); #endregion Pipelines #region Expressions /// object VisitBinaryExpression(BinaryExpressionAst binaryExpressionAst); /// object VisitUnaryExpression(UnaryExpressionAst unaryExpressionAst); /// object VisitConvertExpression(ConvertExpressionAst convertExpressionAst); /// object VisitConstantExpression(ConstantExpressionAst constantExpressionAst); /// object VisitStringConstantExpression(StringConstantExpressionAst stringConstantExpressionAst); /// [SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "SubExpression")] [SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "subExpression")] object VisitSubExpression(SubExpressionAst subExpressionAst); /// object VisitUsingExpression(UsingExpressionAst usingExpressionAst); /// object VisitVariableExpression(VariableExpressionAst variableExpressionAst); /// object VisitTypeExpression(TypeExpressionAst typeExpressionAst); /// object VisitMemberExpression(MemberExpressionAst memberExpressionAst); /// object VisitInvokeMemberExpression(InvokeMemberExpressionAst invokeMemberExpressionAst); /// object VisitArrayExpression(ArrayExpressionAst arrayExpressionAst); /// object VisitArrayLiteral(ArrayLiteralAst arrayLiteralAst); /// object VisitHashtable(HashtableAst hashtableAst); /// object VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst); /// [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Paren")] [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "paren")] object VisitParenExpression(ParenExpressionAst parenExpressionAst); /// object VisitExpandableStringExpression(ExpandableStringExpressionAst expandableStringExpressionAst); /// object VisitIndexExpression(IndexExpressionAst indexExpressionAst); /// object VisitAttributedExpression(AttributedExpressionAst attributedExpressionAst); /// object VisitBlockStatement(BlockStatementAst blockStatementAst); #endregion Expressions } /// public interface ICustomAstVisitor2 : ICustomAstVisitor { /// object VisitTypeDefinition(TypeDefinitionAst typeDefinitionAst); /// object VisitPropertyMember(PropertyMemberAst propertyMemberAst); /// object VisitFunctionMember(FunctionMemberAst functionMemberAst); /// object VisitBaseCtorInvokeMemberExpression(BaseCtorInvokeMemberExpressionAst baseCtorInvokeMemberExpressionAst); /// object VisitUsingStatement(UsingStatementAst usingStatement); /// object VisitConfigurationDefinition(ConfigurationDefinitionAst configurationDefinitionAst); /// object VisitDynamicKeywordStatement(DynamicKeywordStatementAst dynamicKeywordAst); } #if DEBUG class CheckAllParentsSet : AstVisitor2 { internal CheckAllParentsSet(Ast root) { this.Root = root; } private Ast Root { get; set; } internal AstVisitAction CheckParent(Ast ast) { if (ast != Root) { Diagnostics.Assert(ast.Parent != null, "Parent not set"); } return AstVisitAction.Continue; } public override AstVisitAction VisitErrorStatement(ErrorStatementAst ast) { return CheckParent(ast); } public override AstVisitAction VisitErrorExpression(ErrorExpressionAst ast) { return CheckParent(ast); } public override AstVisitAction VisitScriptBlock(ScriptBlockAst ast) { return CheckParent(ast); } public override AstVisitAction VisitParamBlock(ParamBlockAst ast) { return CheckParent(ast); } public override AstVisitAction VisitNamedBlock(NamedBlockAst ast) { return CheckParent(ast); } public override AstVisitAction VisitTypeConstraint(TypeConstraintAst ast) { return CheckParent(ast); } public override AstVisitAction VisitAttribute(AttributeAst ast) { return CheckParent(ast); } public override AstVisitAction VisitParameter(ParameterAst ast) { return CheckParent(ast); } public override AstVisitAction VisitTypeExpression(TypeExpressionAst ast) { return CheckParent(ast); } public override AstVisitAction VisitFunctionDefinition(FunctionDefinitionAst ast) { return CheckParent(ast); } public override AstVisitAction VisitStatementBlock(StatementBlockAst ast) { return CheckParent(ast); } public override AstVisitAction VisitIfStatement(IfStatementAst ast) { return CheckParent(ast); } public override AstVisitAction VisitTrap(TrapStatementAst ast) { return CheckParent(ast); } public override AstVisitAction VisitSwitchStatement(SwitchStatementAst ast) { return CheckParent(ast); } public override AstVisitAction VisitDataStatement(DataStatementAst ast) { return CheckParent(ast); } public override AstVisitAction VisitForEachStatement(ForEachStatementAst ast) { return CheckParent(ast); } public override AstVisitAction VisitDoWhileStatement(DoWhileStatementAst ast) { return CheckParent(ast); } public override AstVisitAction VisitForStatement(ForStatementAst ast) { return CheckParent(ast); } public override AstVisitAction VisitWhileStatement(WhileStatementAst ast) { return CheckParent(ast); } public override AstVisitAction VisitCatchClause(CatchClauseAst ast) { return CheckParent(ast); } public override AstVisitAction VisitTryStatement(TryStatementAst ast) { return CheckParent(ast); } public override AstVisitAction VisitBreakStatement(BreakStatementAst ast) { return CheckParent(ast); } public override AstVisitAction VisitContinueStatement(ContinueStatementAst ast) { return CheckParent(ast); } public override AstVisitAction VisitReturnStatement(ReturnStatementAst ast) { return CheckParent(ast); } public override AstVisitAction VisitExitStatement(ExitStatementAst ast) { return CheckParent(ast); } public override AstVisitAction VisitThrowStatement(ThrowStatementAst ast) { return CheckParent(ast); } public override AstVisitAction VisitDoUntilStatement(DoUntilStatementAst ast) { return CheckParent(ast); } public override AstVisitAction VisitAssignmentStatement(AssignmentStatementAst ast) { return CheckParent(ast); } public override AstVisitAction VisitPipeline(PipelineAst ast) { return CheckParent(ast); } public override AstVisitAction VisitCommand(CommandAst ast) { return CheckParent(ast); } public override AstVisitAction VisitCommandExpression(CommandExpressionAst ast) { return CheckParent(ast); } public override AstVisitAction VisitCommandParameter(CommandParameterAst ast) { return CheckParent(ast); } public override AstVisitAction VisitMergingRedirection(MergingRedirectionAst ast) { return CheckParent(ast); } public override AstVisitAction VisitFileRedirection(FileRedirectionAst ast) { return CheckParent(ast); } public override AstVisitAction VisitBinaryExpression(BinaryExpressionAst ast) { return CheckParent(ast); } public override AstVisitAction VisitUnaryExpression(UnaryExpressionAst ast) { return CheckParent(ast); } public override AstVisitAction VisitConvertExpression(ConvertExpressionAst ast) { return CheckParent(ast); } public override AstVisitAction VisitConstantExpression(ConstantExpressionAst ast) { return CheckParent(ast); } public override AstVisitAction VisitStringConstantExpression(StringConstantExpressionAst ast) { return CheckParent(ast); } public override AstVisitAction VisitSubExpression(SubExpressionAst ast) { return CheckParent(ast); } public override AstVisitAction VisitUsingExpression(UsingExpressionAst ast) { return CheckParent(ast); } public override AstVisitAction VisitVariableExpression(VariableExpressionAst ast) { return CheckParent(ast); } public override AstVisitAction VisitMemberExpression(MemberExpressionAst ast) { return CheckParent(ast); } public override AstVisitAction VisitInvokeMemberExpression(InvokeMemberExpressionAst ast) { return CheckParent(ast); } public override AstVisitAction VisitArrayExpression(ArrayExpressionAst ast) { return CheckParent(ast); } public override AstVisitAction VisitArrayLiteral(ArrayLiteralAst ast) { return CheckParent(ast); } public override AstVisitAction VisitHashtable(HashtableAst ast) { return CheckParent(ast); } public override AstVisitAction VisitScriptBlockExpression(ScriptBlockExpressionAst ast) { return CheckParent(ast); } public override AstVisitAction VisitParenExpression(ParenExpressionAst ast) { return CheckParent(ast); } public override AstVisitAction VisitExpandableStringExpression(ExpandableStringExpressionAst ast) { return CheckParent(ast); } public override AstVisitAction VisitIndexExpression(IndexExpressionAst ast) { return CheckParent(ast); } public override AstVisitAction VisitAttributedExpression(AttributedExpressionAst ast) { return CheckParent(ast); } public override AstVisitAction VisitBlockStatement(BlockStatementAst ast) { return CheckParent(ast); } public override AstVisitAction VisitNamedAttributeArgument(NamedAttributeArgumentAst ast) { return CheckParent(ast); } public override AstVisitAction VisitTypeDefinition(TypeDefinitionAst ast) { return CheckParent(ast); } public override AstVisitAction VisitFunctionMember(FunctionMemberAst ast) { return CheckParent(ast); } public override AstVisitAction VisitPropertyMember(PropertyMemberAst ast) { return CheckParent(ast); } public override AstVisitAction VisitUsingStatement(UsingStatementAst ast) { return CheckParent(ast); } public override AstVisitAction VisitConfigurationDefinition(ConfigurationDefinitionAst ast) { return CheckParent(ast); } public override AstVisitAction VisitDynamicKeywordStatement(DynamicKeywordStatementAst ast) { return CheckParent(ast); } } /// /// Check if contains type /// class CheckTypeBuilder : AstVisitor2 { public override AstVisitAction VisitTypeConstraint(TypeConstraintAst ast) { Type type = ast.TypeName.GetReflectionType(); if (type != null) { Diagnostics.Assert(!(type.GetTypeInfo() is TypeBuilder), "ReflectionType can never be TypeBuilder"); } return AstVisitAction.Continue; } } #endif /// /// Searches an AST, using the evaluation function provided by either of the constructors /// internal class AstSearcher : AstVisitor2 { #region External interface internal static IEnumerable FindAll(Ast ast, Func predicate, bool searchNestedScriptBlocks) { Diagnostics.Assert(ast != null && predicate != null, "caller to verify arguments"); var searcher = new AstSearcher(predicate, stopOnFirst: false, searchNestedScriptBlocks: searchNestedScriptBlocks); ast.InternalVisit(searcher); return searcher.Results; } internal static Ast FindFirst(Ast ast, Func predicate, bool searchNestedScriptBlocks) { Diagnostics.Assert(ast != null && predicate != null, "caller to verify arguments"); var searcher = new AstSearcher(predicate, stopOnFirst: true, searchNestedScriptBlocks: searchNestedScriptBlocks); ast.InternalVisit(searcher); return searcher.Results.FirstOrDefault(); } internal static bool Contains(Ast ast, Func predicate, bool searchNestedScriptBlocks) { Diagnostics.Assert(ast != null && predicate != null, "caller to verify arguments"); var searcher = new AstSearcher(predicate, stopOnFirst: true, searchNestedScriptBlocks: searchNestedScriptBlocks); ast.InternalVisit(searcher); return searcher.Results.FirstOrDefault() != null; } internal static bool IsUsingDollarInput(Ast ast) { return (AstSearcher.Contains( ast, ast_ => { var varAst = ast_ as VariableExpressionAst; if (varAst != null) { return varAst.VariablePath.IsVariable && varAst.VariablePath.UnqualifiedPath.Equals(SpecialVariables.Input, StringComparison.OrdinalIgnoreCase); } return false; }, searchNestedScriptBlocks: false)); } #endregion External interface protected AstSearcher(Func callback, bool stopOnFirst, bool searchNestedScriptBlocks) { _callback = callback; _stopOnFirst = stopOnFirst; _searchNestedScriptBlocks = searchNestedScriptBlocks; this.Results = new List(); } private readonly Func _callback; private readonly bool _stopOnFirst; private readonly bool _searchNestedScriptBlocks; protected readonly List Results; protected AstVisitAction Check(Ast ast) { if (_callback(ast)) { Results.Add(ast); if (_stopOnFirst) { return AstVisitAction.StopVisit; } } return AstVisitAction.Continue; } protected AstVisitAction CheckScriptBlock(Ast ast) { var action = Check(ast); if (action == AstVisitAction.Continue && !_searchNestedScriptBlocks) { action = AstVisitAction.SkipChildren; } return action; } public override AstVisitAction VisitErrorStatement(ErrorStatementAst ast) { return Check(ast); } public override AstVisitAction VisitErrorExpression(ErrorExpressionAst ast) { return Check(ast); } public override AstVisitAction VisitScriptBlock(ScriptBlockAst ast) { return Check(ast); } public override AstVisitAction VisitParamBlock(ParamBlockAst ast) { return Check(ast); } public override AstVisitAction VisitNamedBlock(NamedBlockAst ast) { return Check(ast); } public override AstVisitAction VisitTypeConstraint(TypeConstraintAst ast) { return Check(ast); } public override AstVisitAction VisitAttribute(AttributeAst ast) { return Check(ast); } public override AstVisitAction VisitParameter(ParameterAst ast) { return Check(ast); } public override AstVisitAction VisitTypeExpression(TypeExpressionAst ast) { return Check(ast); } public override AstVisitAction VisitFunctionDefinition(FunctionDefinitionAst ast) { return CheckScriptBlock(ast); } public override AstVisitAction VisitStatementBlock(StatementBlockAst ast) { return Check(ast); } public override AstVisitAction VisitIfStatement(IfStatementAst ast) { return Check(ast); } public override AstVisitAction VisitTrap(TrapStatementAst ast) { return CheckScriptBlock(ast); } public override AstVisitAction VisitSwitchStatement(SwitchStatementAst ast) { return Check(ast); } public override AstVisitAction VisitDataStatement(DataStatementAst ast) { return Check(ast); } public override AstVisitAction VisitForEachStatement(ForEachStatementAst ast) { return Check(ast); } public override AstVisitAction VisitDoWhileStatement(DoWhileStatementAst ast) { return Check(ast); } public override AstVisitAction VisitForStatement(ForStatementAst ast) { return Check(ast); } public override AstVisitAction VisitWhileStatement(WhileStatementAst ast) { return Check(ast); } public override AstVisitAction VisitCatchClause(CatchClauseAst ast) { return Check(ast); } public override AstVisitAction VisitTryStatement(TryStatementAst ast) { return Check(ast); } public override AstVisitAction VisitBreakStatement(BreakStatementAst ast) { return Check(ast); } public override AstVisitAction VisitContinueStatement(ContinueStatementAst ast) { return Check(ast); } public override AstVisitAction VisitReturnStatement(ReturnStatementAst ast) { return Check(ast); } public override AstVisitAction VisitExitStatement(ExitStatementAst ast) { return Check(ast); } public override AstVisitAction VisitThrowStatement(ThrowStatementAst ast) { return Check(ast); } public override AstVisitAction VisitDoUntilStatement(DoUntilStatementAst ast) { return Check(ast); } public override AstVisitAction VisitAssignmentStatement(AssignmentStatementAst ast) { return Check(ast); } public override AstVisitAction VisitPipeline(PipelineAst ast) { return Check(ast); } public override AstVisitAction VisitCommand(CommandAst ast) { return Check(ast); } public override AstVisitAction VisitCommandExpression(CommandExpressionAst ast) { return Check(ast); } public override AstVisitAction VisitCommandParameter(CommandParameterAst ast) { return Check(ast); } public override AstVisitAction VisitMergingRedirection(MergingRedirectionAst ast) { return Check(ast); } public override AstVisitAction VisitFileRedirection(FileRedirectionAst ast) { return Check(ast); } public override AstVisitAction VisitBinaryExpression(BinaryExpressionAst ast) { return Check(ast); } public override AstVisitAction VisitUnaryExpression(UnaryExpressionAst ast) { return Check(ast); } public override AstVisitAction VisitConvertExpression(ConvertExpressionAst ast) { return Check(ast); } public override AstVisitAction VisitConstantExpression(ConstantExpressionAst ast) { return Check(ast); } public override AstVisitAction VisitStringConstantExpression(StringConstantExpressionAst ast) { return Check(ast); } public override AstVisitAction VisitSubExpression(SubExpressionAst ast) { return Check(ast); } public override AstVisitAction VisitUsingExpression(UsingExpressionAst ast) { return Check(ast); } public override AstVisitAction VisitVariableExpression(VariableExpressionAst ast) { return Check(ast); } public override AstVisitAction VisitMemberExpression(MemberExpressionAst ast) { return Check(ast); } public override AstVisitAction VisitInvokeMemberExpression(InvokeMemberExpressionAst ast) { return Check(ast); } public override AstVisitAction VisitArrayExpression(ArrayExpressionAst ast) { return Check(ast); } public override AstVisitAction VisitArrayLiteral(ArrayLiteralAst ast) { return Check(ast); } public override AstVisitAction VisitHashtable(HashtableAst ast) { return Check(ast); } public override AstVisitAction VisitScriptBlockExpression(ScriptBlockExpressionAst ast) { return CheckScriptBlock(ast); } public override AstVisitAction VisitParenExpression(ParenExpressionAst ast) { return Check(ast); } public override AstVisitAction VisitExpandableStringExpression(ExpandableStringExpressionAst ast) { return Check(ast); } public override AstVisitAction VisitIndexExpression(IndexExpressionAst ast) { return Check(ast); } public override AstVisitAction VisitAttributedExpression(AttributedExpressionAst ast) { return Check(ast); } public override AstVisitAction VisitNamedAttributeArgument(NamedAttributeArgumentAst ast) { return Check(ast); } public override AstVisitAction VisitTypeDefinition(TypeDefinitionAst ast) { return Check(ast); } public override AstVisitAction VisitPropertyMember(PropertyMemberAst ast) { return Check(ast); } public override AstVisitAction VisitFunctionMember(FunctionMemberAst ast) { return Check(ast); } public override AstVisitAction VisitUsingStatement(UsingStatementAst ast) { return Check(ast); } public override AstVisitAction VisitBlockStatement(BlockStatementAst ast) { return Check(ast); } public override AstVisitAction VisitConfigurationDefinition(ConfigurationDefinitionAst ast) { return Check(ast); } public override AstVisitAction VisitDynamicKeywordStatement(DynamicKeywordStatementAst ast) { return Check(ast); } } /// /// Default implementation of interface /// public abstract class DefaultCustomAstVisitor : ICustomAstVisitor { /// public virtual object VisitErrorStatement(ErrorStatementAst errorStatementAst) { return null; } /// public virtual object VisitErrorExpression(ErrorExpressionAst errorExpressionAst) { return null; } /// public virtual object VisitScriptBlock(ScriptBlockAst scriptBlockAst) { return null; } /// public virtual object VisitParamBlock(ParamBlockAst paramBlockAst) { return null; } /// public virtual object VisitNamedBlock(NamedBlockAst namedBlockAst) { return null; } /// public virtual object VisitTypeConstraint(TypeConstraintAst typeConstraintAst) { return null; } /// public virtual object VisitAttribute(AttributeAst attributeAst) { return null; } /// public virtual object VisitNamedAttributeArgument(NamedAttributeArgumentAst namedAttributeArgumentAst) { return null; } /// public virtual object VisitParameter(ParameterAst parameterAst) { return null; } /// public virtual object VisitStatementBlock(StatementBlockAst statementBlockAst) { return null; } /// public virtual object VisitIfStatement(IfStatementAst ifStmtAst) { return null; } /// public virtual object VisitTrap(TrapStatementAst trapStatementAst) { return null; } /// public virtual object VisitSwitchStatement(SwitchStatementAst switchStatementAst) { return null; } /// public virtual object VisitDataStatement(DataStatementAst dataStatementAst) { return null; } /// public virtual object VisitForEachStatement(ForEachStatementAst forEachStatementAst) { return null; } /// public virtual object VisitDoWhileStatement(DoWhileStatementAst doWhileStatementAst) { return null; } /// public virtual object VisitForStatement(ForStatementAst forStatementAst) { return null; } /// public virtual object VisitWhileStatement(WhileStatementAst whileStatementAst) { return null; } /// public virtual object VisitCatchClause(CatchClauseAst catchClauseAst) { return null; } /// public virtual object VisitTryStatement(TryStatementAst tryStatementAst) { return null; } /// public virtual object VisitBreakStatement(BreakStatementAst breakStatementAst) { return null; } /// public virtual object VisitContinueStatement(ContinueStatementAst continueStatementAst) { return null; } /// public virtual object VisitReturnStatement(ReturnStatementAst returnStatementAst) { return null; } /// public virtual object VisitExitStatement(ExitStatementAst exitStatementAst) { return null; } /// public virtual object VisitThrowStatement(ThrowStatementAst throwStatementAst) { return null; } /// public virtual object VisitDoUntilStatement(DoUntilStatementAst doUntilStatementAst) { return null; } /// public virtual object VisitAssignmentStatement(AssignmentStatementAst assignmentStatementAst) { return null; } /// public virtual object VisitPipeline(PipelineAst pipelineAst) { return null; } /// public virtual object VisitCommand(CommandAst commandAst) { return null; } /// public virtual object VisitCommandExpression(CommandExpressionAst commandExpressionAst) { return null; } /// public virtual object VisitCommandParameter(CommandParameterAst commandParameterAst) { return null; } /// public virtual object VisitFileRedirection(FileRedirectionAst fileRedirectionAst) { return null; } /// public virtual object VisitMergingRedirection(MergingRedirectionAst mergingRedirectionAst) { return null; } /// public virtual object VisitBinaryExpression(BinaryExpressionAst binaryExpressionAst) { return null; } /// public virtual object VisitUnaryExpression(UnaryExpressionAst unaryExpressionAst) { return null; } /// public virtual object VisitConvertExpression(ConvertExpressionAst convertExpressionAst) { return null; } /// public virtual object VisitConstantExpression(ConstantExpressionAst constantExpressionAst) { return null; } /// public virtual object VisitStringConstantExpression(StringConstantExpressionAst stringConstantExpressionAst) { return null; } /// public virtual object VisitSubExpression(SubExpressionAst subExpressionAst) { return null; } /// public virtual object VisitUsingExpression(UsingExpressionAst usingExpressionAst) { return null; } /// public virtual object VisitVariableExpression(VariableExpressionAst variableExpressionAst) { return null; } /// public virtual object VisitTypeExpression(TypeExpressionAst typeExpressionAst) { return null; } /// public virtual object VisitMemberExpression(MemberExpressionAst memberExpressionAst) { return null; } /// public virtual object VisitInvokeMemberExpression(InvokeMemberExpressionAst invokeMemberExpressionAst) { return null; } /// public virtual object VisitArrayExpression(ArrayExpressionAst arrayExpressionAst) { return null; } /// public virtual object VisitArrayLiteral(ArrayLiteralAst arrayLiteralAst) { return null; } /// public virtual object VisitHashtable(HashtableAst hashtableAst) { return null; } /// public virtual object VisitParenExpression(ParenExpressionAst parenExpressionAst) { return null; } /// public virtual object VisitExpandableStringExpression(ExpandableStringExpressionAst expandableStringExpressionAst) { return null; } /// public virtual object VisitIndexExpression(IndexExpressionAst indexExpressionAst) { return null; } /// public virtual object VisitAttributedExpression(AttributedExpressionAst attributedExpressionAst) { return null; } /// public virtual object VisitBlockStatement(BlockStatementAst blockStatementAst) { return null; } /// public virtual object VisitFunctionDefinition(FunctionDefinitionAst functionDefinitionAst) { return null; } /// public virtual object VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) { return null; } } /// /// Default implementation of interface /// public abstract class DefaultCustomAstVisitor2 : DefaultCustomAstVisitor, ICustomAstVisitor2 { /// public virtual object VisitPropertyMember(PropertyMemberAst propertyMemberAst) { return null; } /// public virtual object VisitBaseCtorInvokeMemberExpression(BaseCtorInvokeMemberExpressionAst baseCtorInvokeMemberExpressionAst) { return null; } /// public virtual object VisitUsingStatement(UsingStatementAst usingStatement) { return null; } /// public virtual object VisitConfigurationDefinition(ConfigurationDefinitionAst configurationAst) { return null; } /// public virtual object VisitDynamicKeywordStatement(DynamicKeywordStatementAst dynamicKeywordAst) { return null; } /// public virtual object VisitTypeDefinition(TypeDefinitionAst typeDefinitionAst) { return null; } /// public virtual object VisitFunctionMember(FunctionMemberAst functionMemberAst) { return null; } } }