00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef GRAMMAR_TO_PARSERPARSER_STRATEGY_H
00021 #define GRAMMAR_TO_PARSERPARSER_STRATEGY_H
00022
00023 #include <list>
00024
00025 namespace grammar_to_parser {
00026
00027
00035 template< typename E > class basic_parser;
00036
00037 template< typename E >
00038 class basic_parser_strategy
00039 {
00040 public:
00041 typedef grammar_to_parser::basic_parser<E> parser;
00042 typedef std::list< parser * > parser_list;
00043
00045 basic_parser_strategy()
00046 {};
00048 ~basic_parser_strategy()
00049 {};
00050
00055 virtual bool parse_all( typename parser_list::iterator first,
00056 typename parser_list::iterator last,
00057 const E *buf,
00058 const unsigned long buf_length,
00059 unsigned long &parsed_size ) = 0;
00064 virtual bool parse_choice( typename parser_list::iterator first,
00065 typename parser_list::iterator last,
00066 const E *buf,
00067 const unsigned long buf_length,
00068 unsigned long &parsed_size ) = 0;
00069
00070 };
00071
00072 typedef basic_parser_strategy<char> parser_strategy;
00073 typedef basic_parser_strategy<wchar_t> wparser_strategy;
00074
00075 };
00076
00077 #endif