SyntaxNode Class Reference

#include <include/hllcode.h>

Inheritance diagram for SyntaxNode:

BlockSyntaxNode IfThenElseSyntaxNode IfThenSyntaxNode InfiniteLoopSyntaxNode PostTestedLoopSyntaxNode PretestedLoopSyntaxNode List of all members.

Detailed Description

Definition at line 129 of file hllcode.h.

Public Member Functions

virtual void addSuccessors (SyntaxNode *root, std::vector< SyntaxNode * > &successors)
void addToScore (int n)
virtual SyntaxNode * clone ()=0
virtual bool endsWithGoto ()=0
virtual int evaluate (SyntaxNode *root)=0
virtual SyntaxNode * findNodeFor (PBB bb)=0
PBB getBB ()
SyntaxNode * getCorrespond ()
int getDepth ()
virtual SyntaxNode * getEnclosingLoop (SyntaxNode *pFor, SyntaxNode *cur=NULL)=0
virtual int getNumber ()
virtual int getNumOutEdges ()=0
virtual SyntaxNode * getOutEdge (SyntaxNode *root, int n)=0
int getScore ()
virtual void ignoreGoto ()
virtual bool isBlock ()
virtual bool isBranch ()
virtual bool isGoto ()
virtual void printAST (SyntaxNode *root, std::ostream &os)=0
virtual SyntaxNode * replace (SyntaxNode *from, SyntaxNode *to)=0
void setBB (PBB bb)
void setDepth (int n)
virtual bool startsWith (SyntaxNode *node)
 SyntaxNode ()
virtual ~SyntaxNode ()

Protected Attributes

SyntaxNode * correspond
int depth
int nodenum
bool notGoto
PBB pbb
int score


Constructor & Destructor Documentation

SyntaxNode::SyntaxNode (   ) 
 

Definition at line 25 of file syntax.cpp.

References nodecount, and nodenum.

SyntaxNode::~SyntaxNode (   )  [virtual]
 

Definition at line 31 of file syntax.cpp.


Member Function Documentation

virtual void SyntaxNode::addSuccessors (  SyntaxNode *  root,
std::vector< SyntaxNode * > &  successors
)  [inline, virtual]
 

Reimplemented in BlockSyntaxNode, IfThenSyntaxNode, IfThenElseSyntaxNode, PretestedLoopSyntaxNode, PostTestedLoopSyntaxNode, and InfiniteLoopSyntaxNode.

Definition at line 173 of file hllcode.h.

Referenced by IfThenSyntaxNode::addSuccessors().

void SyntaxNode::addToScore (  int  n  )  [inline]
 

Definition at line 162 of file hllcode.h.

References getScore(), and score.

virtual SyntaxNode* SyntaxNode::clone (   )  [pure virtual]
 

Implemented in BlockSyntaxNode, IfThenSyntaxNode, IfThenElseSyntaxNode, PretestedLoopSyntaxNode, PostTestedLoopSyntaxNode, and InfiniteLoopSyntaxNode.

Referenced by InfiniteLoopSyntaxNode::addSuccessors(), PostTestedLoopSyntaxNode::addSuccessors(), PretestedLoopSyntaxNode::addSuccessors(), IfThenElseSyntaxNode::addSuccessors(), BlockSyntaxNode::addSuccessors(), InfiniteLoopSyntaxNode::clone(), PostTestedLoopSyntaxNode::clone(), PretestedLoopSyntaxNode::clone(), IfThenElseSyntaxNode::clone(), and IfThenSyntaxNode::clone().

virtual bool SyntaxNode::endsWithGoto (   )  [pure virtual]
 

Implemented in BlockSyntaxNode, IfThenSyntaxNode, IfThenElseSyntaxNode, PretestedLoopSyntaxNode, PostTestedLoopSyntaxNode, and InfiniteLoopSyntaxNode.

