// file : CCF/IDL3/Parser.hpp // author : Boris Kolpackov // cvs-id : $Id$ #ifndef CCF_IDL3_PARSER_HPP #define CCF_IDL3_PARSER_HPP #include "CCF/IDL2/Parser.hpp" #include "CCF/IDL3/LexicalAnalyzer.hpp" #include "CCF/IDL3/SemanticAction.hpp" namespace CCF { namespace IDL3 { using IDL2::ActionExecutor; using IDL2::NoArgAction; using IDL2::OneArgAction; using IDL2::TwoArgAction; class Parser : public virtual IDL2::Parser { protected: // // Primitives (alphabetic order). // KeywordParser COMPONENT; KeywordParser CONSUMES; KeywordParser EMITS; KeywordParser EVENTTYPE; KeywordParser HOME; KeywordParser FINDER; KeywordParser MANAGES; KeywordParser MULTIPLE; KeywordParser PROVIDES; KeywordParser PUBLISHES; KeywordParser USES; // // Language // Rule extension; // component // Rule component_decl; Rule component_inheritance_spec; Rule component_support_spec; Rule component_body; Rule provides_decl; Rule uses_decl; Rule emits_decl; Rule publishes_decl; Rule consumes_decl; // eventtype // Rule abstract_event_type_decl; Rule concrete_event_type_decl; Rule event_type_inheritance_spec; Rule event_type_supports_spec; Rule event_type_body; Rule event_type_factory_decl; Rule event_type_factory_parameter_list; Rule event_type_factory_parameter; Rule event_type_factory_raises_list; // home // Rule home_decl; Rule home_inheritance_spec; Rule home_support_spec; Rule home_body; Rule home_factory_decl; Rule home_factory_parameter_list; Rule home_factory_parameter; Rule home_factory_raises_list; Rule home_finder_decl; Rule home_finder_parameter_list; Rule home_finder_parameter; Rule home_finder_raises_list; public: Parser (CompilerElements::Context& context, Diagnostic::Stream& dout, LexicalAnalyzer const& l, SemanticAction::Factory& f); protected: // Component // OneArgAction act_component_begin_def, act_component_begin_fwd; OneArgAction act_component_inherits; OneArgAction act_component_supports; ScopeAction act_component_open_scope; ScopeAction act_component_close_scope; NoArgAction act_component_end; // Provides // OneArgAction act_provides_type; OneArgAction act_provides_name; // Uses // NoArgAction act_uses_multiple; OneArgAction act_uses_type; OneArgAction act_uses_name; // Publishes // OneArgAction act_publishes_type; OneArgAction act_publishes_name; // Emits // OneArgAction act_emits_type; OneArgAction act_emits_name; // Consumes // OneArgAction act_consumes_type; OneArgAction act_consumes_name; // EventType // OneArgAction act_event_type_begin_abstract_def, act_event_type_begin_abstract_fwd, act_event_type_begin_concrete_def, act_event_type_begin_concrete_fwd; OneArgAction act_event_type_inherits, act_event_type_supports; ScopeAction act_event_type_open_scope; ScopeAction act_event_type_close_scope; NoArgAction act_event_type_end; // EventTypeFactory // OneArgAction act_event_type_factory_name; TwoArgAction act_event_type_factory_parameter; OneArgAction act_event_type_factory_raises; // Home // OneArgAction act_home_begin; OneArgAction act_home_inherits; OneArgAction act_home_supports; OneArgAction act_home_manages; ScopeAction act_home_open_scope; ScopeAction act_home_close_scope; NoArgAction act_home_end; // HomeFactory // OneArgAction act_home_factory_name; TwoArgAction act_home_factory_parameter; OneArgAction act_home_factory_raises; // HomeFinder // OneArgAction act_home_finder_name; TwoArgAction act_home_finder_parameter; OneArgAction act_home_finder_raises; }; } } #endif // CCF_IDL3_PARSER_HPP