/** ** \file ast/exp.hh ** \brief Declaration of ast::Exp. */ #pragma once #include #include namespace ast { /// Exp. class Exp : public Ast , public Typable { public: /** \name Ctor & dtor. ** \{ */ /// Construct an Exp node. explicit Exp(const Location& location); Exp(const Exp&) = delete; Exp& operator=(const Exp&) = delete; /// Destroy an Exp node. /** \} */ /// \name Visitors entry point. /// \{ */ /// Accept a const visitor \a v. void accept(ConstVisitor& v) const override = 0; /// Accept a non-const visitor \a v. void accept(Visitor& v) override = 0; /// \} /** \name Accessors. ** \{ */ /** \} */ protected: }; } // namespace ast #include