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 SyntaxNodeclone ()=0
virtual bool endsWithGoto ()=0
virtual int evaluate (SyntaxNode *root)=0
virtual SyntaxNodefindNodeFor (PBB bb)=0
PBB getBB ()
SyntaxNodegetCorrespond ()
int getDepth ()
virtual SyntaxNodegetEnclosingLoop (SyntaxNode *pFor, SyntaxNode *cur=NULL)=0
virtual int getNumber ()
virtual int getNumOutEdges ()=0
virtual SyntaxNodegetOutEdge (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 SyntaxNodereplace (SyntaxNode *from, SyntaxNode *to)=0
void setBB (PBB bb)
void setDepth (int n)
virtual bool startsWith (SyntaxNode *node)
 SyntaxNode ()
virtual ~SyntaxNode ()

Protected Attributes

SyntaxNodecorrespond
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