Gaudi Framework, version v20r2

Generated: 18 Jul 2008

Gaudi::Parsers::ParserGrammar::definition< ScannerT > Struct Template Reference

#include <ParserGrammar.h>

Collaboration diagram for Gaudi::Parsers::ParserGrammar::definition< ScannerT >:

Collaboration graph
[legend]
List of all members.

Detailed Description

template<typename ScannerT>
struct Gaudi::Parsers::ParserGrammar::definition< ScannerT >

Definition at line 609 of file ParserGrammar.h.

Public Member Functions

 definition (ParserGrammar const &self)
rule< ScannerT > const & start () const

Public Attributes

PropertyGrammar property_grammar
IdentifierGrammar identifier_grammar
StringGrammar string_grammar
ValueGrammar value_grammar
rule< ScannerT, ClosureGrammar<
std::string >::context_t > 
include_statement
rule< ScannerT, ClosureGrammar<
std::string >::context_t > 
units_statement
rule< ScannerT, ClosureGrammar<
std::vector< std::string
> >::context_t > 
assign_statement
rule< ScannerT > job_options_file
rule< ScannerT > shell_statement
rule< ScannerT > platform_statement
rule< ScannerT > assertable_statement
rule< ScannerT > assertion_statement
rule< ScannerT > platform_dependency
rule< ScannerT > pragma_statement
rule< ScannerT > pragma
rule< ScannerT > printopt_statement


Constructor & Destructor Documentation

template<typename ScannerT>
Gaudi::Parsers::ParserGrammar::definition< ScannerT >::definition ( ParserGrammar const &  self  )  [inline]

Definition at line 611 of file ParserGrammar.h.

References Gaudi::Parsers::ParserGrammar::definition< ScannerT >::assertable_statement, Gaudi::Parsers::ParserGrammar::definition< ScannerT >::assertion_statement, Gaudi::Parsers::ParserGrammar::definition< ScannerT >::assign_statement, Gaudi::Parsers::ParserGrammar::definition< ScannerT >::include_statement, Gaudi::Parsers::ParserGrammar::definition< ScannerT >::job_options_file, Gaudi::Parsers::ParserGrammar::matchAssign(), Gaudi::Parsers::ParserGrammar::matchInclude(), Gaudi::Parsers::ParserGrammar::matchPlatform(), Gaudi::Parsers::ParserGrammar::matchPrint(), Gaudi::Parsers::ParserGrammar::matchPrintOptions(), Gaudi::Parsers::ParserGrammar::matchUnits(), Gaudi::Parsers::ParserGrammar::matchValue(), Gaudi::Parsers::ParserGrammar::parser(), Gaudi::Parsers::ParserGrammar::definition< ScannerT >::platform_dependency, Gaudi::Parsers::ParserGrammar::definition< ScannerT >::platform_statement, Gaudi::Parsers::ParserGrammar::definition< ScannerT >::pragma, Gaudi::Parsers::ParserGrammar::definition< ScannerT >::pragma_statement, Gaudi::Parsers::ParserGrammar::definition< ScannerT >::printopt_statement, Gaudi::Parsers::ParserGrammar::definition< ScannerT >::property_grammar, Gaudi::Parsers::PushBack(), Gaudi::Parsers::ValueGrammar::setParser(), Gaudi::Parsers::ParserGrammar::definition< ScannerT >::shell_statement, Gaudi::Parsers::ParserGrammar::definition< ScannerT >::string_grammar, Gaudi::Parsers::ParserGrammar::definition< ScannerT >::units_statement, and Gaudi::Parsers::ParserGrammar::definition< ScannerT >::value_grammar.

