The Gaudi Framework  v30r3 (a5ef0a68)
Gaudi::Parsers::FileGrammar< Iterator, Skipper > Struct Template Reference

#include <src/JobOptionsSvc/Grammar.h>

Inheritance diagram for Gaudi::Parsers::FileGrammar< Iterator, Skipper >:
Collaboration diagram for Gaudi::Parsers::FileGrammar< Iterator, Skipper >:

Public Member Functions

 FileGrammar ()
 

Public Attributes

qi::rule< Iterator, Node(), Skipperfile
 
qi::rule< Iterator, Node(), Skipperinclude
 
qi::rule< Iterator, Node(), Skipperassign
 
qi::rule< Iterator, Node(), Skipperproperty
 
qi::rule< Iterator, Node(), Skipperproperty_ref
 
qi::rule< Iterator, Node(), Skipperoper
 
qi::rule< Iterator, Node(), Skippermap_value
 
qi::rule< Iterator, Node(), Skipperpair_value
 
qi::rule< Iterator, Node(), Skippersimple_value
 
qi::rule< Iterator, Node(), Skipperpair
 
qi::rule< Iterator, Node(), Skipperunits
 
qi::rule< Iterator, Node(), Skipperprint_options
 
qi::rule< Iterator, Node(), Skipperpragma
 
qi::rule< Iterator, Node(), Skipperpragma_print
 
qi::rule< Iterator, Node(), Skipperpragma_tree
 
qi::rule< Iterator, Node(), Skipperpragma_dump_file
 
qi::rule< Iterator, Node(), qi::locals< std::string > > shell
 
qi::rule< Iterator, Node(), qi::locals< Iterator >, Skipperstatement
 
qi::rule< Iterator, Node(), qi::locals< Iterator >, Skippervalue
 
qi::rule< Iterator, Node(), qi::locals< char >, Skippervector_value
 
qi::rule< Iterator, Node(), qi::locals< Node, Node >, Skippercondition
 
qi::rule< Iterator, char()> begin_vector
 
qi::rule< Iterator, void(char)> end_vector
 
StringGrammar< Iterator, Skippergstring
 
BoolGrammar< Iterator, Skippergbool
 
RealGrammar< Iterator, Skippergreal
 
IdentifierGrammar< Iterator, Skippergidentifier
 
ph::function< NodeOperationsop
 

Detailed Description

template<typename Iterator, typename Skipper>
struct Gaudi::Parsers::FileGrammar< Iterator, Skipper >

Definition at line 142 of file Grammar.h.

Constructor & Destructor Documentation

template<typename Iterator , typename Skipper >
Gaudi::Parsers::FileGrammar< Iterator, Skipper >::FileGrammar ( )
inline

Definition at line 143 of file Grammar.h.

