Template Class AstCombinedTopDownBottomUpProcessing#

Inheritance Relationships#

Base Type#

Derived Types#

Class Documentation#

template<class InheritedAttributeType, class SynthesizedAttributeType>
class AstCombinedTopDownBottomUpProcessing : public AstTopDownBottomUpProcessing<std::vector<InheritedAttributeType>*, std::vector<SynthesizedAttributeType>*>#

Subclassed by AstSharedMemoryParallelTopDownBottomUpProcessing< InheritedAttributeType, SynthesizedAttributeType >, AstSharedMemoryParallelizableTopDownBottomUpProcessing< InheritedAttributeType, SynthesizedAttributeType >

Public Types

typedef AstTopDownBottomUpProcessing<InheritedAttributeType, SynthesizedAttributeType> TraversalType#
typedef TraversalType *TraversalPtr#
typedef std::vector<TraversalPtr> TraversalPtrList#
typedef std::vector<InheritedAttributeType> InheritedAttributeTypeList#
typedef std::vector<SynthesizedAttributeType> SynthesizedAttributeTypeList#
typedef AstTopDownBottomUpProcessing<std::vector<InheritedAttributeType>*, std::vector<SynthesizedAttributeType>*> Superclass#
typedef Superclass::SynthesizedAttributesList SynthesizedAttributesList#

Public Functions

AstCombinedTopDownBottomUpProcessing()#

default constructor

AstCombinedTopDownBottomUpProcessing(const TraversalPtrList&)#

constructor that makes an internal copy of an existing list of traversals

void addTraversal(TraversalPtr)#

simple function for adding a traversal to the internal list

TraversalPtrList &get_traversalPtrListRef()#

function for obtaining a reference to the internal list of traversals, you can use this for any container operations you like (deleting elements etc.)

Protected Functions

virtual InheritedAttributeTypeList *evaluateInheritedAttribute(SgNode *astNode, InheritedAttributeTypeList *inheritedValues)#

pure virtual function which must be implemented to compute the inherited attribute at a node

virtual SynthesizedAttributeTypeList *evaluateSynthesizedAttribute(SgNode *astNode, InheritedAttributeTypeList *inheritedValues, SynthesizedAttributesList synthesizedAttributes)#

pure virtual function which must be implemented to compute the synthesized attribute at a node. The list of synthesized attributes consists of the synthesized attributes computed at the children node of the current node. The inherited attribute value is computed by evaluateInheritedAttribute at the same node and simply passed to this function. Use the typedef SynthesizedAttributeList as type for the synthesized attributes list.

virtual SynthesizedAttributeTypeList *defaultSynthesizedAttribute(InheritedAttributeTypeList*)#
virtual void atTraversalStart()#

Function called at the start of the traversal, before any node is visited; override if necessary, the default implementation is a no-op.

virtual void atTraversalEnd()#

Protected Attributes

TraversalPtrList traversals#