// Auto generated on 11th April 2003 // Generator parameters: bootstrap meta_grammar // Generator author: Jon Jagger, {JSL} // URL http://www.jaggersoft.com // email jon@jaggersoft.com #ifndef BOOTSTRAP_META_GRAMMAR_INCLUDED #define BOOTSTRAP_META_GRAMMAR_INCLUDED #include "bootstrap/meta_grammar_visitor.hpp" #include "grammar/base.hpp" #include "grammar/non_terminal_symbol_definition.hpp" #include "grammar/production_symbol_definition.hpp" #include "grammar/predicate_symbol_definition.hpp" namespace bootstrap { class meta_grammar // <> : private ::grammar::base // {abstract} { public: // 'tors meta_grammar(); // compiler generated non-virtual d'tor ok static const meta_grammar & instance(); public: // associative look-up const ::grammar::non_terminal_symbol_definition * operator[](const char * name) const; public: // non-terminal data members ::grammar::non_terminal_symbol_definition grammar; ::grammar::non_terminal_symbol_definition grammar_section; ::grammar::non_terminal_symbol_definition comment; ::grammar::non_terminal_symbol_definition whitespace; ::grammar::non_terminal_symbol_definition new_line; ::grammar::non_terminal_symbol_definition non_terminal; ::grammar::non_terminal_symbol_definition productions; ::grammar::non_terminal_symbol_definition production; ::grammar::non_terminal_symbol_definition qualified_symbols; ::grammar::non_terminal_symbol_definition qualified_symbol; ::grammar::non_terminal_symbol_definition multiplicity; ::grammar::non_terminal_symbol_definition decimal_digits; ::grammar::non_terminal_symbol_definition symbol_name; ::grammar::non_terminal_symbol_definition terminal; ::grammar::non_terminal_symbol_definition none_of; ::grammar::non_terminal_symbol_definition one_of; ::grammar::non_terminal_symbol_definition predicate; ::grammar::non_terminal_symbol_definition terminal_characters; ::grammar::non_terminal_symbol_definition name_characters; private: // configuration void Configure_grammar(); void Configure_grammar_section(); void Configure_comment(); void Configure_whitespace(); void Configure_new_line(); void Configure_non_terminal(); void Configure_productions(); void Configure_production(); void Configure_qualified_symbols(); void Configure_qualified_symbol(); void Configure_multiplicity(); void Configure_decimal_digits(); void Configure_symbol_name(); void Configure_terminal(); void Configure_none_of(); void Configure_one_of(); void Configure_predicate(); void Configure_terminal_characters(); void Configure_name_characters(); private: // inappropriate meta_grammar(const meta_grammar &); void operator=(const meta_grammar &); }; } #endif