Bond 0.9
C++ Bond Runtime Library API Documentation
Loading...
Searching...
No Matches
Bond::ParseNodeTraverser Class Reference

A concrete implementation of ParseNodeVisitor that, in addition to visiting a ParseNode, does a depth-first traversal its children and visits them too. More...

#include <bond/compiler/parsenodetraverser.h>

Inheritance diagram for Bond::ParseNodeTraverser:
Bond::ParseNodeVisitor Bond::ParseNodeCounter

Public Member Functions

virtual ~ParseNodeTraverser ()
 
virtual void Traverse (ParseNode *parseNode)
 Checks if the given ParseNode is not null and calls its Accept method with this as the argument. More...
 
virtual void Traverse (const ParseNode *parseNode)
 Checks if the given ParseNode is not null and calls its Accept method with this as the argument. More...
 
virtual void TraverseList (ListParseNode *listNode)
 Iterates over the given list of ListParseNodes and calls the Accept method of each one with this as the argument. More...
 
virtual void TraverseList (const ListParseNode *listNode)
 Iterates over the given list of ListParseNodes and calls the Accept method of each one with this as the argument. More...
 
virtual void Visit (TranslationUnit *translationUnit) override
 
virtual void Visit (const TranslationUnit *translationUnit) override
 
virtual void Visit (IncludeDirective *includeDirective) override
 
virtual void Visit (const IncludeDirective *includeDirective) override
 
virtual void Visit (NamespaceDefinition *namespaceDefinition) override
 
virtual void Visit (const NamespaceDefinition *namespaceDefinition) override
 
virtual void Visit (NativeBlock *nativeBlock) override
 
virtual void Visit (const NativeBlock *nativeBlock) override
 
virtual void Visit (EnumDeclaration *enumDeclaration) override
 
virtual void Visit (const EnumDeclaration *enumDeclaration) override
 
virtual void Visit (Enumerator *enumerator) override
 
virtual void Visit (const Enumerator *enumerator) override
 
virtual void Visit (StructDeclaration *structDeclaration) override
 
virtual void Visit (const StructDeclaration *structDeclaration) override
 
virtual void Visit (FunctionDefinition *functionDefinition) override
 
virtual void Visit (const FunctionDefinition *functionDefinition) override
 
virtual void Visit (FunctionPrototype *functionPrototype) override
 
virtual void Visit (const FunctionPrototype *functionPrototype) override
 
virtual void Visit (Parameter *parameter) override
 
virtual void Visit (const Parameter *parameter) override
 
virtual void Visit (TypeDescriptor *typeDescriptor) override
 
virtual void Visit (const TypeDescriptor *typeDescriptor) override
 
virtual void Visit (TypeSpecifier *typeSpecifier) override
 
virtual void Visit (const TypeSpecifier *typeSpecifier) override
 
virtual void Visit (NamedInitializer *namedInitializer) override
 
virtual void Visit (const NamedInitializer *namedInitializer) override
 
virtual void Visit (Initializer *initializer) override
 
virtual void Visit (const Initializer *initializer) override
 
virtual void Visit (QualifiedIdentifier *identifier) override
 
virtual void Visit (const QualifiedIdentifier *identifier) override
 
virtual void Visit (CompoundStatement *compoundStatement) override
 
virtual void Visit (const CompoundStatement *compoundStatement) override
 
virtual void Visit (IfStatement *ifStatement) override
 
virtual void Visit (const IfStatement *ifStatement) override
 
virtual void Visit (SwitchStatement *switchStatement) override
 
virtual void Visit (const SwitchStatement *switchStatement) override
 
virtual void Visit (SwitchSection *switchSection) override
 
virtual void Visit (const SwitchSection *switchSection) override
 
virtual void Visit (SwitchLabel *switchLabel) override
 
virtual void Visit (const SwitchLabel *switchLabel) override
 
virtual void Visit (WhileStatement *whileStatement) override
 
virtual void Visit (const WhileStatement *whileStatement) override
 
virtual void Visit (ForStatement *forStatement) override
 
virtual void Visit (const ForStatement *forStatement) override
 
virtual void Visit (JumpStatement *jumpStatement) override
 
virtual void Visit (const JumpStatement *jumpStatement) override
 
