예제 #1
0
 private void DefaultVisit(BaseBoundNode node)
 {
     foreach (var child in node.Children)
     {
         this.Visit(child);
     }
 }
예제 #2
0
        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);
            }
        }