ROSE 0.11.145.147
Public Types | Public Member Functions | Protected Member Functions | List of all members
AstBottomUpProcessing< SynthesizedAttributeType > Class Template Referenceabstract

Description

template<class SynthesizedAttributeType>
class AstBottomUpProcessing< SynthesizedAttributeType >

Attribute Evaluator for synthesized attributes.

This class allows to compute synthesized attributes on the AST. It requires a synthesized attribute type as a template parameter and the implementation of the function evaluateSynthesizedAttribute. This function is invoked in post-order while the AST is traversed. It can be used for passing information up the AST and for computing a synthesized attribute at each node based on the results of its children in the AST.

Initialization of synthesized attributes is necessary for values which represent results of non-existent nodes (= null pointers in the AST) or skipped nodes (e.g. traverseWithingFile skips all nodes which do not represent the same file as from where the evaluation of attributes started).

  1. Class as synthesized attribute type. The default constructor is sufficient to initialize the object representing an attribute value.
  2. Primitive type as synthesized attribute type (e.g. int, bool, etc.). The method defaultSynthesizedAttribute must be implemented to initialize the synthesized attribute. This function is automatically called during attribute evaluation whenever necessary.

Definition at line 289 of file AstProcessing.h.

#include <AstProcessing.h>

Inheritance diagram for AstBottomUpProcessing< SynthesizedAttributeType >:
Inheritance graph
[legend]
Collaboration diagram for AstBottomUpProcessing< SynthesizedAttributeType >:
Collaboration graph
[legend]

Public Types

typedef SgTreeTraversal< DummyAttribute, SynthesizedAttributeType >::SynthesizedAttributesList SynthesizedAttributesList
 
typedef SynthesizedAttributesList SubTreeSynthesizedAttributes
 
- Public Types inherited from SgTreeTraversal< DummyAttribute, SynthesizedAttributeType >
typedef StackFrameVector< SynthesizedAttributeType > SynthesizedAttributesList
 

Public Member Functions

SynthesizedAttributeType traverse (SgNode *node)
 evaluates attributes on the entire AST
 
SynthesizedAttributeType traverseWithinFile (SgNode *node)
 evaluates attributes only at nodes which represent the same file as where the evaluation was started
 
void traverseInputFiles (SgProject *projectNode)
 evaluates attributes only at nodes which represent files which were specified on the command line (=input files).
 
- Public Member Functions inherited from SgTreeTraversal< DummyAttribute, SynthesizedAttributeType >
SynthesizedAttributeType traverse (SgNode *basenode, DummyAttribute inheritedValue, t_traverseOrder travOrder=preandpostorder)
 
SynthesizedAttributeType traverseWithinFile (SgNode *basenode, DummyAttribute inheritedValue, t_traverseOrder travOrder=preandpostorder)
 
void traverseInputFiles (SgProject *projectNode, DummyAttribute inheritedValue, t_traverseOrder travOrder=preandpostorder)
 
 SgTreeTraversal (const SgTreeTraversal &)
 
const SgTreeTraversaloperator= (const SgTreeTraversal &)
 

Protected Member Functions

virtual SynthesizedAttributeType evaluateSynthesizedAttribute (SgNode *, SynthesizedAttributesList)=0
 pure virtual function which must be implemented to compute the synthesized attribute at a node.
 