Referenced by InfiniteLoopSyntaxNode::addSuccessors(), PostTestedLoopSyntaxNode::addSuccessors(), PretestedLoopSyntaxNode::addSuccessors(), and IfThenElseSyntaxNode::addSuccessors().

virtual int SyntaxNode::evaluate (  SyntaxNode *  root  )  [pure virtual]
 

Implemented in BlockSyntaxNode, IfThenSyntaxNode, IfThenElseSyntaxNode, PretestedLoopSyntaxNode, PostTestedLoopSyntaxNode, and InfiniteLoopSyntaxNode.

Referenced by InfiniteLoopSyntaxNode::evaluate(), PostTestedLoopSyntaxNode::evaluate(), PretestedLoopSyntaxNode::evaluate(), IfThenElseSyntaxNode::evaluate(), IfThenSyntaxNode::evaluate(), getScore(), and UserProc::printAST().

virtual SyntaxNode* SyntaxNode::findNodeFor (  PBB  bb  )  [pure virtual]
 

Implemented in BlockSyntaxNode, IfThenSyntaxNode, IfThenElseSyntaxNode, PretestedLoopSyntaxNode, PostTestedLoopSyntaxNode, and InfiniteLoopSyntaxNode.

Referenced by InfiniteLoopSyntaxNode::findNodeFor(), PostTestedLoopSyntaxNode::findNodeFor(), PretestedLoopSyntaxNode::findNodeFor(), IfThenElseSyntaxNode::findNodeFor(), IfThenSyntaxNode::findNodeFor(), PostTestedLoopSyntaxNode::getOutEdge(), PretestedLoopSyntaxNode::getOutEdge(), IfThenSyntaxNode::getOutEdge(), BlockSyntaxNode::getOutEdge(), and IfThenSyntaxNode::printAST().

PBB SyntaxNode::getBB (   )  [inline]
 

Definition at line 150 of file hllcode.h.

References pbb.

SyntaxNode* SyntaxNode::getCorrespond (   )  [inline]
 

Definition at line 168 of file hllcode.h.

References correspond.

Referenced by InfiniteLoopSyntaxNode::replace(), PostTestedLoopSyntaxNode::replace(), PretestedLoopSyntaxNode::replace(), IfThenElseSyntaxNode::replace(), IfThenSyntaxNode::replace(), and BlockSyntaxNode::replace().

int SyntaxNode::getDepth (   )  [inline]
 

Definition at line 164 of file hllcode.h.

References depth.

Referenced by PretestedLoopSyntaxNode::addSuccessors(), IfThenElseSyntaxNode::addSuccessors(), and BlockSyntaxNode::addSuccessors().

virtual SyntaxNode* SyntaxNode::getEnclosingLoop (  SyntaxNode *  pFor,
SyntaxNode *  cur = NULL
)  [pure virtual]
 

Implemented in BlockSyntaxNode, IfThenSyntaxNode, IfThenElseSyntaxNode, PretestedLoopSyntaxNode, PostTestedLoopSyntaxNode, and InfiniteLoopSyntaxNode.

Referenced by InfiniteLoopSyntaxNode::getEnclosingLoop(), PostTestedLoopSyntaxNode::getEnclosingLoop(), PretestedLoopSyntaxNode::getEnclosingLoop(), IfThenElseSyntaxNode::getEnclosingLoop(), and IfThenSyntaxNode::getEnclosingLoop().

virtual int SyntaxNode::getNumber (   )  [inline, virtual]
 

Definition at line 148 of file hllcode.h.

References nodenum.

Referenced by InfiniteLoopSyntaxNode::printAST(), PostTestedLoopSyntaxNode::printAST(), PretestedLoopSyntaxNode::printAST(), IfThenElseSyntaxNode::printAST(), and IfThenSyntaxNode::printAST().

virtual int SyntaxNode::getNumOutEdges (   )  [pure virtual]
 

