2019-08-23 11:56:54 -07:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "BfAst.h"
|
|
|
|
|
|
|
|
NS_BF_BEGIN
|
|
|
|
|
|
|
|
class BfElementVisitor : public BfStructuralVisitor
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
BfElementVisitor();
|
|
|
|
|
|
|
|
virtual void Visit(BfAstNode* bfAstNode) {}
|
2020-05-26 06:10:51 -07:00
|
|
|
virtual void Visit(BfErrorNode* bfErrorNode);
|
2019-08-23 11:56:54 -07:00
|
|
|
virtual void Visit(BfScopeNode* scopeNode);
|
|
|
|
virtual void Visit(BfNewNode* newNode);
|
|
|
|
virtual void Visit(BfLabeledBlock* labeledBlock);
|
|
|
|
virtual void Visit(BfExpression* expr);
|
|
|
|
virtual void Visit(BfExpressionStatement* exprStmt);
|
|
|
|
virtual void Visit(BfAttributedExpression* attribExpr);
|
|
|
|
virtual void Visit(BfStatement* stmt);
|
2020-08-16 08:33:51 -07:00
|
|
|
virtual void Visit(BfAttributedStatement* attribStmt);
|
2019-08-23 11:56:54 -07:00
|
|
|
virtual void Visit(BfLabelableStatement* labelableStmt);
|
|
|
|
virtual void Visit(BfTypedValueExpression* typedValueExpr);
|
|
|
|
|
|
|
|
virtual void Visit(BfCommentNode* commentNode);
|
|
|
|
virtual void Visit(BfPreprocesorIgnoredSectionNode* preprocesorIgnoredSection);
|
|
|
|
virtual void Visit(BfPreprocessorNode* preprocessorNode);
|
|
|
|
virtual void Visit(BfPreprocessorDefinedExpression* definedExpr);
|
|
|
|
|
|
|
|
virtual void Visit(BfAttributeDirective* attributeDirective);
|
|
|
|
virtual void Visit(BfGenericParamsDeclaration* genericParams);
|
2019-11-17 09:28:39 -08:00
|
|
|
virtual void Visit(BfGenericOperatorConstraint* genericConstraints);
|
2019-08-23 11:56:54 -07:00
|
|
|
virtual void Visit(BfGenericConstraintsDeclaration* genericConstraints);
|
|
|
|
virtual void Visit(BfGenericArgumentsNode* genericArgumentsNode);
|
|
|
|
|
|
|
|
virtual void Visit(BfEmptyStatement* emptyStmt);
|
|
|
|
virtual void Visit(BfTokenNode* tokenNode);
|
|
|
|
virtual void Visit(BfTokenPairNode* tokenPairNode);
|
2022-02-19 07:38:05 -05:00
|
|
|
virtual void Visit(BfUsingSpecifierNode* usingSpecifier);
|
2019-08-23 11:56:54 -07:00
|
|
|
virtual void Visit(BfLiteralExpression* literalExpr);
|
2020-11-11 05:46:52 -08:00
|
|
|
virtual void Visit(BfStringInterpolationExpression* stringInterpolationExpression);
|
2019-08-23 11:56:54 -07:00
|
|
|
virtual void Visit(BfIdentifierNode* identifierNode);
|
|
|
|
virtual void Visit(BfAttributedIdentifierNode* attrIdentifierNode);
|
|
|
|
virtual void Visit(BfQualifiedNameNode* nameNode);
|
|
|
|
virtual void Visit(BfThisExpression* thisExpr);
|
|
|
|
virtual void Visit(BfBaseExpression* baseExpr);
|
|
|
|
virtual void Visit(BfMixinExpression* thisExpr);
|
|
|
|
virtual void Visit(BfSizedArrayCreateExpression* createExpr);
|
2020-06-18 06:12:14 -07:00
|
|
|
virtual void Visit(BfInitializerExpression* initExpr);
|
2020-01-23 12:02:54 -08:00
|
|
|
virtual void Visit(BfCollectionInitializerExpression* collectionInitExpr);
|
2019-08-23 11:56:54 -07:00
|
|
|
virtual void Visit(BfTypeReference* typeRef);
|
|
|
|
virtual void Visit(BfNamedTypeReference* typeRef);
|
|
|
|
virtual void Visit(BfQualifiedTypeReference* qualifiedType);
|
|
|
|
virtual void Visit(BfDotTypeReference* typeRef);
|
|
|
|
virtual void Visit(BfVarTypeReference* typeRef);
|
|
|
|
virtual void Visit(BfVarRefTypeReference* typeRef);
|
|
|
|
virtual void Visit(BfLetTypeReference* typeRef);
|
|
|
|
virtual void Visit(BfConstTypeRef* typeRef);
|
|
|
|
virtual void Visit(BfConstExprTypeRef* typeRef);
|
|
|
|
virtual void Visit(BfRefTypeRef* typeRef);
|
2020-04-27 15:09:10 -07:00
|
|
|
virtual void Visit(BfModifiedTypeRef* typeRef);
|
2019-08-23 11:56:54 -07:00
|
|
|
virtual void Visit(BfArrayTypeRef* typeRef);
|
|
|
|
virtual void Visit(BfGenericInstanceTypeRef* typeRef);
|
|
|
|
virtual void Visit(BfTupleTypeRef* typeRef);
|
2021-01-15 14:28:21 -08:00
|
|
|
virtual void Visit(BfExprModTypeRef* typeRef);
|
2019-08-23 11:56:54 -07:00
|
|
|
virtual void Visit(BfDelegateTypeRef* typeRef);
|
|
|
|
virtual void Visit(BfPointerTypeRef* typeRef);
|
|
|
|
virtual void Visit(BfNullableTypeRef* typeRef);
|
|
|
|
virtual void Visit(BfVariableDeclaration* varDecl);
|
|
|
|
virtual void Visit(BfLocalMethodDeclaration* methodDecl);
|
2020-05-19 09:42:11 -07:00
|
|
|
virtual void Visit(BfParameterDeclaration* paramDecl);
|
2019-08-23 11:56:54 -07:00
|
|
|
virtual void Visit(BfTypeAttrExpression* typeAttrExpr);
|
2021-09-10 14:21:25 -07:00
|
|
|
virtual void Visit(BfOffsetOfExpression* offsetOfExpr);
|
2019-08-23 11:56:54 -07:00
|
|
|
virtual void Visit(BfDefaultExpression* defaultExpr);
|
2022-05-30 11:40:49 -07:00
|
|
|
virtual void Visit(BfIsConstExpression* isConstExpr);
|
2019-08-23 11:56:54 -07:00
|
|
|
virtual void Visit(BfUninitializedExpression* uninitializedExpr);
|
|
|
|
virtual void Visit(BfCheckTypeExpression* checkTypeExpr);
|
|
|
|
virtual void Visit(BfDynamicCastExpression* dynCastExpr);
|
|
|
|
virtual void Visit(BfCastExpression* castExpr);
|
|
|
|
virtual void Visit(BfDelegateBindExpression* delegateBindExpr);
|
|
|
|
virtual void Visit(BfLambdaBindExpression* lambdaBindExpr);
|
|
|
|
virtual void Visit(BfObjectCreateExpression* objCreateExpr);
|
|
|
|
virtual void Visit(BfBoxExpression* boxExpr);
|
|
|
|
virtual void Visit(BfScopedInvocationTarget* scopedTarget);
|
|
|
|
virtual void Visit(BfInvocationExpression* invocationExpr);
|
|
|
|
virtual void Visit(BfDeferStatement* deferStmt);
|
|
|
|
virtual void Visit(BfEnumCaseBindExpression* caseBindExpr);
|
|
|
|
virtual void Visit(BfCaseExpression* caseExpr);
|
|
|
|
virtual void Visit(BfSwitchCase* switchCase);
|
|
|
|
virtual void Visit(BfWhenExpression* whenExpr);
|
|
|
|
virtual void Visit(BfSwitchStatement* switchStmt);
|
|
|
|
virtual void Visit(BfTryStatement* tryStmt);
|
|
|
|
virtual void Visit(BfCatchStatement* catchStmt);
|
|
|
|
virtual void Visit(BfFinallyStatement* finallyStmt);
|
|
|
|
virtual void Visit(BfCheckedStatement* checkedStmt);
|
|
|
|
virtual void Visit(BfUncheckedStatement* uncheckedStmt);
|
|
|
|
virtual void Visit(BfIfStatement* ifStmt);
|
|
|
|
virtual void Visit(BfThrowStatement* throwStmt);
|
|
|
|
virtual void Visit(BfDeleteStatement* deleteStmt);
|
|
|
|
virtual void Visit(BfReturnStatement* returnStmt);
|
|
|
|
virtual void Visit(BfYieldStatement* returnStmt);
|
|
|
|
virtual void Visit(BfBreakStatement* breakStmt);
|
|
|
|
virtual void Visit(BfContinueStatement* continueStmt);
|
|
|
|
virtual void Visit(BfFallthroughStatement* fallthroughStmt);
|
|
|
|
virtual void Visit(BfUsingStatement* whileStmt);
|
|
|
|
virtual void Visit(BfDoStatement* whileStmt);
|
|
|
|
virtual void Visit(BfRepeatStatement* repeatStmt);
|
|
|
|
virtual void Visit(BfWhileStatement* whileStmt);
|
|
|
|
virtual void Visit(BfForStatement* forStmt);
|
|
|
|
virtual void Visit(BfForEachStatement* forEachStmt);
|
|
|
|
virtual void Visit(BfConditionalExpression* condExpr);
|
|
|
|
virtual void Visit(BfAssignmentExpression* assignExpr);
|
|
|
|
virtual void Visit(BfParenthesizedExpression* parenExpr);
|
|
|
|
virtual void Visit(BfTupleExpression* parenExpr);
|
|
|
|
virtual void Visit(BfMemberReferenceExpression* memberRefExpr);
|
|
|
|
virtual void Visit(BfIndexerExpression* indexerExpr);
|
|
|
|
virtual void Visit(BfUnaryOperatorExpression* binOpExpr);
|
|
|
|
virtual void Visit(BfBinaryOperatorExpression* binOpExpr);
|
|
|
|
virtual void Visit(BfConstructorDeclaration* ctorDeclaration);
|
|
|
|
virtual void Visit(BfDestructorDeclaration* dtorDeclaration);
|
|
|
|
virtual void Visit(BfMethodDeclaration* methodDeclaration);
|
|
|
|
virtual void Visit(BfOperatorDeclaration* operatorDeclaration);
|
|
|
|
virtual void Visit(BfPropertyMethodDeclaration* propertyDeclaration);
|
2019-09-30 12:24:02 -07:00
|
|
|
virtual void Visit(BfPropertyBodyExpression* propertyBodyExpression);
|
2019-08-23 11:56:54 -07:00
|
|
|
virtual void Visit(BfPropertyDeclaration* propertyDeclaration);
|
|
|
|
virtual void Visit(BfIndexerDeclaration* indexerDeclaration);
|
|
|
|
virtual void Visit(BfFieldDeclaration* fieldDeclaration);
|
|
|
|
virtual void Visit(BfEnumCaseDeclaration* enumCaseDeclaration);
|
|
|
|
virtual void Visit(BfFieldDtorDeclaration* fieldDtorDeclaration);
|
|
|
|
virtual void Visit(BfTypeDeclaration* typeDeclaration);
|
|
|
|
virtual void Visit(BfTypeAliasDeclaration* typeDeclaration);
|
|
|
|
virtual void Visit(BfUsingDirective* usingDirective);
|
2020-10-14 11:33:41 -07:00
|
|
|
virtual void Visit(BfUsingModDirective* usingDirective);
|
2019-08-23 11:56:54 -07:00
|
|
|
virtual void Visit(BfNamespaceDeclaration* namespaceDeclaration);
|
|
|
|
virtual void Visit(BfBlock* block);
|
|
|
|
virtual void Visit(BfRootNode* rootNode);
|
|
|
|
virtual void Visit(BfInlineAsmStatement* asmStmt);
|
|
|
|
virtual void Visit(BfInlineAsmInstruction* asmInst);
|
|
|
|
};
|
|
|
|
|
|
|
|
NS_BF_END
|