12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211 |
- #include "BfElementVisitor.h"
- USING_NS_BF;
- //////////////////////////////////////////////////////////////////////////
- BfElementVisitor::BfElementVisitor()
- {
-
- }
- void BfElementVisitor::Visit(BfTypedValueExpression* typedValueExpr)
- {
- Visit(typedValueExpr->ToBase());
- }
- void BfElementVisitor::Visit(BfCommentNode* commentNode)
- {
- Visit(commentNode->ToBase());
- }
- void BfElementVisitor::Visit(BfPreprocesorIgnoredSectionNode* preprocesorIgnoredSection)
- {
- Visit(preprocesorIgnoredSection->ToBase());
- }
- void BfElementVisitor::Visit(BfPreprocessorNode* preprocessorNode)
- {
- Visit(preprocessorNode->ToBase());
- VisitChild(preprocessorNode->mCommand);
- VisitChild(preprocessorNode->mArgument);
- }
- void BfElementVisitor::Visit(BfPreprocessorDefinedExpression* definedExpr)
- {
- Visit(definedExpr->ToBase());
- VisitChild(definedExpr->mIdentifier);
- }
- void BfElementVisitor::Visit(BfAttributeDirective* attributeDirective)
- {
- Visit(attributeDirective->ToBase());
- VisitChild(attributeDirective->mAttrOpenToken); // Either [ or ,
- VisitChild(attributeDirective->mAttrCloseToken);
- VisitChild(attributeDirective->mAttributeTargetSpecifier);
- VisitChild(attributeDirective->mAttributeTypeRef);
- VisitChild(attributeDirective->mCtorOpenParen);
- VisitChild(attributeDirective->mCtorCloseParen);
- for (auto& val : attributeDirective->mArguments)
- VisitChild(val);
- for (auto& val : attributeDirective->mCommas)
- VisitChild(val);
- VisitChild(attributeDirective->mNextAttribute);
- }
- void BfElementVisitor::Visit(BfGenericParamsDeclaration* genericParams)
- {
- Visit(genericParams->ToBase());
- VisitChild(genericParams->mOpenChevron);
- for (auto& val : genericParams->mGenericParams)
- VisitChild(val);
- for (auto& val : genericParams->mCommas)
- VisitChild(val);
- VisitChild(genericParams->mCloseChevron);
- }
- void BfElementVisitor::Visit(BfGenericOperatorConstraint* genericConstraints)
- {
- Visit(genericConstraints->ToBase());
- VisitChild(genericConstraints->mOperatorToken);
- VisitChild(genericConstraints->mLeftType);
- VisitChild(genericConstraints->mOpToken);
- VisitChild(genericConstraints->mRightType);
- }
- void BfElementVisitor::Visit(BfGenericConstraintsDeclaration* genericConstraints)
- {
- Visit(genericConstraints->ToBase());
- for (auto genericConstraint : genericConstraints->mGenericConstraints)
- {
- VisitChild(genericConstraint->mWhereToken);
- VisitChild(genericConstraint->mTypeRef);
- VisitChild(genericConstraint->mColonToken);
- for (auto val : genericConstraint->mConstraintTypes)
- VisitChild(val);
- for (auto val : genericConstraint->mCommas)
- VisitChild(val);
- }
- }
- void BfElementVisitor::Visit(BfGenericArgumentsNode* genericArgumentsNode)
- {
- Visit(genericArgumentsNode->ToBase());
- VisitChild(genericArgumentsNode->mOpenChevron);
- for (auto& val : genericArgumentsNode->mGenericArgs)
- VisitChild(val);
- for (auto& val : genericArgumentsNode->mCommas)
- VisitChild(val);
- VisitChild(genericArgumentsNode->mCloseChevron);
- }
- void BfElementVisitor::Visit(BfStatement* stmt)
- {
- Visit(stmt->ToBase());
- VisitChild(stmt->mTrailingSemicolon);
- }
- void BfElementVisitor::Visit(BfLabelableStatement* labelableStmt)
- {
- Visit(labelableStmt->ToBase());
- if (labelableStmt->mLabelNode != NULL)
- {
- VisitChild(labelableStmt->mLabelNode->mLabel);
- VisitChild(labelableStmt->mLabelNode->mColonToken);
- }
- }
- void BfElementVisitor::Visit(BfScopeNode* scopeNode)
- {
- Visit(scopeNode->ToBase());
- VisitChild(scopeNode->mScopeToken);
- VisitChild(scopeNode->mColonToken);
- VisitChild(scopeNode->mTargetNode);
- VisitChild(scopeNode->mAttributes);
- }
- void BfElementVisitor::Visit(BfNewNode* newNode)
- {
- Visit(newNode->ToBase());
- VisitChild(newNode->mNewToken);
- VisitChild(newNode->mColonToken);
- VisitChild(newNode->mAllocNode);
- VisitChild(newNode->mAttributes);
- }
- void BfElementVisitor::Visit(BfLabeledBlock* labeledBlock)
- {
- Visit(labeledBlock->ToBase());
-
- VisitChild(labeledBlock->mBlock);
- }
- void BfElementVisitor::Visit(BfExpression* expr)
- {
- Visit(expr->ToBase());
- }
- void BfElementVisitor::Visit(BfExpressionStatement* exprStmt)
- {
- Visit(exprStmt->ToBase());
- VisitChild(exprStmt->mExpression);
- }
- void BfElementVisitor::Visit(BfAttributedExpression* attribExpr)
- {
- Visit(attribExpr->ToBase());
- VisitChild(attribExpr->mAttributes);
- VisitChild(attribExpr->mExpression);
- }
- void BfElementVisitor::Visit(BfEmptyStatement* emptyStmt)
- {
- Visit(emptyStmt->ToBase());
- }
- void BfElementVisitor::Visit(BfTokenNode* tokenNode)
- {
- Visit(tokenNode->ToBase());
- }
- void BfElementVisitor::Visit(BfTokenPairNode* tokenPairNode)
- {
- Visit(tokenPairNode->ToBase());
- VisitChild(tokenPairNode->mLeft);
- VisitChild(tokenPairNode->mRight);
- }
- void BfElementVisitor::Visit(BfLiteralExpression* literalExpr)
- {
- Visit(literalExpr->ToBase());
- }
- void BfElementVisitor::Visit(BfIdentifierNode* identifierNode)
- {
- Visit(identifierNode->ToBase());
- }
- void BfElementVisitor::Visit(BfAttributedIdentifierNode * attrIdentifierNode)
- {
- Visit(attrIdentifierNode->ToBase());
- VisitChild(attrIdentifierNode->mAttributes);
- VisitChild(attrIdentifierNode->mIdentifier);
- }
- void BfElementVisitor::Visit(BfQualifiedNameNode* nameNode)
- {
- Visit(nameNode->ToBase());
- VisitChild(nameNode->mLeft);
- VisitChild(nameNode->mDot);
- VisitChild(nameNode->mRight);
- }
- void BfElementVisitor::Visit(BfThisExpression* thisExpr)
- {
- Visit(thisExpr->ToBase());
- }
- void BfElementVisitor::Visit(BfBaseExpression* baseExpr)
- {
- Visit(baseExpr->ToBase());
- }
- void BfElementVisitor::Visit(BfMixinExpression* mixinExpr)
- {
- Visit(mixinExpr->ToBase());
- }
- void BfElementVisitor::Visit(BfSizedArrayCreateExpression* createExpr)
- {
- Visit(createExpr->ToBase());
- VisitChild(createExpr->mTypeRef);
- VisitChild(createExpr->mInitializer);
- }
- void BfElementVisitor::Visit(BfCollectionInitializerExpression* collectionInitExpr)
- {
- Visit(collectionInitExpr->ToBase());
- VisitChild(collectionInitExpr->mOpenBrace);
- for (auto& val : collectionInitExpr->mValues)
- VisitChild(val);
- for (auto& val : collectionInitExpr->mCommas)
- VisitChild(val);
- VisitChild(collectionInitExpr->mCloseBrace);
- }
- void BfElementVisitor::Visit(BfArraySizeSpecifier* arraySizeSpecifier)
- {
- Visit(arraySizeSpecifier->ToBase());
- VisitChild(arraySizeSpecifier->mOpenToken);
- for (auto& val : arraySizeSpecifier->mArguments)
- VisitChild(val);
- for (auto& val : arraySizeSpecifier->mCommas)
- VisitChild(val);
- VisitChild(arraySizeSpecifier->mCloseToken);
- }
- void BfElementVisitor::Visit(BfTypeReference* typeRef)
- {
- Visit(typeRef->ToBase());
- }
- void BfElementVisitor::Visit(BfNamedTypeReference* typeRef)
- {
- Visit(typeRef->ToBase());
- VisitChild(typeRef->mNameNode);
- }
- void BfElementVisitor::Visit(BfQualifiedTypeReference* qualifiedTypeRef)
- {
- Visit(qualifiedTypeRef->ToBase());
-
- VisitChild(qualifiedTypeRef->mLeft);
- VisitChild(qualifiedTypeRef->mDot);
- VisitChild(qualifiedTypeRef->mRight);
- }
- void BfElementVisitor::Visit(BfDotTypeReference* typeRef)
- {
- Visit(typeRef->ToBase());
- VisitChild(typeRef->mDotToken);
- }
- void BfElementVisitor::Visit(BfVarTypeReference* typeRef)
- {
- Visit(typeRef->ToBase());
- VisitChild(typeRef->mVarToken);
- }
- void BfElementVisitor::Visit(BfVarRefTypeReference* typeRef)
- {
- Visit(typeRef->ToBase());
- VisitChild(typeRef->mVarToken);
- VisitChild(typeRef->mRefToken);
- }
- void BfElementVisitor::Visit(BfLetTypeReference* typeRef)
- {
- Visit(typeRef->ToBase());
- VisitChild(typeRef->mLetToken);
- }
- void BfElementVisitor::Visit(BfConstTypeRef* typeRef)
- {
- Visit((BfTypeReference*)typeRef); // Skip the Elemented part so we can put the element in the right spot
- VisitChild(typeRef->mConstToken);
- VisitChild(typeRef->mElementType);
- }
- void BfElementVisitor::Visit(BfConstExprTypeRef* typeRef)
- {
- Visit((BfTypeReference*)typeRef); // Skip the Elemented part so we can put the element in the right spot
- VisitChild(typeRef->mConstToken);
- VisitChild(typeRef->mConstExpr);
- }
- void BfElementVisitor::Visit(BfRefTypeRef* typeRef)
- {
- Visit((BfTypeReference*)typeRef); // Skip the Elemented part so we can put the element in the right spot
-
- VisitChild(typeRef->mRefToken);
- VisitChild(typeRef->mElementType);
- }
- void BfElementVisitor::Visit(BfRetTypeTypeRef * typeRef)
- {
- Visit((BfTypeReference*)typeRef); // Skip the Elemented part so we can put the element in the right spot
- VisitChild(typeRef->mRetTypeToken);
- VisitChild(typeRef->mOpenParen);
- VisitChild(typeRef->mElementType);
- VisitChild(typeRef->mCloseParen);
- }
- void BfElementVisitor::Visit(BfArrayTypeRef* typeRef)
- {
- Visit((BfTypeReference*)typeRef); // Skip the Elemented part so we can put the element in the right spot
-
- VisitChild(typeRef->mElementType);
- VisitChild(typeRef->mOpenBracket);
- for (auto& val : typeRef->mParams)
- VisitChild(val);
- VisitChild(typeRef->mCloseBracket);
- }
- void BfElementVisitor::Visit(BfGenericInstanceTypeRef* typeRef)
- {
- Visit(typeRef->ToBase());
- VisitChild(typeRef->mOpenChevron);
- for (auto& val : typeRef->mGenericArguments)
- VisitChild(val);
- if (typeRef->mCommas.mVals != NULL)
- {
- for (auto& val : typeRef->mCommas)
- VisitChild(val);
- }
- VisitChild(typeRef->mCloseChevron);
- }
- void BfElementVisitor::Visit(BfTupleTypeRef* typeRef)
- {
- Visit(typeRef->ToBase());
- VisitChild(typeRef->mOpenParen);
- for (auto& val : typeRef->mFieldNames)
- VisitChild(val);
- for (auto& val : typeRef->mFieldTypes)
- VisitChild(val);
- if (typeRef->mCommas.mVals != NULL)
- {
- for (auto& val : typeRef->mCommas)
- VisitChild(val);
- }
- VisitChild(typeRef->mCloseParen);
- }
- void BfElementVisitor::Visit(BfDeclTypeRef* typeRef)
- {
- Visit(typeRef->ToBase());
- VisitChild(typeRef->mToken);
- VisitChild(typeRef->mOpenParen);
- VisitChild(typeRef->mTarget);
- VisitChild(typeRef->mCloseParen);
- }
- void BfElementVisitor::Visit(BfDelegateTypeRef* typeRef)
- {
- Visit((BfTypeReference*)typeRef);
- VisitChild(typeRef->mTypeToken);
- VisitChild(typeRef->mReturnType);
- VisitChild(typeRef->mAttributes);
- VisitChild(typeRef->mOpenParen);
- for (auto& param : typeRef->mParams)
- VisitChild(param);
- for (auto& comma : typeRef->mCommas)
- VisitChild(comma);
- VisitChild(typeRef->mCloseParen);
- }
- void BfElementVisitor::Visit(BfPointerTypeRef* typeRef)
- {
- Visit((BfTypeReference*)typeRef); // Skip the Elemented part so we can put the element in the right spot
- VisitChild(typeRef->mElementType);
- VisitChild(typeRef->mStarNode);
- }
- void BfElementVisitor::Visit(BfNullableTypeRef* typeRef)
- {
- Visit((BfTypeReference*)typeRef); // Skip the Elemented part so we can put the element in the right spot
- VisitChild(typeRef->mElementType);
- VisitChild(typeRef->mQuestionToken);
- }
- void BfElementVisitor::Visit(BfVariableDeclaration* varDecl)
- {
- Visit(varDecl->ToBase());
- VisitChild(varDecl->mAttributes);
- VisitChild(varDecl->mModSpecifier);
- VisitChild(varDecl->mTypeRef);
- VisitChild(varDecl->mPrecedingComma);
- VisitChild(varDecl->mNameNode); // Either BfIdentifierNode or BfTupleExpression
- VisitChild(varDecl->mEqualsNode);
- VisitChild(varDecl->mInitializer);
- }
- void BfElementVisitor::Visit(BfLocalMethodDeclaration* methodDecl)
- {
- Visit(methodDecl->ToBase());
- VisitChild(methodDecl->mMethodDeclaration);
- }
- void BfElementVisitor::Visit(BfParameterDeclaration* paramDecl)
- {
- Visit(paramDecl->ToBase());
- VisitChild(paramDecl->mModToken); // 'Params'
- }
- void BfElementVisitor::Visit(BfParamsExpression* paramsExpr)
- {
- Visit(paramsExpr->ToBase());
- VisitChild(paramsExpr->mParamsToken);
- }
- void BfElementVisitor::Visit(BfTypeAttrExpression* typeAttrExpr)
- {
- Visit(typeAttrExpr->ToBase());
- VisitChild(typeAttrExpr->mToken);
- VisitChild(typeAttrExpr->mOpenParen);
- VisitChild(typeAttrExpr->mTypeRef);
- VisitChild(typeAttrExpr->mCloseParen);
- }
- void BfElementVisitor::Visit(BfDefaultExpression* defaultExpr)
- {
- Visit(defaultExpr->ToBase());
- VisitChild(defaultExpr->mDefaultToken);
- VisitChild(defaultExpr->mOpenParen);
- VisitChild(defaultExpr->mTypeRef);
- VisitChild(defaultExpr->mCloseParen);
- }
- void BfElementVisitor::Visit(BfUninitializedExpression* uninitializedExpr)
- {
- Visit(uninitializedExpr->ToBase());
- VisitChild(uninitializedExpr->mQuestionToken);
- }
- void BfElementVisitor::Visit(BfCheckTypeExpression* checkTypeExpr)
- {
- Visit(checkTypeExpr->ToBase());
- VisitChild(checkTypeExpr->mTarget);
- VisitChild(checkTypeExpr->mIsToken);
- VisitChild(checkTypeExpr->mTypeRef);
- }
- void BfElementVisitor::Visit(BfDynamicCastExpression* dynCastExpr)
- {
- Visit(dynCastExpr->ToBase());
- VisitChild(dynCastExpr->mTarget);
- VisitChild(dynCastExpr->mAsToken);
- VisitChild(dynCastExpr->mTypeRef);
- }
- void BfElementVisitor::Visit(BfCastExpression* castExpr)
- {
- Visit(castExpr->ToBase());
- VisitChild(castExpr->mOpenParen);
- VisitChild(castExpr->mTypeRef);
- VisitChild(castExpr->mCloseParen);
- }
- void BfElementVisitor::Visit(BfDelegateBindExpression* bindExpr)
- {
- Visit(bindExpr->ToBase());
- VisitChild(bindExpr->mNewToken);
- VisitChild(bindExpr->mFatArrowToken);
- VisitChild(bindExpr->mTarget);
- VisitChild(bindExpr->mGenericArgs);
- }
- void BfElementVisitor::Visit(BfLambdaBindExpression* lambdaBindExpr)
- {
- Visit(lambdaBindExpr->ToBase());
- VisitChild(lambdaBindExpr->mNewToken);
-
- VisitChild(lambdaBindExpr->mOpenParen);
- VisitChild(lambdaBindExpr->mCloseParen);
- for (auto& val : lambdaBindExpr->mParams)
- VisitChild(val);
- for (auto& val : lambdaBindExpr->mCommas)
- VisitChild(val);
- VisitChild(lambdaBindExpr->mFatArrowToken);
- VisitChild(lambdaBindExpr->mBody); // Either expression or block
-
- VisitChild(lambdaBindExpr->mDtor);
- }
- void BfElementVisitor::Visit(BfObjectCreateExpression* newExpr)
- {
- Visit(newExpr->ToBase());
- VisitChild(newExpr->mNewNode);
- VisitChild(newExpr->mStarToken);
- VisitChild(newExpr->mTypeRef);
- VisitChild(newExpr->mOpenToken);
- VisitChild(newExpr->mCloseToken);
- for (auto& val : newExpr->mArguments)
- VisitChild(val);
- for (auto& val : newExpr->mCommas)
- VisitChild(val);
- }
- void BfElementVisitor::Visit(BfBoxExpression* boxExpr)
- {
- Visit(boxExpr->ToBase());
- VisitChild(boxExpr->mAllocNode);
- VisitChild(boxExpr->mBoxToken);
- VisitChild(boxExpr->mExpression);
- }
- void BfElementVisitor::Visit(BfScopedInvocationTarget* scopedTarget)
- {
- Visit(scopedTarget->ToBase());
- VisitChild(scopedTarget->mTarget);
- VisitChild(scopedTarget->mColonToken);
- VisitChild(scopedTarget->mScopeName);
- }
- void BfElementVisitor::Visit(BfThrowStatement* throwStmt)
- {
- Visit(throwStmt->ToBase());
- VisitChild(throwStmt->mThrowToken);
- VisitChild(throwStmt->mExpression);
- }
- void BfElementVisitor::Visit(BfDeleteStatement* deleteStmt)
- {
- Visit(deleteStmt->ToBase());
-
- VisitChild(deleteStmt->mDeleteToken);
- VisitChild(deleteStmt->mTargetTypeToken);
- VisitChild(deleteStmt->mAllocExpr);
- VisitChild(deleteStmt->mExpression);
- }
- void BfElementVisitor::Visit(BfInvocationExpression* invocationExpr)
- {
- Visit(invocationExpr->ToBase());
- VisitChild(invocationExpr->mTarget);
- VisitChild(invocationExpr->mOpenParen);
- VisitChild(invocationExpr->mCloseParen);
- VisitChild(invocationExpr->mGenericArgs);
- for (auto& val : invocationExpr->mArguments)
- VisitChild(val);
- for (auto& val : invocationExpr->mCommas)
- VisitChild(val);
- }
- void BfElementVisitor::Visit(BfEnumCaseBindExpression* caseBindExpr)
- {
- Visit(caseBindExpr->ToBase());
- VisitChild(caseBindExpr->mBindToken);
- VisitChild(caseBindExpr->mEnumMemberExpr);
- VisitChild(caseBindExpr->mBindNames);
- }
- void BfElementVisitor::Visit(BfCaseExpression* caseExpr)
- {
- Visit(caseExpr->ToBase());
- VisitChild(caseExpr->mCaseToken);
- VisitChild(caseExpr->mCaseExpression);
- VisitChild(caseExpr->mEqualsNode);
- VisitChild(caseExpr->mValueExpression);
- }
- void BfElementVisitor::Visit(BfSwitchCase* switchCase)
- {
- Visit(switchCase->ToBase());
- VisitChild(switchCase->mCaseToken);
- for (auto& val : switchCase->mCaseExpressions)
- VisitChild(val);
- for (auto& val : switchCase->mCaseCommas)
- VisitChild(val);
- VisitChild(switchCase->mColonToken);
- VisitChild(switchCase->mCodeBlock);
- VisitChild(switchCase->mEndingToken);
- VisitChild(switchCase->mEndingSemicolonToken);
- }
- void BfElementVisitor::Visit(BfWhenExpression* whenExpr)
- {
- Visit(whenExpr->ToBase());
- VisitChild(whenExpr->mWhenToken);
- VisitChild(whenExpr->mExpression);
- }
- void BfElementVisitor::Visit(BfSwitchStatement* switchStmt)
- {
- Visit(switchStmt->ToBase());
- VisitChild(switchStmt->mSwitchToken);
- VisitChild(switchStmt->mOpenParen);
- VisitChild(switchStmt->mSwitchValue);
- VisitChild(switchStmt->mCloseParen);
- VisitChild(switchStmt->mOpenBrace);
- for (auto& val : switchStmt->mSwitchCases)
- VisitChild(val);
- VisitChild(switchStmt->mDefaultCase);
- VisitChild(switchStmt->mCloseBrace);
- }
- void BfElementVisitor::Visit(BfTryStatement* tryStmt)
- {
- Visit(tryStmt->ToBase());
- VisitChild(tryStmt->mTryToken);
- VisitChild(tryStmt->mStatement);
- }
- void BfElementVisitor::Visit(BfCatchStatement* catchStmt)
- {
- Visit(catchStmt->ToBase());
- VisitChild(catchStmt->mCatchToken);
- VisitChild(catchStmt->mStatement);
- }
- void BfElementVisitor::Visit(BfFinallyStatement* finallyStmt)
- {
- Visit(finallyStmt->ToBase());
- VisitChild(finallyStmt->mFinallyToken);
- VisitChild(finallyStmt->mStatement);
- }
- void BfElementVisitor::Visit(BfCheckedStatement* checkedStmt)
- {
- Visit(checkedStmt->ToBase());
- VisitChild(checkedStmt->mCheckedToken);
- VisitChild(checkedStmt->mStatement);
- }
- void BfElementVisitor::Visit(BfUncheckedStatement* uncheckedStmt)
- {
- Visit(uncheckedStmt->ToBase());
- VisitChild(uncheckedStmt->mUncheckedToken);
- VisitChild(uncheckedStmt->mStatement);
- }
- void BfElementVisitor::Visit(BfIfStatement* ifStmt)
- {
- Visit(ifStmt->ToBase());
- VisitChild(ifStmt->mIfToken);
- VisitChild(ifStmt->mOpenParen);
- VisitChild(ifStmt->mCondition);
- VisitChild(ifStmt->mCloseParen);
- VisitChild(ifStmt->mTrueStatement);
- VisitChild(ifStmt->mElseToken);
- VisitChild(ifStmt->mFalseStatement);
- }
- void BfElementVisitor::Visit(BfDeferStatement* deferStmt)
- {
- Visit(deferStmt->ToBase());
- VisitChild(deferStmt->mDeferToken);
- VisitChild(deferStmt->mColonToken);
- VisitChild(deferStmt->mScopeName);
- if (deferStmt->mBind != NULL)
- {
- auto bind = deferStmt->mBind;
-
- VisitChild(bind->mOpenBracket);
- VisitChild(bind->mCloseBracket);
- for (auto& val : bind->mParams)
- VisitChild(val);
- for (auto& val : bind->mCommas)
- VisitChild(val);
- }
- VisitChild(deferStmt->mOpenParen);
- VisitChild(deferStmt->mScopeToken);
- VisitChild(deferStmt->mCloseParen);
- VisitChild(deferStmt->mTargetNode);
- }
- void BfElementVisitor::Visit(BfReturnStatement* returnStmt)
- {
- Visit(returnStmt->ToBase());
- VisitChild(returnStmt->mReturnToken);
- VisitChild(returnStmt->mExpression);
- }
- void BfElementVisitor::Visit(BfYieldStatement* yieldStmt)
- {
- Visit(yieldStmt->ToBase());
- VisitChild(yieldStmt->mReturnOrBreakToken);
- VisitChild(yieldStmt->mExpression);
- }
- void BfElementVisitor::Visit(BfUsingStatement* usingStmt)
- {
- Visit(usingStmt->ToBase());
- VisitChild(usingStmt->mUsingToken);
- VisitChild(usingStmt->mOpenParen);
- VisitChild(usingStmt->mVariableDeclaration);
- VisitChild(usingStmt->mCloseParen);
- VisitChild(usingStmt->mEmbeddedStatement);
-
- }
- void BfElementVisitor::Visit(BfDoStatement* doStmt)
- {
- Visit(doStmt->ToBase());
- VisitChild(doStmt->mDoToken);
- VisitChild(doStmt->mEmbeddedStatement);
- }
- void BfElementVisitor::Visit(BfRepeatStatement* repeatStmt)
- {
- Visit(repeatStmt->ToBase());
- VisitChild(repeatStmt->mRepeatToken);
- VisitChild(repeatStmt->mEmbeddedStatement);
- VisitChild(repeatStmt->mWhileToken);
- VisitChild(repeatStmt->mOpenParen);
- VisitChild(repeatStmt->mCondition);
- VisitChild(repeatStmt->mCloseParen);
- }
- void BfElementVisitor::Visit(BfWhileStatement* whileStmt)
- {
- Visit(whileStmt->ToBase());
- VisitChild(whileStmt->mWhileToken);
- VisitChild(whileStmt->mOpenParen);
- VisitChild(whileStmt->mCondition);
- VisitChild(whileStmt->mCloseParen);
- VisitChild(whileStmt->mEmbeddedStatement);
- }
- void BfElementVisitor::Visit(BfBreakStatement* breakStmt)
- {
- Visit(breakStmt->ToBase());
- VisitChild(breakStmt->mBreakNode);
- VisitChild(breakStmt->mLabel);
- }
- void BfElementVisitor::Visit(BfContinueStatement* continueStmt)
- {
- Visit(continueStmt->ToBase());
- VisitChild(continueStmt->mContinueNode);
- VisitChild(continueStmt->mLabel);
- }
- void BfElementVisitor::Visit(BfFallthroughStatement* fallthroughStmt)
- {
- Visit(fallthroughStmt->ToBase());
- VisitChild(fallthroughStmt->mFallthroughToken);
- }
- void BfElementVisitor::Visit(BfForStatement* forStmt)
- {
- Visit(forStmt->ToBase());
- VisitChild(forStmt->mForToken);
- VisitChild(forStmt->mOpenParen);
- for (auto& val : forStmt->mInitializers)
- VisitChild(val);
- for (auto& val : forStmt->mInitializerCommas)
- VisitChild(val);
- VisitChild(forStmt->mInitializerSemicolon);
- VisitChild(forStmt->mCondition);
- VisitChild(forStmt->mConditionSemicolon);
- for (auto& val : forStmt->mIterators)
- VisitChild(val);
- for (auto& val : forStmt->mIteratorCommas)
- VisitChild(val);
- VisitChild(forStmt->mCloseParen);
- VisitChild(forStmt->mEmbeddedStatement);
- }
- void BfElementVisitor::Visit(BfForEachStatement* forEachStmt)
- {
- Visit(forEachStmt->ToBase());
- VisitChild(forEachStmt->mForToken);
- VisitChild(forEachStmt->mOpenParen);
- VisitChild(forEachStmt->mReadOnlyToken);
- VisitChild(forEachStmt->mVariableTypeRef);
- VisitChild(forEachStmt->mVariableName);
- VisitChild(forEachStmt->mInToken);
- VisitChild(forEachStmt->mCollectionExpression);
- VisitChild(forEachStmt->mCloseParen);
- VisitChild(forEachStmt->mEmbeddedStatement);
- }
- void BfElementVisitor::Visit(BfConditionalExpression* condExpr)
- {
- Visit(condExpr->ToBase());
- VisitChild(condExpr->mConditionExpression);
- VisitChild(condExpr->mQuestionToken);
- VisitChild(condExpr->mTrueExpression);
- VisitChild(condExpr->mColonToken);
- VisitChild(condExpr->mFalseExpression);
- }
- void BfElementVisitor::Visit(BfAssignmentExpression* assignExpr)
- {
- Visit(assignExpr->ToBase());
- VisitChild(assignExpr->mOpToken);
- VisitChild(assignExpr->mLeft);
- VisitChild(assignExpr->mRight);
- }
- void BfElementVisitor::Visit(BfParenthesizedExpression* parenExpr)
- {
- Visit(parenExpr->ToBase());
- VisitChild(parenExpr->mOpenParen);
- VisitChild(parenExpr->mExpression);
- VisitChild(parenExpr->mCloseParen);
- }
- void BfElementVisitor::Visit(BfTupleExpression* tupleExpr)
- {
- Visit(tupleExpr->ToBase());
- VisitChild(tupleExpr->mOpenParen);
- for (auto& val : tupleExpr->mNames)
- {
- if (val != NULL)
- {
- VisitChild(val->mNameNode);
- VisitChild(val->mColonToken);
- }
- }
- for (auto& val : tupleExpr->mValues)
- VisitChild(val);
- for (auto& val : tupleExpr->mCommas)
- VisitChild(val);
- VisitChild(tupleExpr->mCloseParen);
- }
- void BfElementVisitor::Visit(BfMemberReferenceExpression* memberRefExpr)
- {
- Visit(memberRefExpr->ToBase());
- VisitChild(memberRefExpr->mDotToken);
- VisitChild(memberRefExpr->mTarget);
- VisitChild(memberRefExpr->mMemberName);
- }
- void BfElementVisitor::Visit(BfIndexerExpression* indexerExpr)
- {
- Visit(indexerExpr->ToBase());
- VisitChild(indexerExpr->mTarget);
- VisitChild(indexerExpr->mOpenBracket);
- VisitChild(indexerExpr->mCloseBracket);
- for (auto& arg : indexerExpr->mArguments)
- VisitChild(arg);
- for (auto& comma : indexerExpr->mCommas)
- VisitChild(comma);
- }
- void BfElementVisitor::Visit(BfUnaryOperatorExpression* binOpExpr)
- {
- Visit(binOpExpr->ToBase());
- VisitChild(binOpExpr->mOpToken);
- VisitChild(binOpExpr->mExpression);
- }
- void BfElementVisitor::Visit(BfBinaryOperatorExpression* binOpExpr)
- {
- Visit(binOpExpr->ToBase());
- VisitChild(binOpExpr->mOpToken);
- VisitChild(binOpExpr->mLeft);
- VisitChild(binOpExpr->mRight);
- }
- void BfElementVisitor::Visit(BfConstructorDeclaration* ctorDeclaration)
- {
- Visit(ctorDeclaration->ToBase());
- VisitChild(ctorDeclaration->mThisToken);
- VisitChild(ctorDeclaration->mInitializerColonToken);
- VisitChild(ctorDeclaration->mInitializer);
- }
- void BfElementVisitor::Visit(BfDestructorDeclaration* dtorDeclaration)
- {
- Visit(dtorDeclaration->ToBase());
- VisitChild(dtorDeclaration->mTildeToken);
- VisitChild(dtorDeclaration->mThisToken);
- }
- void BfElementVisitor::Visit(BfMethodDeclaration* methodDeclaration)
- {
- Visit(methodDeclaration->ToBase());
- VisitChild(methodDeclaration->mAttributes);
- VisitChild(methodDeclaration->mInternalSpecifier);
- VisitChild(methodDeclaration->mProtectionSpecifier);
- VisitChild(methodDeclaration->mReadOnlySpecifier);
- VisitChild(methodDeclaration->mStaticSpecifier);
- VisitChild(methodDeclaration->mReturnAttributes);
- VisitChild(methodDeclaration->mExternSpecifier);
- VisitChild(methodDeclaration->mVirtualSpecifier); // either 'virtual', 'override', or 'abstract'
- VisitChild(methodDeclaration->mNewSpecifier);
- VisitChild(methodDeclaration->mMixinSpecifier);
- VisitChild(methodDeclaration->mPartialSpecifier);
- VisitChild(methodDeclaration->mMutSpecifier);
- VisitChild(methodDeclaration->mReturnType);
- VisitChild(methodDeclaration->mExplicitInterface);
- VisitChild(methodDeclaration->mExplicitInterfaceDotToken);
- VisitChild(methodDeclaration->mNameNode);
- VisitChild(methodDeclaration->mOpenParen);
- for (auto& param : methodDeclaration->mParams)
- VisitChild(param);
- for (auto& comma : methodDeclaration->mCommas)
- VisitChild(comma);
- VisitChild(methodDeclaration->mCloseParen);
- VisitChild(methodDeclaration->mGenericParams);
- VisitChild(methodDeclaration->mGenericConstraintsDeclaration);
- VisitChild(methodDeclaration->mEndSemicolon);
- VisitChild(methodDeclaration->mFatArrowToken);
- VisitChild(methodDeclaration->mBody);
- }
- void BfElementVisitor::Visit(BfOperatorDeclaration* operatorDeclaration)
- {
- Visit(operatorDeclaration->ToBase());
- VisitChild(operatorDeclaration->mExplicitToken);
- VisitChild(operatorDeclaration->mOperatorToken);
- VisitChild(operatorDeclaration->mOpTypeToken);
- }
- void BfElementVisitor::Visit(BfPropertyMethodDeclaration* propertyDeclaration)
- {
- Visit(propertyDeclaration->ToBase());
- VisitChild(propertyDeclaration->mAttributes);
- VisitChild(propertyDeclaration->mProtectionSpecifier);
- VisitChild(propertyDeclaration->mNameNode);
- VisitChild(propertyDeclaration->mMutSpecifier);
- VisitChild(propertyDeclaration->mBody);
- }
- void BfElementVisitor::Visit(BfPropertyBodyExpression* propertyBodyExpression)
- {
- Visit(propertyBodyExpression->ToBase());
- VisitChild(propertyBodyExpression->mFatTokenArrow);
- }
- void BfElementVisitor::Visit(BfPropertyDeclaration* propertyDeclaration)
- {
- Visit(propertyDeclaration->ToBase());
- VisitChild(propertyDeclaration->mAttributes);
- VisitChild(propertyDeclaration->mInternalSpecifier);
- VisitChild(propertyDeclaration->mProtectionSpecifier);
- VisitChild(propertyDeclaration->mStaticSpecifier);
- VisitChild(propertyDeclaration->mVirtualSpecifier); // either 'virtual', 'override', or 'abstract'
- VisitChild(propertyDeclaration->mExplicitInterface);
- VisitChild(propertyDeclaration->mExplicitInterfaceDotToken);
-
- if (auto block = BfNodeDynCast<BfBlock>(propertyDeclaration->mDefinitionBlock))
- {
- VisitChild(block->mOpenBrace);
- for (auto& method : propertyDeclaration->mMethods)
- VisitChild(method);
- VisitChild(block->mCloseBrace);
- }
- else
- {
- VisitChild(propertyDeclaration->mDefinitionBlock);
- for (auto& method : propertyDeclaration->mMethods)
- VisitChild(method);
- }
- }
- void BfElementVisitor::Visit(BfIndexerDeclaration* indexerDeclaration)
- {
- Visit(indexerDeclaration->ToBase());
- VisitChild(indexerDeclaration->mThisToken);
- VisitChild(indexerDeclaration->mOpenBracket);
- for (auto& param : indexerDeclaration->mParams)
- VisitChild(param);
- for (auto& comma : indexerDeclaration->mCommas)
- VisitChild(comma);
- VisitChild(indexerDeclaration->mCloseBracket);
- }
- void BfElementVisitor::Visit(BfFieldDeclaration* fieldDeclaration)
- {
- Visit(fieldDeclaration->ToBase());
- VisitChild(fieldDeclaration->mAttributes);
- VisitChild(fieldDeclaration->mInternalSpecifier);
- VisitChild(fieldDeclaration->mProtectionSpecifier);
- VisitChild(fieldDeclaration->mStaticSpecifier);
- VisitChild(fieldDeclaration->mPrecedingComma);
- VisitChild(fieldDeclaration->mConstSpecifier);
- VisitChild(fieldDeclaration->mReadOnlySpecifier);
- VisitChild(fieldDeclaration->mVolatileSpecifier);
- VisitChild(fieldDeclaration->mNewSpecifier);
- VisitChild(fieldDeclaration->mExternSpecifier);
- VisitChild(fieldDeclaration->mTypeRef);
- VisitChild(fieldDeclaration->mNameNode);
- VisitChild(fieldDeclaration->mEqualsNode);
- VisitChild(fieldDeclaration->mInitializer);
- VisitChild(fieldDeclaration->mFieldDtor);
- }
- void BfElementVisitor::Visit(BfEnumCaseDeclaration* enumCaseDeclaration)
- {
- Visit(enumCaseDeclaration->ToBase());
- VisitChild(enumCaseDeclaration->mCaseToken);
- for (auto& entry : enumCaseDeclaration->mEntries)
- VisitChild(entry);
- for (auto& comma : enumCaseDeclaration->mCommas)
- VisitChild(comma);
- }
- void BfElementVisitor::Visit(BfFieldDtorDeclaration* fieldDtorDeclaration)
- {
- Visit(fieldDtorDeclaration->ToBase());
- VisitChild(fieldDtorDeclaration->mTildeToken);
- VisitChild(fieldDtorDeclaration->mBody);
- VisitChild(fieldDtorDeclaration->mNextFieldDtor);
- }
- void BfElementVisitor::Visit(BfTypeDeclaration* typeDeclaration)
- {
- Visit(typeDeclaration->ToBase());
- VisitChild(typeDeclaration->mAttributes);
- VisitChild(typeDeclaration->mAbstractSpecifier);
- VisitChild(typeDeclaration->mSealedSpecifier);
- VisitChild(typeDeclaration->mInternalSpecifier);
- VisitChild(typeDeclaration->mProtectionSpecifier);
- VisitChild(typeDeclaration->mStaticSpecifier);
- VisitChild(typeDeclaration->mPartialSpecifier);
- VisitChild(typeDeclaration->mTypeNode);
- VisitChild(typeDeclaration->mNameNode);
- VisitChild(typeDeclaration->mColonToken);
- for (auto& baseClass : typeDeclaration->mBaseClasses)
- VisitChild(baseClass);
- for (auto& comma : typeDeclaration->mBaseClassCommas)
- VisitChild(comma);
- VisitChild(typeDeclaration->mGenericParams);
- VisitChild(typeDeclaration->mGenericConstraintsDeclaration);
- VisitChild(typeDeclaration->mDefineNode);
- /*if (typeDeclaration->mDefineBlock != NULL)
- {
- for (auto& member : *typeDeclaration->mDefineBlock)
- VisitChild(member);
- }*/
-
- }
- void BfElementVisitor::Visit(BfTypeAliasDeclaration* typeDeclaration)
- {
- Visit(typeDeclaration->ToBase());
- VisitChild(typeDeclaration->mEqualsToken);
- VisitChild(typeDeclaration->mAliasToType);
- VisitChild(typeDeclaration->mEndSemicolon);
- }
- void BfElementVisitor::Visit(BfUsingDirective* usingDirective)
- {
- Visit(usingDirective->ToBase());
- VisitChild(usingDirective->mUsingToken);
- VisitChild(usingDirective->mNamespace);
- }
- void BfElementVisitor::Visit(BfUsingStaticDirective * usingDirective)
- {
- Visit(usingDirective->ToBase());
- VisitChild(usingDirective->mUsingToken);
- VisitChild(usingDirective->mStaticToken);
- VisitChild(usingDirective->mTypeRef);
- }
- void BfElementVisitor::Visit(BfNamespaceDeclaration* namespaceDeclaration)
- {
- Visit(namespaceDeclaration->ToBase());
- VisitChild(namespaceDeclaration->mNamespaceNode);
- VisitChild(namespaceDeclaration->mNameNode);
- VisitChild(namespaceDeclaration->mBlock);
- }
- void BfElementVisitor::Visit(BfBlock* block)
- {
- Visit(block->ToBase());
- VisitChild(block->mOpenBrace);
- VisitMembers(block);
- VisitChild(block->mCloseBrace);
- }
- void BfElementVisitor::Visit(BfRootNode* rootNode)
- {
- Visit(rootNode->ToBase());
- VisitMembers(rootNode);
- }
- void BfElementVisitor::Visit(BfInlineAsmStatement* asmStmt)
- {
- Visit(asmStmt->ToBase());
- }
- void BfElementVisitor::Visit(BfInlineAsmInstruction* asmInst)
- {
- Visit(asmInst->ToBase());
- }
|