Implemented in BlockSyntaxNode, IfThenSyntaxNode, IfThenElseSyntaxNode, PretestedLoopSyntaxNode, PostTestedLoopSyntaxNode, and InfiniteLoopSyntaxNode.

Referenced by InfiniteLoopSyntaxNode::addSuccessors(), PostTestedLoopSyntaxNode::addSuccessors(), PretestedLoopSyntaxNode::addSuccessors(), and IfThenElseSyntaxNode::addSuccessors().

virtual SyntaxNode* SyntaxNode::getOutEdge (  SyntaxNode *  root,
int  n
)  [pure virtual]
 

Implemented in BlockSyntaxNode, IfThenSyntaxNode, IfThenElseSyntaxNode, PretestedLoopSyntaxNode, PostTestedLoopSyntaxNode, and InfiniteLoopSyntaxNode.

Referenced by InfiniteLoopSyntaxNode::addSuccessors(), PostTestedLoopSyntaxNode::addSuccessors(), PretestedLoopSyntaxNode::addSuccessors(), and IfThenElseSyntaxNode::getOutEdge().

int SyntaxNode::getScore (   ) 
 

Definition at line 35 of file syntax.cpp.

References evaluate(), and score.

Referenced by addToScore().

virtual void SyntaxNode::ignoreGoto (   )  [inline, virtual]
 

Reimplemented in BlockSyntaxNode.

Definition at line 146 of file hllcode.h.

Referenced by InfiniteLoopSyntaxNode::addSuccessors(), PostTestedLoopSyntaxNode::addSuccessors(), PretestedLoopSyntaxNode::addSuccessors(), and IfThenElseSyntaxNode::addSuccessors().

virtual bool SyntaxNode::isBlock (   )  [inline, virtual]
 

Reimplemented in BlockSyntaxNode.

Definition at line 142 of file hllcode.h.

bool SyntaxNode::isBranch (   )  [virtual]
 

Reimplemented in IfThenSyntaxNode, IfThenElseSyntaxNode, PretestedLoopSyntaxNode, PostTestedLoopSyntaxNode, and InfiniteLoopSyntaxNode.

Definition at line 47 of file syntax.cpp.

References BasicBlock::getType(), pbb, and TWOWAY.

bool SyntaxNode::isGoto (   )  [virtual]
 

Reimplemented in IfThenSyntaxNode, IfThenElseSyntaxNode, PretestedLoopSyntaxNode, PostTestedLoopSyntaxNode, and InfiniteLoopSyntaxNode.

Definition at line 42 of file syntax.cpp.

References BasicBlock::getType(), notGoto, ONEWAY, and pbb.

Referenced by BlockSyntaxNode::endsWithGoto().

virtual void SyntaxNode::printAST (  SyntaxNode *  root,
std::ostream &  os
)  [pure virtual]
 

Implemented in BlockSyntaxNode, IfThenSyntaxNode, IfThenElseSyntaxNode, PretestedLoopSyntaxNode, PostTestedLoopSyntaxNode, and InfiniteLoopSyntaxNode.

Referenced by InfiniteLoopSyntaxNode::printAST(), PostTestedLoopSyntaxNode::printAST(), PretestedLoopSyntaxNode::printAST(), IfThenElseSyntaxNode::printAST(), IfThenSyntaxNode::printAST(), and UserProc::printAST().

virtual SyntaxNode* SyntaxNode::replace (  SyntaxNode *  from,
SyntaxNode *  to
)  [pure virtual]
 

Implemented in BlockSyntaxNode, IfThenSyntaxNode, IfThenElseSyntaxNode, PretestedLoopSyntaxNode, PostTestedLoopSyntaxNode, and InfiniteLoopSyntaxNode.

Referenced by IfThenElseSyntaxNode::addSuccessors(), and BlockSyntaxNode::addSuccessors().

void SyntaxNode::setBB (  PBB  bb  )  [inline]
 

