// Copyright {Jagger Software Limited} 2003 #ifndef GRAMMAR_PRODUCTION_SYMBOL_DEFINITION_INCLUDED #define GRAMMAR_PRODUCTION_SYMBOL_DEFINITION_INCLUDED #include "container/bounded_vector.hpp" #include "grammar/symbol_definition.hpp" #include "grammar/qualified_symbol_definition.hpp" #include #include namespace grammar { class non_terminal_symbol_definition; class visitor; class production_symbol_definition // <> : public symbol_definition // <> { public: // 'tor production_symbol_definition(const key_type & key, const non_terminal_symbol_definition &, const qualified_symbol_definition *, const qualified_symbol_definition *); // compiler generated non-virtual d'tor ok public: // subscripting size_t size() const; const qualified_symbol_definition & operator[](size_t) const; public: // visiting virtual bool accept(visitor &) const; private: // streaming virtual void write(::std::ostream &) const; private: // validating void range_check(size_t at) const; private: // inappropriate production_symbol_definition(const production_symbol_definition &); void operator=(const production_symbol_definition &); private: // representation const ::container::bounded_vector symbols; }; } #endif