1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
#ifndef INC_PLUSNode_hpp__
#define INC_PLUSNode_hpp__
#include "BinaryOperatorAST.hpp"
/** A simple node to represent PLUS operation */
class PLUSNode : public BinaryOperatorAST {
public:
PLUSNode()
{
}
static ANTLR_USE_NAMESPACE(antlr)RefAST factory( void )
{
ANTLR_USE_NAMESPACE(antlr)RefAST ret(new PLUSNode());
return ret;
}
/** Compute value of subtree; this is heterogeneous part :) */
int value() const
{
return left()->value() + right()->value();
}
ANTLR_USE_NAMESPACE(std)string toString() const
{
return " +";
}
void initialize(int t, const ANTLR_USE_NAMESPACE(std)string& txt)
{
CalcAST::initialize(t, txt);
}
void initialize(ANTLR_USE_NAMESPACE(antlr)RefAST t)
{
CalcAST::initialize(t);
}
void initialize(ANTLR_USE_NAMESPACE(antlr)RefToken tok)
{
CalcAST::initialize(tok);
}
#ifdef ANTLR_SUPPORT_XML
virtual void initialize( ANTLR_USE_NAMESPACE(std)istream& in )
{
CalcAST::initialize(in);
}
#endif
ANTLR_USE_NAMESPACE(antlr)RefAST clone( void ) const
{
PLUSNode* ast = new PLUSNode(*this);
return ANTLR_USE_NAMESPACE(antlr)RefAST(ast);
}
};
#if (_MSC_VER == 1300 )
extern template class ANTLR_USE_NAMESPACE(antlr)ASTRefCount<PLUSNode>;
#endif
typedef ANTLR_USE_NAMESPACE(antlr)ASTRefCount<PLUSNode> RefPLUSNode;
#endif //INC_PLUSNode_hpp__
|