Definition at line 151 of file hllcode.h.

References pbb.

void SyntaxNode::setDepth (  int  n  )  [inline]
 

Definition at line 163 of file hllcode.h.

References depth.

Referenced by InfiniteLoopSyntaxNode::addSuccessors(), PostTestedLoopSyntaxNode::addSuccessors(), PretestedLoopSyntaxNode::addSuccessors(), IfThenElseSyntaxNode::addSuccessors(), and BlockSyntaxNode::addSuccessors().

virtual bool SyntaxNode::startsWith (  SyntaxNode *  node  )  [inline, virtual]
 

Reimplemented in BlockSyntaxNode.

Definition at line 156 of file hllcode.h.

Referenced by PretestedLoopSyntaxNode::addSuccessors().


Member Data Documentation

SyntaxNode* SyntaxNode::correspond [protected]
 

Definition at line 134 of file hllcode.h.

Referenced by InfiniteLoopSyntaxNode::clone(), PostTestedLoopSyntaxNode::clone(), PretestedLoopSyntaxNode::clone(), IfThenElseSyntaxNode::clone(), IfThenSyntaxNode::clone(), BlockSyntaxNode::clone(), getCorrespond(), InfiniteLoopSyntaxNode::replace(), PostTestedLoopSyntaxNode::replace(), PretestedLoopSyntaxNode::replace(), IfThenElseSyntaxNode::replace(), IfThenSyntaxNode::replace(), and BlockSyntaxNode::replace().

int SyntaxNode::depth [protected]
 

Definition at line 136 of file hllcode.h.

Referenced by getDepth(), and setDepth().

int SyntaxNode::nodenum [protected]
 

Definition at line 132 of file hllcode.h.

Referenced by getNumber(), BlockSyntaxNode::printAST(), and SyntaxNode().

bool SyntaxNode::notGoto [protected]
 

Definition at line 135 of file hllcode.h.

Referenced by BlockSyntaxNode::ignoreGoto(), isGoto(), and BlockSyntaxNode::printAST().

PBB SyntaxNode::pbb [protected]
 

Definition at line 131 of file hllcode.h.

Referenced by BlockSyntaxNode::addStatement(), InfiniteLoopSyntaxNode::clone(), PostTestedLoopSyntaxNode::clone(), PretestedLoopSyntaxNode::clone(), IfThenElseSyntaxNode::clone(), IfThenSyntaxNode::clone(), BlockSyntaxNode::clone(), BlockSyntaxNode::endsWithGoto(), BlockSyntaxNode::evaluate(), InfiniteLoopSyntaxNode::findNodeFor(), PostTestedLoopSyntaxNode::findNodeFor(), PretestedLoopSyntaxNode::findNodeFor(), IfThenElseSyntaxNode::findNodeFor(), IfThenSyntaxNode::findNodeFor(), BlockSyntaxNode::findNodeFor(), getBB(), BlockSyntaxNode::getNumOutEdges(), BlockSyntaxNode::getNumStatements(), PostTestedLoopSyntaxNode::getOutEdge(), PretestedLoopSyntaxNode::getOutEdge(), IfThenSyntaxNode::getOutEdge(), BlockSyntaxNode::getOutEdge(), BlockSyntaxNode::getStatement(), BlockSyntaxNode::ignoreGoto(), BlockSyntaxNode::isBlock(), isBranch(), isGoto(), BlockSyntaxNode::prependStatement(), IfThenSyntaxNode::printAST(), BlockSyntaxNode::printAST(), BlockSyntaxNode::replace(), setBB(), and BlockSyntaxNode::setStatement().

int SyntaxNode::score [protected]
 

Definition at line 133 of file hllcode.h.

Referenced by addToScore(), and getScore().


The documentation for this class was generated from the following files:
Generated on Tue Sep 19 21:18:46 2006 for Boomerang by  doxygen 1.4.6