00001
#ifndef INC_BaseAST_hpp__
00002
#define INC_BaseAST_hpp__
00003
00004
00005
00006
00007
00008
00009
00010
00011
#include <antlr/config.hpp>
00012
#include <antlr/AST.hpp>
00013
00014
#ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
00015
namespace antlr {
00016
#endif
00017
00018 class ANTLR_API BaseAST;
00019 typedef ASTRefCount<BaseAST> RefBaseAST;
00020
00021 class ANTLR_API BaseAST :
public AST {
00022
public:
00023
BaseAST();
00024
BaseAST(
const BaseAST& other);
00025
00026
virtual ~
BaseAST();
00027
00029
virtual const char* typeName(
void )
const;
00030
00032
virtual RefAST clone(
void )
const;
00033
00035
virtual bool equals(
RefAST t)
const;
00036
00040
virtual bool equalsList(
RefAST t)
const;
00041
00044
virtual bool equalsListPartial(
RefAST t)
const;
00045
00049
virtual bool equalsTree(
RefAST t)
const;
00050
00054
virtual bool equalsTreePartial(
RefAST t)
const;
00055
00060
virtual ANTLR_USE_NAMESPACE(std)vector<RefAST> findAll(
RefAST t);
00061
00066
virtual ANTLR_USE_NAMESPACE(std)vector<RefAST> findAllPartial(
RefAST t);
00067
00069
virtual void addChild(
RefAST c);
00071 virtual RefAST getFirstChild()
const
00072
{
00073
return RefAST(down);
00074 }
00076 virtual RefAST getNextSibling()
const
00077
{
00078
return RefAST(right);
00079 }
00080
00082 virtual ANTLR_USE_NAMESPACE(std)string getText()
const
00083
{
00084
return "";
00085 }
00087 virtual int getType()
const
00088
{
00089
return 0;
00090 }
00091
00093 virtual void removeChildren()
00094 {
00095 down = static_cast<BaseAST*>(static_cast<AST*>(
nullAST));
00096 }
00097
00099 virtual void setFirstChild(
RefAST c)
00100 {
00101 down = static_cast<BaseAST*>(static_cast<AST*>(c));
00102 }
00103
00105 void setNextSibling(
RefAST n)
00106 {
00107 right = static_cast<BaseAST*>(static_cast<AST*>(n));
00108 }
00109
00111
virtual void setText(
const ANTLR_USE_NAMESPACE(std)string& txt);
00112
00114
virtual void setType(
int type);
00115
00116
#ifdef ANTLR_SUPPORT_XML
00117
00121
virtual bool attributesToStream(
ANTLR_USE_NAMESPACE(std)ostream& out )
const;
00126
virtual void toStream(
ANTLR_USE_NAMESPACE(std)ostream &out )
const;
00127
#endif
00128
00130
virtual ANTLR_USE_NAMESPACE(std)string toString() const;
00131
00133 virtual ANTLR_USE_NAMESPACE(std)string toStringList() const;
00134 virtual ANTLR_USE_NAMESPACE(std)string toStringTree() const;
00135
00136 protected:
00137 RefBaseAST down;
00138 RefBaseAST right;
00139 private:
00140
void doWorkForFindAll(ANTLR_USE_NAMESPACE(std)vector<
RefAST>& v,
00141
RefAST target,
00142
bool partialMatch);
00143 };
00144
00147 inline
bool BaseAST::equals(
RefAST t)
const
00148
{
00149
if (!t)
00150
return false;
00151
return ((getType() == t->getType()) && (getText() == t->getText()));
00152 }
00153
00154
#ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
00155
}
00156
#endif
00157
00158
#endif //INC_BaseAST_hpp__