virtual SynthesizedAttributeType defaultSynthesizedAttribute ()
 Allows to provide a default value for a synthesized attribute of primitive type (e.g.
 
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 Member Functions inherited from SgTreeTraversal< DummyAttribute, SynthesizedAttributeType >
virtual SynthesizedAttributeType evaluateSynthesizedAttribute (SgNode *n, DummyAttribute in, SynthesizedAttributesList l)=0
 
virtual void setNodeSuccessors (SgNode *node, SuccessorsContainer &succContainer)
 
virtual SynthesizedAttributeType defaultSynthesizedAttribute (DummyAttribute inh)
 
void set_useDefaultIndexBasedTraversal (bool)
 

Additional Inherited Members

- Protected Types inherited from SgTreeTraversal< DummyAttribute, SynthesizedAttributeType >
typedef AstSuccessorsSelectors::SuccessorsContainer SuccessorsContainer
 
typedef SuccessorsContainer & SuccessorsContainerRef
 

Member Typedef Documentation

◆ SynthesizedAttributesList

template<class SynthesizedAttributeType >
typedef SgTreeTraversal<DummyAttribute,SynthesizedAttributeType>::SynthesizedAttributesList AstBottomUpProcessing< SynthesizedAttributeType >::SynthesizedAttributesList

Definition at line 294 of file AstProcessing.h.

◆ SubTreeSynthesizedAttributes

template<class SynthesizedAttributeType >
typedef SynthesizedAttributesList AstBottomUpProcessing< SynthesizedAttributeType >::SubTreeSynthesizedAttributes

Definition at line 297 of file AstProcessing.h.

Member Function Documentation

◆ traverse()

template<class SynthesizedAttributeType >
SynthesizedAttributeType AstBottomUpProcessing< SynthesizedAttributeType >::traverse ( SgNode node)

evaluates attributes on the entire AST

Definition at line 615 of file AstProcessing.h.

◆ traverseWithinFile()

template<class SynthesizedAttributeType >
SynthesizedAttributeType AstBottomUpProcessing< SynthesizedAttributeType >::traverseWithinFile ( SgNode node)

evaluates attributes only at nodes which represent the same file as where the evaluation was started

Definition at line 627 of file AstProcessing.h.

◆ traverseInputFiles()

template<class SynthesizedAttributeType >
void AstBottomUpProcessing< SynthesizedAttributeType >::traverseInputFiles ( SgProject projectNode)

evaluates attributes only at nodes which represent files which were specified on the command line (=input files).

Definition at line 638 of file AstProcessing.h.

◆ evaluateSynthesizedAttribute()

template<class SynthesizedAttributeType >
virtual SynthesizedAttributeType AstBottomUpProcessing< SynthesizedAttributeType >::evaluateSynthesizedAttribute ( SgNode ,
SynthesizedAttributesList   
)
protectedpure virtual

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 the function evaluateInheritedAttribute at the same node and simply passed to this function. Use the typedef SynthesizedAttributeList as type for the synthesized attributes list.

Implemented in ssa_unfiltered_cfg::DefsAndUsesTraversal, ssa_private::DefsAndUsesTraversal, ssa_private::UniqueNameTraversal, and AstNodePtrs.

◆ defaultSynthesizedAttribute()

template<class SynthesizedAttributeType >
SynthesizedAttributeType AstBottomUpProcessing< SynthesizedAttributeType >::defaultSynthesizedAttribute ( )
protectedvirtual

Allows to provide a default value for a synthesized attribute of primitive type (e.g.

int, bool, etc.). If a class is used as type for a synthesized attribute the default constructor of this class is sufficient and this function does not have be implemented.

Reimplemented in AstCombinedBottomUpProcessing< SynthesizedAttributeType >.

Definition at line 581 of file AstProcessing.h.

◆ atTraversalStart()

template<class SynthesizedAttributeType >
void AstBottomUpProcessing< SynthesizedAttributeType >::atTraversalStart ( )
protectedvirtual

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

Reimplemented from SgTreeTraversal< DummyAttribute, SynthesizedAttributeType >.

Reimplemented in AstCombinedBottomUpProcessing< SynthesizedAttributeType >.

Definition at line 958 of file AstProcessing.h.

◆ atTraversalEnd()

template<class SynthesizedAttributeType >
void AstBottomUpProcessing< SynthesizedAttributeType >::atTraversalEnd ( )
protectedvirtual

Reimplemented from SgTreeTraversal< DummyAttribute, SynthesizedAttributeType >.

Definition at line 965 of file AstProcessing.h.


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