Gaudi Framework, version v21r9

Home   Generated: 3 May 2010

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

#include <ParserGrammar.h>

List of all members.

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


Detailed Description

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

Definition at line 618 of file ParserGrammar.h.


Constructor & Destructor Documentation

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

Definition at line 620 of file ParserGrammar.h.

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


Member Function Documentation

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

Definition at line 736 of file ParserGrammar.h.

00736                                             {
00737           return job_options_file;
00738         }


Member Data Documentation

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

Definition at line 715 of file ParserGrammar.h.

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

Definition at line 716 of file ParserGrammar.h.

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

Definition at line 717 of file ParserGrammar.h.

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

Definition at line 718 of file ParserGrammar.h.

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

Definition at line 720 of file ParserGrammar.h.

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

Definition at line 720 of file ParserGrammar.h.

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

Definition at line 723 of file ParserGrammar.h.

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

Definition at line 726 of file ParserGrammar.h.

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

Definition at line 726 of file ParserGrammar.h.

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

Definition at line 726 of file ParserGrammar.h.

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

Definition at line 726 of file ParserGrammar.h.

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

Definition at line 726 of file ParserGrammar.h.

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

Definition at line 726 of file ParserGrammar.h.

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

Definition at line 726 of file ParserGrammar.h.

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

Definition at line 726 of file ParserGrammar.h.

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

Definition at line 726 of file ParserGrammar.h.


The documentation for this struct was generated from the following file:

Generated at Mon May 3 12:28:31 2010 for Gaudi Framework, version v21r9 by Doxygen version 1.5.6 written by Dimitri van Heesch, © 1997-2004