00001 #ifndef AST_H 00002 #define AST_H 00003 #include "srcposition.h" 00004 #include "visitor.h" 00005 00006 00007 class Ast { 00008 protected: 00009 SrcPosition *position; 00010 public: 00011 Ast(SrcPosition *position); 00012 Ast(const Ast& ast); 00013 //Ast() {} 00014 00015 virtual ~Ast(); 00016 00017 SrcPosition *getPosition(); 00018 void setPosition(SrcPosition *position); 00019 00020 virtual Ast& operator = (const Ast& ast); 00021 virtual bool operator == (const Ast& ast) const; 00022 //ver a assinatura do visit depois... 00023 virtual VisitorReturn *visit(Visitor& visitor) = 0; 00024 virtual Ast& clone() const = 0; 00025 }; 00026 00027 #endif