virtual void Visit (DeclarativeStatement *declarativeStatement) override
 
virtual void Visit (const DeclarativeStatement *declarativeStatement) override
 
virtual void Visit (ExpressionStatement *expressionStatement) override
 
virtual void Visit (const ExpressionStatement *expressionStatement) override
 
virtual void Visit (ConditionalExpression *conditionalExpression) override
 
virtual void Visit (const ConditionalExpression *conditionalExpression) override
 
virtual void Visit (BinaryExpression *binaryExpression) override
 
virtual void Visit (const BinaryExpression *binaryExpression) override
 
virtual void Visit (UnaryExpression *unaryExpression) override
 
virtual void Visit (const UnaryExpression *unaryExpression) override
 
virtual void Visit (PostfixExpression *postfixExpression) override
 
virtual void Visit (const PostfixExpression *postfixExpression) override
 
virtual void Visit (MemberExpression *memberExpression) override
 
virtual void Visit (const MemberExpression *memberExpression) override
 
virtual void Visit (ArraySubscriptExpression *arraySubscriptExpression) override
 
virtual void Visit (const ArraySubscriptExpression *arraySubscriptExpression) override
 
virtual void Visit (FunctionCallExpression *functionCallExpression) override
 
virtual void Visit (const FunctionCallExpression *functionCallExpression) override
 
virtual void Visit (CastExpression *castExpression) override
 
virtual void Visit (const CastExpression *castExpression) override
 
virtual void Visit (PropertyofExpression *propertyofExpression) override
 
virtual void Visit (const PropertyofExpression *propertyofExpression) override
 
virtual void Visit (ConstantLiteralExpression *constantExpression) override
 
virtual void Visit (const ConstantLiteralExpression *constantExpression) override
 
virtual void Visit (IdentifierExpression *identifierExpression) override
 
virtual void Visit (const IdentifierExpression *identifierExpression) override
 
virtual void Visit (ThisExpression *thisExpression) override
 
virtual void Visit (const ThisExpression *thisExpression) override
 
virtual void Visit (EmptyExpression *emptyExpression) override
 
virtual void Visit (const EmptyExpression *emptyExpression) override
 
- Public Member Functions inherited from Bond::ParseNodeVisitor
virtual ~ParseNodeVisitor ()
 
virtual void Visit (TranslationUnit *translationUnit)=0
 
virtual void Visit (const TranslationUnit *translationUnit)=0
 
virtual void Visit (IncludeDirective *includeDirective)=0
 
virtual void Visit (const IncludeDirective *includeDirective)=0
 
virtual void Visit (NamespaceDefinition *namespaceDefinition)=0
 
virtual void Visit (const NamespaceDefinition *namespaceDefinition)=0
 
virtual void Visit (NativeBlock *nativeBlock)=0
 
virtual void Visit (const NativeBlock *nativeBlock)=0
 
virtual void Visit (EnumDeclaration *enumDeclaration)=0
 
virtual void Visit (const EnumDeclaration *enumDeclaration)=0
 
virtual void Visit (Enumerator *enumerator)=0
 
virtual void Visit (const Enumerator *enumerator)=0
 
virtual void Visit (StructDeclaration *structDeclaration)=0
 
virtual void Visit (const StructDeclaration *structDeclaration)=0
 
virtual void Visit (FunctionDefinition *functionDefinition)=0
 
virtual void Visit (const FunctionDefinition *functionDefinition)=0
 
virtual void Visit (FunctionPrototype *functionPrototype)=0
 
virtual void Visit (const FunctionPrototype *functionPrototype)=0
 
virtual void Visit (Parameter *parameter)=0
 
virtual void Visit (const Parameter *parameter)=0
 
virtual void Visit (TypeDescriptor *typeDescriptor)=0
 
virtual void Visit (const TypeDescriptor *typeDescriptor)=0
 
virtual void Visit (TypeSpecifier *typeSpecifier)=0
 
virtual void Visit (const TypeSpecifier *typeSpecifier)=0
 
virtual void Visit (NamedInitializer *namedInitializer)=0
 
virtual void Visit (const NamedInitializer *namedInitializer)=0
 
virtual void Visit (Initializer *initializer)=0
 
virtual void Visit (const Initializer *initializer)=0
 