143  : FileGrammar::base_type( file )
144  {
145  file = -shell[op( qi::_val, qi::_1 )] >> *( statement[op( qi::_val, qi::_1 )] )[op( qi::_val, Node::kRoot )];
146  shell = rep::confix(
147  "#!",
148  qi::eol )[*( qi::char_[qi::_a += qi::_1] - qi::eol )][op( qi::_val, Node::kShell )][op( qi::_val, qi::_a )];
149  statement = rep::qi::iter_pos[qi::_a = qi::_1] >> ( include | assign | units | print_options | pragma |
150  condition )[qi::_val = qi::_1][op( qi::_val, qi::_a )];
151  condition =
152  ( qi::lit( "#ifdef" )[op( qi::_a, Node::kIfdef )] | qi::lit( "#ifndef" )[op( qi::_a, Node::kIfndef )] ) >>
153  property[op( qi::_val, qi::_1 )] >> ( *statement[op( qi::_a, qi::_1 )] )[op( qi::_val, qi::_a )] >>
154  -( qi::lit( "#else" )[op( qi::_b, Node::kElse )] >>
155  *statement[op( qi::_b, qi::_1 )] )[op( qi::_val, qi::_b )] >>
156  qi::lit( "#endif" )[op( qi::_val, Node::kCondition )];
157  include = qi::lit( "#include" ) >> gstring[op( qi::_val, qi::_1 )][op( qi::_val, Node::kInclude )];
158  units = qi::lit( "#units" ) >> gstring[op( qi::_val, qi::_1 )][op( qi::_val, Node::kUnits )];
159  print_options = qi::lit( "#printOptions" ) >> qi::lit( "full" )[op( qi::_val, Node::kPrintOptions )];
160  pragma = qi::lit( "#pragma" ) >> ( pragma_print | pragma_tree | pragma_dump_file );
161  pragma_print = qi::lit( "print" ) >> enc::no_case[qi::lit( "on" )[op( qi::_val, Node::kPrintOn )] |
162  qi::lit( "off" )[op( qi::_val, Node::kPrintOff )]];
163  pragma_tree = enc::no_case[qi::lit( "printtree" )[op( qi::_val, Node::kPrintTree )]];
164  pragma_dump_file = qi::lit( "dumpfile" ) >> gstring[op( qi::_val, qi::_1 )][op( qi::_val, Node::kDumpFile )];
165  assign = property[op( qi::_val, qi::_1 )][op( qi::_val, Node::kAssign )] >> oper[op( qi::_val, qi::_1 )] >>
166  value[op( qi::_val, qi::_1 )] >> ';';
167  property = rep::qi::iter_pos[op( qi::_val, qi::_1 )] >>
168  ( gidentifier[op( qi::_val, qi::_1 )] % '.' )[op( qi::_val, Node::kProperty )];
169  property_ref %= -qi::lit( '@' ) >> property[op( qi::_val, Node::kPropertyRef )];
170  oper = rep::qi::iter_pos[op( qi::_val, qi::_1 )] >>
171  ( qi::lit( "=" )[op( qi::_val, Node::kEqual )] | qi::lit( "+=" )[op( qi::_val, Node::kPlusEqual )] |
172  qi::lit( "-=" )[op( qi::_val, Node::kMinusEqual )] );
173  value = rep::qi::iter_pos[qi::_a = qi::_1] >> ( map_value | vector_value | simple_value | property |
174  property_ref )[qi::_val = qi::_1][op( qi::_val, qi::_a )];
175  begin_vector =
176  enc::char_( '(' )[qi::_val = ')'] | enc::char_( '[' )[qi::_val = ']'] | enc::char_( '{' )[qi::_val = '}'];
177  end_vector = qi::char_( qi::_r1 );
178  vector_value = ( begin_vector[qi::_a = qi::_1] >> -( value[op( qi::_val, qi::_1 )] % ',' ) >>
179  end_vector( qi::_a ) )[op( qi::_val, Node::kVector )];
180  map_value = ( enc::char_( '{' ) >> -( pair[op( qi::_val, qi::_1 )] % ',' ) >>
181  enc::char_( '}' ) )[op( qi::_val, Node::kMap )];
182  pair =
183  simple_value[op( qi::_val, qi::_1 )] >> ':' >> value[op( qi::_val, qi::_1 )][op( qi::_val, Node::kPair )];
184  simple_value = ( gstring[op( qi::_val, qi::_1 )][op( qi::_val, Node::kString )] ) |
185  ( gbool[op( qi::_val, qi::_1 )][op( qi::_val, Node::kBool )] ) | ( greal[qi::_val = qi::_1] );
186  }
qi::rule< Iterator, Node(), qi::locals< std::string > > shell
Definition: Grammar.h:189
qi::rule< Iterator, Node(), Skipper > file
Definition: Grammar.h:187
qi::rule< Iterator, Node(), Skipper > oper
Definition: Grammar.h:187
qi::rule< Iterator, Node(), Skipper > simple_value
Definition: Grammar.h:187
qi::rule< Iterator, void(char)> end_vector
Definition: Grammar.h:194
qi::rule< Iterator, Node(), qi::locals< Node, Node >, Skipper > condition
Definition: Grammar.h:192
qi::rule< Iterator, Node(), Skipper > print_options
Definition: Grammar.h:187
qi::rule< Iterator, Node(), Skipper > include
Definition: Grammar.h:187
IdentifierGrammar< Iterator, Skipper > gidentifier
Definition: Grammar.h:198
qi::rule< Iterator, Node(), Skipper > pair
Definition: Grammar.h:187
RealGrammar< Iterator, Skipper > greal
Definition: Grammar.h:197
qi::rule< Iterator, Node(), Skipper > assign
Definition: Grammar.h:187
qi::rule< Iterator, Node(), qi::locals< Iterator >, Skipper > statement
Definition: Grammar.h:190
qi::rule< Iterator, Node(), qi::locals< Iterator >, Skipper > value
Definition: Grammar.h:190
qi::rule< Iterator, Node(), Skipper > pragma_tree
Definition: Grammar.h:187
BoolGrammar< Iterator, Skipper > gbool
Definition: Grammar.h:196
ph::function< NodeOperations > op
Definition: Grammar.h:199
qi::rule< Iterator, char()> begin_vector
Definition: Grammar.h:193
qi::rule< Iterator, Node(), qi::locals< char >, Skipper > vector_value
Definition: Grammar.h:191
qi::rule< Iterator, Node(), Skipper > units
Definition: Grammar.h:187
qi::rule< Iterator, Node(), Skipper > property
Definition: Grammar.h:187
qi::rule< Iterator, Node(), Skipper > property_ref
Definition: Grammar.h:187
StringGrammar< Iterator, Skipper > gstring
Definition: Grammar.h:195
qi::rule< Iterator, Node(), Skipper > map_value
Definition: Grammar.h:187
qi::rule< Iterator, Node(), Skipper > pragma_print
Definition: Grammar.h:187
qi::rule< Iterator, Node(), Skipper > pragma
Definition: Grammar.h:187
qi::rule< Iterator, Node(), Skipper > pragma_dump_file
Definition: Grammar.h:187

