private void DefaultVisit(BaseBoundNode node) { foreach (var child in node.Children) { this.Visit(child); } }
private protected void Visit(BaseBoundNode node) { switch (node) { case BoundSubModule subModule: this.VisitSubModule(subModule); break; case BoundStatementBlock statementBlock: this.VisitStatementBlock(statementBlock); break; case BoundIfPart ifPart: this.VisitIfPart(ifPart); break; case BoundElseIfPart elseIfPart: this.VisitElseIfPart(elseIfPart); break; case BoundElsePart elsePart: this.VisitElsePart(elsePart); break; case BoundIfStatement ifStatement: this.VisitIfStatement(ifStatement); break; case BoundWhileStatement whileStatement: this.VisitWhileStatement(whileStatement); break; case BoundForStatement forStatement: this.VisitForStatement(forStatement); break; case BoundLabelStatement labelStatement: this.VisitLabelStatement(labelStatement); break; case BoundGoToStatement goToStatement: this.VisitGoToStatement(goToStatement); break; case BoundSubModuleInvocationStatement subModuleInvocationStatement: this.VisitSubModuleInvocationStatement(subModuleInvocationStatement); break; case BoundLibraryMethodInvocationStatement libraryMethodInvocationStatement: this.VisitLibraryMethodInvocationStatement(libraryMethodInvocationStatement); break; case BoundVariableAssignmentStatement variableAssignmentStatement: this.VisitVariableAssignmentStatement(variableAssignmentStatement); break; case BoundPropertyAssignmentStatement propertyAssignmentStatement: this.VisitPropertyAssignmentStatement(propertyAssignmentStatement); break; case BoundEventAssignmentStatement eventAssignmentStatement: this.VisitEventAssignmentStatement(eventAssignmentStatement); break; case BoundArrayAssignmentStatement arrayAssignmentStatement: this.VisitArrayAssignmentStatement(arrayAssignmentStatement); break; case BoundInvalidExpressionStatement invalidExpressionStatement: this.VisitInvalidExpressionStatement(invalidExpressionStatement); break; case BoundUnaryExpression unaryExpression: this.VisitUnaryExpression(unaryExpression); break; case BoundBinaryExpression binaryExpression: this.VisitBinaryExpression(binaryExpression); break; case BoundArrayAccessExpression arrayAccessExpression: this.VisitArrayAccessExpression(arrayAccessExpression); break; case BoundLibraryTypeExpression libraryTypeExpression: this.VisitLibraryTypeExpression(libraryTypeExpression); break; case BoundLibraryMethodExpression libraryMethodExpression: this.VisitLibraryMethodExpression(libraryMethodExpression); break; case BoundLibraryPropertyExpression libraryPropertyExpression: this.VisitLibraryPropertyExpression(libraryPropertyExpression); break; case BoundLibraryEventExpression libraryEventExpression: this.VisitLibraryEventExpression(libraryEventExpression); break; case BoundLibraryMethodInvocationExpression libraryMethodInvocationExpression: this.VisitLibraryMethodInvocationExpression(libraryMethodInvocationExpression); break; case BoundSubModuleExpression subModuleExpression: this.VisitSubModuleExpression(subModuleExpression); break; case BoundSubModuleInvocationExpression subModuleInvocationExpression: this.VisitSubModuleInvocationExpression(subModuleInvocationExpression); break; case BoundVariableExpression variableExpression: this.VisitVariableExpression(variableExpression); break; case BoundStringLiteralExpression stringLiteralExpression: this.VisitStringLiteralExpression(stringLiteralExpression); break; case BoundNumberLiteralExpression numberLiteralExpression: this.VisitNumberLiteralExpression(numberLiteralExpression); break; case BoundParenthesisExpression parenthesisExpression: this.VisitParenthesisExpression(parenthesisExpression); break; case BoundInvalidExpression invalidExpression: this.VisitInvalidExpression(invalidExpression); break; default: throw ExceptionUtilities.UnexpectedValue(node); } }