virtual void Visit (QualifiedIdentifier *identifier)=0
 
virtual void Visit (const QualifiedIdentifier *identifier)=0
 
virtual void Visit (CompoundStatement *compoundStatement)=0
 
virtual void Visit (const CompoundStatement *compoundStatement)=0
 
virtual void Visit (IfStatement *ifStatement)=0
 
virtual void Visit (const IfStatement *ifStatement)=0
 
virtual void Visit (SwitchStatement *switchStatement)=0
 
virtual void Visit (const SwitchStatement *switchStatement)=0
 
virtual void Visit (SwitchSection *switchSection)=0
 
virtual void Visit (const SwitchSection *switchSection)=0
 
virtual void Visit (SwitchLabel *switchLabel)=0
 
virtual void Visit (const SwitchLabel *switchLabel)=0
 
virtual void Visit (WhileStatement *whileStatement)=0
 
virtual void Visit (const WhileStatement *whileStatement)=0
 
virtual void Visit (ForStatement *forStatement)=0
 
virtual void Visit (const ForStatement *forStatement)=0
 
virtual void Visit (JumpStatement *jumpStatement)=0
 
virtual void Visit (const JumpStatement *jumpStatement)=0
 
virtual void Visit (DeclarativeStatement *declarativeStatement)=0
 
virtual void Visit (const DeclarativeStatement *declarativeStatement)=0
 
virtual void Visit (ExpressionStatement *expressionStatement)=0
 
virtual void Visit (const ExpressionStatement *expressionStatement)=0
 
virtual void Visit (ConditionalExpression *conditionalExpression)=0
 
virtual void Visit (const ConditionalExpression *conditionalExpression)=0
 
virtual void Visit (BinaryExpression *binaryExpression)=0
 
virtual void Visit (const BinaryExpression *binaryExpression)=0
 
virtual void Visit (UnaryExpression *unaryExpression)=0
 
virtual void Visit (const UnaryExpression *unaryExpression)=0
 
virtual void Visit (PostfixExpression *postfixExpression)=0
 
virtual void Visit (const PostfixExpression *postfixExpression)=0
 
virtual void Visit (MemberExpression *memberExpression)=0
 
virtual void Visit (const MemberExpression *memberExpression)=0
 
virtual void Visit (ArraySubscriptExpression *arraySubscriptExpression)=0
 
virtual void Visit (const ArraySubscriptExpression *arraySubscriptExpression)=0
 
virtual void Visit (FunctionCallExpression *functionCallExpression)=0
 
virtual void Visit (const FunctionCallExpression *functionCallExpression)=0
 
virtual void Visit (CastExpression *castExpression)=0
 
virtual void Visit (const CastExpression *castExpression)=0
 
virtual void Visit (PropertyofExpression *propertyofExpression)=0
 
virtual void Visit (const PropertyofExpression *propertyofExpression)=0
 
virtual void Visit (ConstantLiteralExpression *constantExpression)=0
 
virtual void Visit (const ConstantLiteralExpression *constantExpression)=0
 
virtual void Visit (IdentifierExpression *identifierExpression)=0
 
virtual void Visit (const IdentifierExpression *identifierExpression)=0
 
virtual void Visit (ThisExpression *thisExpression)=0
 
virtual void Visit (const ThisExpression *thisExpression)=0
 
virtual void Visit (EmptyExpression *emptyExpression)=0
 
virtual void Visit (const EmptyExpression *emptyExpression)=0
 

Detailed Description

A concrete implementation of ParseNodeVisitor that, in addition to visiting a ParseNode, does a depth-first traversal its children and visits them too.

Since the traversal of a ParseNode's children is invoked from the Visit methods, if any of them are overridden, traversal of the node's children will not occur unless an overridden method calls the corresponding ParseNodeTraverser::Visit method. Traversal can be pre or post-order depending on whether the ParseNodeTraverser::Visit method is called at the beginning or end of the body of an overridden Visit method. For more complex traversal orders (e.g. in-order), traversal of the children may need to be reimplemented in the overridden Visit method instead of calling the base method.

See also
ParseNode, ParseNodeVisitorAdapter, ParseNodeTraverser

Constructor & Destructor Documentation

◆ ~ParseNodeTraverser()