00611                                               {
00612           value_grammar.setParser(self.parser());
00613           boost::tuples::get<0>(self.attrs()) = true;
00614           // ------------------------------------------------------------------
00615           // OPERATORS
00616           // ------------------------------------------------------------------
00617           chlit<>     O_SEMI(';');
00618           chlit<>     O_DOT('.');
00619           
00620           strlit<>    O_ASSIGN("=");
00621           strlit<>    O_PLUSASSIGN("+=");
00622           strlit<>    O_MINUSASSIGN("-=");
00623           
00624           // ------------------------------------------------------------------
00625           // TOKENS
00626           // ------------------------------------------------------------------
00627                                         strlit<> T_SHELL("#!");
00628           strlit<> T_IFDEF("#ifdef");
00629           strlit<> T_IFNDEF("#ifndef");
00630           strlit<> T_ELSE("#else");
00631           strlit<> T_ENDIF("#endif");
00632           strlit<> T_WIN32("WIN32");
00633           strlit<> T_INCLUDE("#include");
00634           strlit<> T_UNITS("#units");
00635           strlit<> T_PRAGMA("#pragma");
00636           strlit<> T_PRINTOPTIONS("#printOptions");
00637           // ------------------------------------------------------------------
00638           job_options_file = 
00639             !shell_statement >> *(platform_statement | platform_dependency);
00640           // ------------------------------------------------------------------
00641                                         shell_statement = comment_p(T_SHELL);
00642           // ------------------------------------------------------------------
00643                             platform_statement = assertable_statement | pragma_statement;
00644           // ------------------------------------------------------------------
00645           assertable_statement = 
00646             include_statement
00647             [boost::bind(&ParserGrammar::matchInclude,&self,_1)]
00648             | units_statement
00649             [boost::bind(&ParserGrammar::matchUnits,&self,_1)]
00650             | assign_statement
00651             [boost::bind(&ParserGrammar::matchAssign,&self,_1)];
00652           // ------------------------------------------------------------------
00653           assertion_statement = 
00654             T_IFDEF
00655             [boost::bind(&ParserGrammar::matchPlatform,&self,"ifdef")]
00656             | 
00657             T_IFNDEF
00658             [boost::bind(&ParserGrammar::matchPlatform,&self,"ifndef")];
00659           // ------------------------------------------------------------------
00660           platform_dependency = 
00661             assertion_statement 
00662               >> T_WIN32 
00663               >> *platform_statement
00664               >> !( 
00665                    T_ELSE[boost::bind(&ParserGrammar::matchPlatform,&self,"else")] 
00666                    >> *platform_statement
00667                    ) 
00668               >> T_ENDIF
00669             [boost::bind(&ParserGrammar::matchPlatform,&self,"endif")];
00670           // ------------------------------------------------------------------
00671           include_statement = 
00672             T_INCLUDE 
00673               >> (string_grammar[include_statement.val=arg1]>>eps_p)
00674             [self.val=arg1];
00675           // ------------------------------------------------------------------
00676           units_statement = 
00677             T_UNITS 
00678               >> (string_grammar[units_statement.val=arg1]>>eps_p)
00679             [self.val=arg1];;
00680           // ------------------------------------------------------------------
00681           pragma_statement = pragma | printopt_statement;
00682           // ------------------------------------------------------------------
00683           pragma = (T_PRAGMA>>eps_p)[self.val=arg1] >> str_p("print") 
00684                             >> ((str_p("on") | str_p("ON"))
00685                                 [boost::bind(&ParserGrammar::matchPrint,&self,true)]
00686                                 | (str_p("off") | str_p("OFF"))
00687                                 [boost::bind(&ParserGrammar::matchPrint,&self,false)]) ;
00688           // ------------------------------------------------------------------
00689           printopt_statement = ((T_PRINTOPTIONS>>eps_p)[self.val = arg1] >> 
00690             !as_lower_d["full"])
00691             [boost::bind(&ParserGrammar::matchPrintOptions,&self,true)];
00692           // ------------------------------------------------------------------
00693           assign_statement =
00694                   property_grammar[assign_statement.val=arg1]
00695               >> eps_p[PushBack(assign_statement.val,"#")]
00696               >> (
00697                   O_ASSIGN[PushBack(assign_statement.val,"=")]
00698                   |O_PLUSASSIGN[PushBack(assign_statement.val,"+=")]
00699                   |O_MINUSASSIGN[PushBack(assign_statement.val,"-=")]
00700                   ) 
00701               >>  value_grammar[boost::bind(&ParserGrammar::matchValue,&self,_1)] 
00702               >> O_SEMI;
00703           // ------------------------------------------------------------------  
00704         }


Member Function Documentation

template<typename ScannerT>
rule<ScannerT> const& Gaudi::Parsers::ParserGrammar::definition< ScannerT >::start (  )  const [inline]

Definition at line 727 of file ParserGrammar.h.

References Gaudi::Parsers::ParserGrammar::definition< ScannerT >::job_options_file.

00727                                             {
00728           return job_options_file;
00729         }


Member Data Documentation

template<typename ScannerT>
PropertyGrammar Gaudi::Parsers::ParserGrammar::definition< ScannerT >::property_grammar

Definition at line 706 of file ParserGrammar.h.

Referenced by Gaudi::Parsers::ParserGrammar::definition< ScannerT >::definition().

template<typename ScannerT>
IdentifierGrammar Gaudi::Parsers::ParserGrammar::definition< ScannerT >::identifier_grammar

