// Copyright {Jagger Software Limited} 2003 #ifndef GRAMMAR_SYMBOL_DEFINITION_INCLUDED #define GRAMMAR_SYMBOL_DEFINITION_INCLUDED #include "grammar/key_type.hpp" #include namespace grammar { class visitor; class symbol_definition // {abstract} { protected: // 'tors symbol_definition(const key_type &, const char *); // compiler generated copy c'tor ok // compiler generated non-virtual d'tor ok public: // attributes const key_type key; const char * const name; public: // visiting virtual bool accept(visitor &) const = 0; public: // streaming virtual void write(::std::ostream &) const = 0; }; // streaming ::std::ostream & operator<<(::std::ostream &, const symbol_definition &); } #endif