virtual Bond::ParseNodeTraverser::~ParseNodeTraverser ( )
inlinevirtual

Member Function Documentation

◆ Traverse() [1/2]

virtual void Bond::ParseNodeTraverser::Traverse ( const ParseNode parseNode)
virtual

Checks if the given ParseNode is not null and calls its Accept method with this as the argument.

Parameters
parseNodeThe node whose Accept method is called.

◆ Traverse() [2/2]

virtual void Bond::ParseNodeTraverser::Traverse ( ParseNode parseNode)
virtual

Checks if the given ParseNode is not null and calls its Accept method with this as the argument.

Parameters
parseNodeThe node whose Accept method is called.

◆ TraverseList() [1/2]

virtual void Bond::ParseNodeTraverser::TraverseList ( const ListParseNode listNode)
virtual

Iterates over the given list of ListParseNodes and calls the Accept method of each one with this as the argument.

Parameters
listNodeThe node whose Accept method is called.

◆ TraverseList() [2/2]

virtual void Bond::ParseNodeTraverser::TraverseList ( ListParseNode listNode)
virtual

Iterates over the given list of ListParseNodes and calls the Accept method of each one with this as the argument.

Parameters
listNodeThe node whose Accept method is called.

◆ Visit() [1/76]

virtual void Bond::ParseNodeTraverser::Visit ( ArraySubscriptExpression arraySubscriptExpression)
overridevirtual

◆ Visit() [2/76]

virtual void Bond::ParseNodeTraverser::Visit ( BinaryExpression binaryExpression)
overridevirtual

◆ Visit() [3/76]

virtual void Bond::ParseNodeTraverser::Visit ( CastExpression castExpression)
overridevirtual

◆ Visit() [4/76]

virtual void Bond::ParseNodeTraverser::Visit ( CompoundStatement compoundStatement)
overridevirtual

◆ Visit() [5/76]

virtual void Bond::ParseNodeTraverser::Visit ( ConditionalExpression conditionalExpression)
overridevirtual

◆ Visit() [6/76]

virtual void Bond::ParseNodeTraverser::Visit ( const ArraySubscriptExpression arraySubscriptExpression)
overridevirtual

◆ Visit() [7/76]

virtual void Bond::ParseNodeTraverser::Visit ( const BinaryExpression binaryExpression)
overridevirtual

◆ Visit() [8/76]

virtual void Bond::ParseNodeTraverser::Visit ( const CastExpression castExpression)
overridevirtual

◆ Visit() [9/76]

virtual void Bond::ParseNodeTraverser::Visit ( const CompoundStatement compoundStatement)
overridevirtual

◆ Visit() [10/76]

virtual void Bond::ParseNodeTraverser::Visit ( const ConditionalExpression conditionalExpression)
overridevirtual

◆ Visit() [11/76]

virtual void Bond::ParseNodeTraverser::Visit ( const ConstantLiteralExpression constantExpression)
inlineoverridevirtual

◆ Visit() [12/76]

virtual void Bond::ParseNodeTraverser::Visit ( const DeclarativeStatement declarativeStatement)
overridevirtual

◆ Visit() [13/76]

virtual void Bond::ParseNodeTraverser::Visit ( const EmptyExpression emptyExpression)
inlineoverridevirtual

◆ Visit() [14/76]

virtual void Bond::ParseNodeTraverser::Visit ( const EnumDeclaration enumDeclaration)
overridevirtual

◆ Visit() [15/76]

virtual void Bond::ParseNodeTraverser::Visit ( const Enumerator enumerator)
overridevirtual

◆ Visit() [16/76]

virtual void Bond::ParseNodeTraverser::Visit ( const ExpressionStatement expressionStatement)
overridevirtual

◆ Visit() [17/76]

virtual void Bond::ParseNodeTraverser::Visit ( const ForStatement forStatement)
overridevirtual

◆ Visit() [18/76]

virtual void Bond::ParseNodeTraverser::Visit ( const FunctionCallExpression functionCallExpression)
overridevirtual

◆ Visit() [19/76]

virtual void Bond::ParseNodeTraverser::Visit ( const FunctionDefinition functionDefinition)
overridevirtual

◆ Visit() [20/76]

virtual void Bond::ParseNodeTraverser::Visit ( const FunctionPrototype functionPrototype)
overridevirtual