Member Data Documentation

template<typename Iterator , typename Skipper >
qi::rule<Iterator, Node(), Skipper> Gaudi::Parsers::FileGrammar< Iterator, Skipper >::assign

Definition at line 187 of file Grammar.h.

template<typename Iterator , typename Skipper >
qi::rule<Iterator, char()> Gaudi::Parsers::FileGrammar< Iterator, Skipper >::begin_vector

Definition at line 193 of file Grammar.h.

template<typename Iterator , typename Skipper >
qi::rule<Iterator, Node(), qi::locals<Node, Node>, Skipper> Gaudi::Parsers::FileGrammar< Iterator, Skipper >::condition

Definition at line 192 of file Grammar.h.

template<typename Iterator , typename Skipper >
qi::rule<Iterator, void( char )> Gaudi::Parsers::FileGrammar< Iterator, Skipper >::end_vector

Definition at line 194 of file Grammar.h.

template<typename Iterator , typename Skipper >
qi::rule<Iterator, Node(), Skipper> Gaudi::Parsers::FileGrammar< Iterator, Skipper >::file

Definition at line 187 of file Grammar.h.

template<typename Iterator , typename Skipper >
BoolGrammar<Iterator, Skipper> Gaudi::Parsers::FileGrammar< Iterator, Skipper >::gbool

Definition at line 196 of file Grammar.h.

template<typename Iterator , typename Skipper >
IdentifierGrammar<Iterator, Skipper> Gaudi::Parsers::FileGrammar< Iterator, Skipper >::gidentifier

Definition at line 198 of file Grammar.h.

template<typename Iterator , typename Skipper >
RealGrammar<Iterator, Skipper> Gaudi::Parsers::FileGrammar< Iterator, Skipper >::greal

Definition at line 197 of file Grammar.h.

template<typename Iterator , typename Skipper >
StringGrammar<Iterator, Skipper> Gaudi::Parsers::FileGrammar< Iterator, Skipper >::gstring

Definition at line 195 of file Grammar.h.

template<typename Iterator , typename Skipper >
qi::rule<Iterator, Node(), Skipper> Gaudi::Parsers::FileGrammar< Iterator, Skipper >::include

Definition at line 187 of file Grammar.h.

