#ifndef VISITOR_HH
#define VISITOR_HH

#include "ast.hh"

namespace ast {

    class Visitor{
    protected:
	Visitor() {};
	virtual ~Visitor() {};

    public:	
	virtual void visit (BinRelLT  &lt) {};
	virtual void visit (BinRelLTE &lte) {};
	virtual void visit (BinRelGT  &gt) {};
	virtual void visit (BinRelGTE &gte) {};
	virtual void visit (BinRelEQ  &eq) {};
	virtual void visit (BinRelNEQ &neq) {};

	virtual void visit (RExpr     &rexpr) {};
	virtual void visit (WhenExpr  &when_expr) {};
	virtual void visit (WhereExpr &where_expr) {};

	virtual void visit (Range     &range) {};
	virtual void visit (Values    &values) {};
	virtual void visit (SimpleFun &simple_fun) {};

	virtual void visit (IDExpr      &id_expr) {};
	virtual void visit (IntegerExpr &integer_expr) {};
	virtual void visit (MatrixExpr  &matrix_expr) {};
	virtual void visit (FunCallExpr &fun_call_expr) {};
	virtual void visit (BinOpExpr   &binop_expr) {};
	virtual void visit (NEGExpr     &neg_expr) {};

	virtual void visit (RelBExpr &bexpr) {};
	virtual void visit (ANDBExpr &bexpr) {};
	virtual void visit (ORBExpr  &bexpr) {};
	virtual void visit (NOTBExpr &bexpr) {};
	virtual void visit (TrueExpr &bexpr) {};

	virtual void visit (Update   &update) {};

	virtual void visit (ValDeclaration    &val_decl) {};
	virtual void visit (FunDeclaration    &fun_decl) {};
	virtual void visit (MatrixDeclaration &matrix_decl) {};

	virtual void visit (DProg  &dprog) {};
    };

};

#endif //VISITOR_HH


syntax highlighted by Code2HTML, v. 0.9.1