◆ Visit() [21/76]

virtual void Bond::ParseNodeTraverser::Visit ( const IdentifierExpression identifierExpression)
overridevirtual

◆ Visit() [22/76]

virtual void Bond::ParseNodeTraverser::Visit ( const IfStatement ifStatement)
overridevirtual

◆ Visit() [23/76]

virtual void Bond::ParseNodeTraverser::Visit ( const IncludeDirective includeDirective)
inlineoverridevirtual

◆ Visit() [24/76]

virtual void Bond::ParseNodeTraverser::Visit ( const Initializer initializer)
overridevirtual

◆ Visit() [25/76]

virtual void Bond::ParseNodeTraverser::Visit ( const JumpStatement jumpStatement)
overridevirtual

◆ Visit() [26/76]

virtual void Bond::ParseNodeTraverser::Visit ( const MemberExpression memberExpression)
overridevirtual

◆ Visit() [27/76]

virtual void Bond::ParseNodeTraverser::Visit ( const NamedInitializer namedInitializer)
overridevirtual

◆ Visit() [28/76]

virtual void Bond::ParseNodeTraverser::Visit ( const NamespaceDefinition namespaceDefinition)
overridevirtual

◆ Visit() [29/76]

virtual void Bond::ParseNodeTraverser::Visit ( const NativeBlock nativeBlock)
overridevirtual

◆ Visit() [30/76]

virtual void Bond::ParseNodeTraverser::Visit ( const Parameter parameter)
overridevirtual

◆ Visit() [31/76]

virtual void Bond::ParseNodeTraverser::Visit ( const PostfixExpression postfixExpression)
overridevirtual

◆ Visit() [32/76]

virtual void Bond::ParseNodeTraverser::Visit ( const PropertyofExpression propertyofExpression)
overridevirtual

◆ Visit() [33/76]

virtual void Bond::ParseNodeTraverser::Visit ( const QualifiedIdentifier identifier)
inlineoverridevirtual

◆ Visit() [34/76]

virtual void Bond::ParseNodeTraverser::Visit ( const StructDeclaration structDeclaration)
overridevirtual

◆ Visit() [35/76]

virtual void Bond::ParseNodeTraverser::Visit ( const SwitchLabel switchLabel)
overridevirtual

◆ Visit() [36/76]

virtual void Bond::ParseNodeTraverser::Visit ( const SwitchSection switchSection)
overridevirtual

◆ Visit() [37/76]

virtual void Bond::ParseNodeTraverser::Visit ( const SwitchStatement switchStatement)
overridevirtual

◆ Visit() [38/76]

virtual void Bond::ParseNodeTraverser::Visit ( const ThisExpression thisExpression)
inlineoverridevirtual

◆ Visit() [39/76]

virtual void Bond::ParseNodeTraverser::Visit ( const TranslationUnit translationUnit)
overridevirtual

◆ Visit() [40/76]

virtual void Bond::ParseNodeTraverser::Visit ( const TypeDescriptor typeDescriptor)
overridevirtual

◆ Visit() [41/76]

virtual void Bond::ParseNodeTraverser::Visit ( const TypeSpecifier typeSpecifier)
overridevirtual

◆ Visit() [42/76]

virtual void Bond::ParseNodeTraverser::Visit ( const UnaryExpression unaryExpression)
overridevirtual

◆ Visit() [43/76]

virtual void Bond::ParseNodeTraverser::Visit ( const WhileStatement whileStatement)
overridevirtual

◆ Visit() [44/76]

virtual void Bond::ParseNodeTraverser::Visit ( ConstantLiteralExpression constantExpression)
inlineoverridevirtual

◆ Visit() [45/76]

virtual void Bond::ParseNodeTraverser::Visit ( DeclarativeStatement declarativeStatement)
overridevirtual

◆ Visit() [46/76]

virtual void Bond::ParseNodeTraverser::Visit ( EmptyExpression emptyExpression)
inlineoverridevirtual

◆ Visit() [47/76]

virtual void Bond::ParseNodeTraverser::Visit ( EnumDeclaration enumDeclaration)
overridevirtual

◆ Visit() [48/76]

virtual void Bond::ParseNodeTraverser::Visit ( Enumerator enumerator)
overridevirtual