template<typename Iterator , typename Skipper >
qi::rule<Iterator, Node(), Skipper> Gaudi::Parsers::FileGrammar< Iterator, Skipper >::map_value

Definition at line 187 of file Grammar.h.

template<typename Iterator , typename Skipper >
ph::function<NodeOperations> Gaudi::Parsers::FileGrammar< Iterator, Skipper >::op

Definition at line 199 of file Grammar.h.

template<typename Iterator , typename Skipper >
qi::rule<Iterator, Node(), Skipper> Gaudi::Parsers::FileGrammar< Iterator, Skipper >::oper

Definition at line 187 of file Grammar.h.

template<typename Iterator , typename Skipper >
qi::rule<Iterator, Node(), Skipper> Gaudi::Parsers::FileGrammar< Iterator, Skipper >::pair

Definition at line 187 of file Grammar.h.

template<typename Iterator , typename Skipper >
qi::rule<Iterator, Node(), Skipper> Gaudi::Parsers::FileGrammar< Iterator, Skipper >::pair_value

Definition at line 187 of file Grammar.h.

template<typename Iterator , typename Skipper >
qi::rule<Iterator, Node(), Skipper> Gaudi::Parsers::FileGrammar< Iterator, Skipper >::pragma

Definition at line 187 of file Grammar.h.

template<typename Iterator , typename Skipper >
qi::rule<Iterator, Node(), Skipper> Gaudi::Parsers::FileGrammar< Iterator, Skipper >::pragma_dump_file

Definition at line 187 of file Grammar.h.

template<typename Iterator , typename Skipper >
qi::rule<Iterator, Node(), Skipper> Gaudi::Parsers::FileGrammar< Iterator, Skipper >::pragma_print

Definition at line 187 of file Grammar.h.

template<typename Iterator , typename Skipper >
qi::rule<Iterator, Node(), Skipper> Gaudi::Parsers::FileGrammar< Iterator, Skipper >::pragma_tree

Definition at line 187 of file Grammar.h.

template<typename Iterator , typename Skipper >
qi::rule<Iterator, Node(), Skipper> Gaudi::Parsers::FileGrammar< Iterator, Skipper >::print_options

Definition at line 187 of file Grammar.h.

template<typename Iterator , typename Skipper >
qi::rule<Iterator, Node(), Skipper> Gaudi::Parsers::FileGrammar< Iterator, Skipper >::property

Definition at line 187 of file Grammar.h.

template<typename Iterator , typename Skipper >
qi::rule<Iterator, Node(), Skipper> Gaudi::Parsers::FileGrammar< Iterator, Skipper >::property_ref

Definition at line 187 of file Grammar.h.

template<typename Iterator , typename Skipper >
qi::rule<Iterator, Node(), qi::locals<std::string> > Gaudi::Parsers::FileGrammar< Iterator, Skipper >::shell

Definition at line 189 of file Grammar.h.

template<typename Iterator , typename Skipper >
qi::rule<Iterator, Node(), Skipper> Gaudi::Parsers::FileGrammar< Iterator, Skipper >::simple_value

Definition at line 187 of file Grammar.h.

template<typename Iterator , typename Skipper >
qi::rule<Iterator, Node(), qi::locals<Iterator>, Skipper> Gaudi::Parsers::FileGrammar< Iterator, Skipper >::statement

Definition at line 190 of file Grammar.h.

template<typename Iterator , typename Skipper >
qi::rule<Iterator, Node(), Skipper> Gaudi::Parsers::FileGrammar< Iterator, Skipper >::units

Definition at line 187 of file Grammar.h.

template<typename Iterator , typename Skipper >
qi::rule<Iterator, Node(), qi::locals<Iterator>, Skipper> Gaudi::Parsers::FileGrammar< Iterator, Skipper >::value

Definition at line 190 of file Grammar.h.

template<typename Iterator , typename Skipper >
qi::rule<Iterator, Node(), qi::locals<char>, Skipper> Gaudi::Parsers::FileGrammar< Iterator, Skipper >::vector_value

Definition at line 191 of file Grammar.h.


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