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.
virtual void Traverse (const ParseNode *parseNode)
 Checks if the given ParseNode is not null and calls its Accept method with this as the argument.
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.
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.
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 ()

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:
  • include/bond/compiler/parsenodetraverser.h