Definition at line 707 of file ParserGrammar.h.

template<typename ScannerT>
StringGrammar Gaudi::Parsers::ParserGrammar::definition< ScannerT >::string_grammar

Definition at line 708 of file ParserGrammar.h.

Referenced by Gaudi::Parsers::ParserGrammar::definition< ScannerT >::definition().

template<typename ScannerT>
ValueGrammar Gaudi::Parsers::ParserGrammar::definition< ScannerT >::value_grammar

Definition at line 709 of file ParserGrammar.h.

Referenced by Gaudi::Parsers::ParserGrammar::definition< ScannerT >::definition().

template<typename ScannerT>
rule<ScannerT,ClosureGrammar<std::string>::context_t> Gaudi::Parsers::ParserGrammar::definition< ScannerT >::include_statement

Definition at line 711 of file ParserGrammar.h.

Referenced by Gaudi::Parsers::ParserGrammar::definition< ScannerT >::definition().

template<typename ScannerT>
rule<ScannerT,ClosureGrammar<std::string>::context_t> Gaudi::Parsers::ParserGrammar::definition< ScannerT >::units_statement

Definition at line 711 of file ParserGrammar.h.

Referenced by Gaudi::Parsers::ParserGrammar::definition< ScannerT >::definition().

template<typename ScannerT>
rule<ScannerT,ClosureGrammar<std::vector<std::string> >::context_t> Gaudi::Parsers::ParserGrammar::definition< ScannerT >::assign_statement

Definition at line 714 of file ParserGrammar.h.

Referenced by Gaudi::Parsers::ParserGrammar::definition< ScannerT >::definition().

template<typename ScannerT>
rule<ScannerT> Gaudi::Parsers::ParserGrammar::definition< ScannerT >::job_options_file

Definition at line 717 of file ParserGrammar.h.

Referenced by Gaudi::Parsers::ParserGrammar::definition< ScannerT >::definition(), and Gaudi::Parsers::ParserGrammar::definition< ScannerT >::start().

template<typename ScannerT>
rule<ScannerT> Gaudi::Parsers::ParserGrammar::definition< ScannerT >::shell_statement

Definition at line 717 of file ParserGrammar.h.

Referenced by Gaudi::Parsers::ParserGrammar::definition< ScannerT >::definition().

template<typename ScannerT>
rule<ScannerT> Gaudi::Parsers::ParserGrammar::definition< ScannerT >::platform_statement

Definition at line 717 of file ParserGrammar.h.

Referenced by Gaudi::Parsers::ParserGrammar::definition< ScannerT >::definition().

template<typename ScannerT>
rule<ScannerT> Gaudi::Parsers::ParserGrammar::definition< ScannerT >::assertable_statement

Definition at line 717 of file ParserGrammar.h.

Referenced by Gaudi::Parsers::ParserGrammar::definition< ScannerT >::definition().

template<typename ScannerT>
rule<ScannerT> Gaudi::Parsers::ParserGrammar::definition< ScannerT >::assertion_statement

Definition at line 717 of file ParserGrammar.h.

Referenced by Gaudi::Parsers::ParserGrammar::definition< ScannerT >::definition().

template<typename ScannerT>
rule<ScannerT> Gaudi::Parsers::ParserGrammar::definition< ScannerT >::platform_dependency

Definition at line 717 of file ParserGrammar.h.

Referenced by Gaudi::Parsers::ParserGrammar::definition< ScannerT >::definition().

template<typename ScannerT>
rule<ScannerT> Gaudi::Parsers::ParserGrammar::definition< ScannerT >::pragma_statement

Definition at line 717 of file ParserGrammar.h.

Referenced by Gaudi::Parsers::ParserGrammar::definition< ScannerT >::definition().

template<typename ScannerT>
rule<ScannerT> Gaudi::Parsers::ParserGrammar::definition< ScannerT >::pragma

Definition at line 717 of file ParserGrammar.h.

Referenced by Gaudi::Parsers::ParserGrammar::definition< ScannerT >::definition().

template<typename ScannerT>
rule<ScannerT> Gaudi::Parsers::ParserGrammar::definition< ScannerT >::printopt_statement

Definition at line 717 of file ParserGrammar.h.

Referenced by Gaudi::Parsers::ParserGrammar::definition< ScannerT >::definition().


The documentation for this struct was generated from the following file:
Generated at Fri Jul 18 12:10:26 2008 for Gaudi Framework, version v20r2 by Doxygen version 1.5.1 written by Dimitri van Heesch, © 1997-2004