// Copyright {Jagger Software Limited} 2003 #ifndef GRAMMAR_TOOLS_PARSEABLE_SOURCE_INCLUDED #define GRAMMAR_TOOLS_PARSEABLE_SOURCE_INCLUDED namespace grammar { class non_terminal_symbol_definition; class production_symbol_definition; class qualified_symbol_definition; class symbol_definition; class visitor; } namespace grammar_tools { template class parseable_source // <> { public: // 'tors parseable_source(iterator, iterator); public: // attributes iterator begin() const; iterator end() const; iterator position() const; public: // parsing virtual bool parse(const ::grammar::non_terminal_symbol_definition &, ::grammar::visitor &); virtual bool parse(const ::grammar::production_symbol_definition &, ::grammar::visitor &); virtual bool parse(const ::grammar::qualified_symbol_definition &, ::grammar::visitor &); virtual bool reposition(const ::grammar::symbol_definition &, iterator, iterator); protected: // implementation void position(iterator); private: // state const iterator from, until; iterator current_position; }; } #include "grammar_tools/parseable_source-template.hpp" #endif