◆ Visit() [49/76]

virtual void Bond::ParseNodeTraverser::Visit ( ExpressionStatement expressionStatement)
overridevirtual

◆ Visit() [50/76]

virtual void Bond::ParseNodeTraverser::Visit ( ForStatement forStatement)
overridevirtual

◆ Visit() [51/76]

virtual void Bond::ParseNodeTraverser::Visit ( FunctionCallExpression functionCallExpression)
overridevirtual

◆ Visit() [52/76]

virtual void Bond::ParseNodeTraverser::Visit ( FunctionDefinition functionDefinition)
overridevirtual

◆ Visit() [53/76]

virtual void Bond::ParseNodeTraverser::Visit ( FunctionPrototype functionPrototype)
overridevirtual

◆ Visit() [54/76]

virtual void Bond::ParseNodeTraverser::Visit ( IdentifierExpression identifierExpression)
overridevirtual

◆ Visit() [55/76]

virtual void Bond::ParseNodeTraverser::Visit ( IfStatement ifStatement)
overridevirtual

◆ Visit() [56/76]

virtual void Bond::ParseNodeTraverser::Visit ( IncludeDirective includeDirective)
inlineoverridevirtual

◆ Visit() [57/76]

virtual void Bond::ParseNodeTraverser::Visit ( Initializer initializer)
overridevirtual

◆ Visit() [58/76]

virtual void Bond::ParseNodeTraverser::Visit ( JumpStatement jumpStatement)
overridevirtual

◆ Visit() [59/76]

virtual void Bond::ParseNodeTraverser::Visit ( MemberExpression memberExpression)
overridevirtual

◆ Visit() [60/76]

virtual void Bond::ParseNodeTraverser::Visit ( NamedInitializer namedInitializer)
overridevirtual

◆ Visit() [61/76]

virtual void Bond::ParseNodeTraverser::Visit ( NamespaceDefinition namespaceDefinition)
overridevirtual

◆ Visit() [62/76]

virtual void Bond::ParseNodeTraverser::Visit ( NativeBlock nativeBlock)
overridevirtual

◆ Visit() [63/76]

virtual void Bond::ParseNodeTraverser::Visit ( Parameter parameter)
overridevirtual

◆ Visit() [64/76]

virtual void Bond::ParseNodeTraverser::Visit ( PostfixExpression postfixExpression)
overridevirtual

◆ Visit() [65/76]

virtual void Bond::ParseNodeTraverser::Visit ( PropertyofExpression propertyofExpression)
overridevirtual

◆ Visit() [66/76]

virtual void Bond::ParseNodeTraverser::Visit ( QualifiedIdentifier identifier)
inlineoverridevirtual

◆ Visit() [67/76]

virtual void Bond::ParseNodeTraverser::Visit ( StructDeclaration structDeclaration)
overridevirtual

◆ Visit() [68/76]

virtual void Bond::ParseNodeTraverser::Visit ( SwitchLabel switchLabel)
overridevirtual

◆ Visit() [69/76]

virtual void Bond::ParseNodeTraverser::Visit ( SwitchSection switchSection)
overridevirtual

◆ Visit() [70/76]

virtual void Bond::ParseNodeTraverser::Visit ( SwitchStatement switchStatement)
overridevirtual

◆ Visit() [71/76]

virtual void Bond::ParseNodeTraverser::Visit ( ThisExpression thisExpression)
inlineoverridevirtual

◆ Visit() [72/76]

virtual void Bond::ParseNodeTraverser::Visit ( TranslationUnit translationUnit)
overridevirtual

◆ Visit() [73/76]

virtual void Bond::ParseNodeTraverser::Visit ( TypeDescriptor typeDescriptor)
overridevirtual

◆ Visit() [74/76]

virtual void Bond::ParseNodeTraverser::Visit ( TypeSpecifier typeSpecifier)
overridevirtual

◆ Visit() [75/76]

virtual void Bond::ParseNodeTraverser::Visit ( UnaryExpression unaryExpression)
overridevirtual

◆ Visit() [76/76]

virtual void Bond::ParseNodeTraverser::Visit ( WhileStatement whileStatement)
overridevirtual

The documentation for this class was generated from the following file: