Gaudi Framework, version v21r4

Home   Generated: 7 Sep 2009

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

#include <ParserGrammar.h>

List of all members.


Detailed Description

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

Definition at line 358 of file ParserGrammar.h.


Public Member Functions

 definition (ValueGrammar const &self)
boost::spirit::rule< ScannerT >
const & 
start () const

Public Attributes

PropertyGrammar property_grammar
StringGrammar string_grammar
BoolGrammar boolean_grammar
IntGrammar< long > int_grammar
RealUnitsGrammar realunits_grammar
boost::spirit::rule< ScannerT > value_rule
boost::spirit::rule< ScannerT,
ClosureGrammar< std::string >
::context_t > 
value
boost::spirit::rule< ScannerT,
ClosureGrammar< std::string >
::context_t > 
literalvalue
boost::spirit::rule< ScannerT,
ClosureGrammar< std::string >
::context_t > 
vectorvalue
boost::spirit::rule< ScannerT,
ClosureGrammar< std::string >
::context_t > 
listvalue
boost::spirit::rule< ScannerT,
ClosureGrammar< std::string >
::context_t > 
mapvalue
boost::spirit::rule< ScannerT,
ClosureGrammar< std::string >
::context_t > 
vectorvalue_list
boost::spirit::rule< ScannerT,
ClosureGrammar< std::string >
::context_t > 
vector_type
boost::spirit::rule< ScannerT,
ClosureGrammar< std::string >
::context_t > 
property_link

Constructor & Destructor Documentation

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

Definition at line 360 of file ParserGrammar.h.

00361         {
00362           realunits_grammar.setParser(self.parser());
00363           //-----------------------------------------------------------------
00364           // OPERATORS
00365           //-----------------------------------------------------------------
00366           chlit<>     O_DOT('.');
00367           chlit<>     O_COMMA(',');
00368           value_rule = value[boost::bind(&ValueGrammar::matchValue,&self,_1)];
00369           value =
00370             vectorvalue[value.val=arg1]
00371             | vector_type[value.val="["+arg1+"]"]
00372             | property_link[value.val=arg1]
00373             ;
00374           // ------------------------------------------------------------------
00375           vectorvalue_list
00376             = !(
00377                 value[vectorvalue_list.val=arg1][boost::bind(&ValueGrammar::matchVectorValue,&self,_1)]
00378                 >> *(',' >>value[vectorvalue_list.val+=","+arg1][boost::bind(&ValueGrammar::matchVectorValue,&self,_1)])
00379                 );
00380           // ------------------------------------------------------------------
00381           vector_type =
00382             (
00383              ch_p('{')[boost::bind(&ValueGrammar::matchBrace,&self,true)]
00384              >> vectorvalue_list
00385              [vector_type.val=arg1]
00386              >> ch_p('}')[boost::bind(&ValueGrammar::matchBrace,&self,false)]
00387              )
00388             |
00389             (ch_p('[') [boost::bind(&ValueGrammar::matchBrace,&self,true)]
00390              >> vectorvalue_list
00391              [vector_type.val=arg1]
00392              >> ch_p(']')[boost::bind(&ValueGrammar::matchBrace,&self,false)]
00393              );
00394           // ------------------------------------------------------------------
00395           vectorvalue =
00396             listvalue[vectorvalue.val=arg1]
00397             | longest_d[
00398                         literalvalue[vectorvalue.val=arg1]
00399                         | mapvalue[vectorvalue.val=arg1]
00400             ];
00401           // ------------------------------------------------------------------
00402           listvalue = '(' >> vectorvalue[listvalue.val="("+arg1]
00403                           >> *(O_COMMA[listvalue.val+=","]
00404                           >> vectorvalue[listvalue.val+=arg1]) >>ch_p(')')[listvalue.val+=")"];
00405           // ------------------------------------------------------------------
00406           mapvalue = literalvalue[mapvalue.val=arg1]
00407             >> (ch_p('=')[mapvalue.val+="="] | ch_p(':')[mapvalue.val+=":"])
00408             >> value[mapvalue.val+=arg1]
00409             ;
00410           // ------------------------------------------------------------------
00411           literalvalue =
00412             realunits_grammar[literalvalue.val = arg1]
00413             |
00414             boolean_grammar[AssignBoolToString(literalvalue.val)]
00415             |
00416             string_grammar[literalvalue.val = std::string("\"")+arg1+std::string("\"")];
00417           // ------------------------------------------------------------------
00418           property_link = ('@'>>property_grammar)
00419             [property_link.val=construct_<std::string>(arg1,arg2)];
00420           // ------------------------------------------------------------------
00421         }


Member Function Documentation

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

Definition at line 433 of file ParserGrammar.h.

00433 { return value_rule; }


Member Data Documentation

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

Definition at line 422 of file ParserGrammar.h.

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

Definition at line 423 of file ParserGrammar.h.

template<typename ScannerT>
BoolGrammar Gaudi::Parsers::ValueGrammar::definition< ScannerT >::boolean_grammar

Definition at line 424 of file ParserGrammar.h.

template<typename ScannerT>
IntGrammar<long> Gaudi::Parsers::ValueGrammar::definition< ScannerT >::int_grammar

Definition at line 425 of file ParserGrammar.h.

template<typename ScannerT>
RealUnitsGrammar Gaudi::Parsers::ValueGrammar::definition< ScannerT >::realunits_grammar

Definition at line 426 of file ParserGrammar.h.

template<typename ScannerT>
boost::spirit::rule<ScannerT> Gaudi::Parsers::ValueGrammar::definition< ScannerT >::value_rule

Definition at line 428 of file ParserGrammar.h.

template<typename ScannerT>
boost::spirit::rule<ScannerT,ClosureGrammar<std::string>::context_t> Gaudi::Parsers::ValueGrammar::definition< ScannerT >::value

Definition at line 430 of file ParserGrammar.h.

template<typename ScannerT>
boost::spirit::rule<ScannerT,ClosureGrammar<std::string>::context_t> Gaudi::Parsers::ValueGrammar::definition< ScannerT >::literalvalue

Definition at line 430 of file ParserGrammar.h.

template<typename ScannerT>
boost::spirit::rule<ScannerT,ClosureGrammar<std::string>::context_t> Gaudi::Parsers::ValueGrammar::definition< ScannerT >::vectorvalue

Definition at line 430 of file ParserGrammar.h.

template<typename ScannerT>
boost::spirit::rule<ScannerT,ClosureGrammar<std::string>::context_t> Gaudi::Parsers::ValueGrammar::definition< ScannerT >::listvalue

Definition at line 430 of file ParserGrammar.h.

template<typename ScannerT>
boost::spirit::rule<ScannerT,ClosureGrammar<std::string>::context_t> Gaudi::Parsers::ValueGrammar::definition< ScannerT >::mapvalue

Definition at line 430 of file ParserGrammar.h.

template<typename ScannerT>
boost::spirit::rule<ScannerT,ClosureGrammar<std::string>::context_t> Gaudi::Parsers::ValueGrammar::definition< ScannerT >::vectorvalue_list

Definition at line 430 of file ParserGrammar.h.

template<typename ScannerT>
boost::spirit::rule<ScannerT,ClosureGrammar<std::string>::context_t> Gaudi::Parsers::ValueGrammar::definition< ScannerT >::vector_type

Definition at line 430 of file ParserGrammar.h.

template<typename ScannerT>
boost::spirit::rule<ScannerT,ClosureGrammar<std::string>::context_t> Gaudi::Parsers::ValueGrammar::definition< ScannerT >::property_link

Definition at line 430 of file ParserGrammar.h.


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

Generated at Mon Sep 7 18:26:03 2009 for Gaudi Framework, version v21r4 by Doxygen version 1.5.6 written by Dimitri van Heesch, © 1997-2004