CMS 3D CMS Logo

List of all members | Public Member Functions | Private Types | Private Attributes
triggerExpression::Parser< Iterator > Class Template Reference

#include <TriggerExpressionParser.h>

Inheritance diagram for triggerExpression::Parser< Iterator >:

Public Member Functions

 Parser ()
 

Private Types

typedef qi::rule< Iterator, std::string(), ascii::space_type > name_rule
 
typedef qi::rule< Iterator, Evaluator *(), ascii::space_type > rule
 

Private Attributes

rule element
 
rule expression
 
rule operand
 
rule parenthesis
 
rule prescale
 
rule token
 
name_rule token_l1algo
 
name_rule token_path
 
rule unary
 

Detailed Description

template<typename Iterator>
class triggerExpression::Parser< Iterator >

Definition at line 23 of file TriggerExpressionParser.h.

Member Typedef Documentation

template<typename Iterator>
typedef qi::rule<Iterator, std::string(), ascii::space_type> triggerExpression::Parser< Iterator >::name_rule
private

Definition at line 58 of file TriggerExpressionParser.h.

template<typename Iterator>
typedef qi::rule<Iterator, Evaluator*(), ascii::space_type> triggerExpression::Parser< Iterator >::rule
private

Definition at line 59 of file TriggerExpressionParser.h.

Constructor & Destructor Documentation

template<typename Iterator>
triggerExpression::Parser< Iterator >::Parser ( )
inline

Definition at line 26 of file TriggerExpressionParser.h.

References triggerExpression::Parser< Iterator >::element, triggerExpression::Parser< Iterator >::expression, triggerExpression::Parser< Iterator >::operand, triggerExpression::Parser< Iterator >::parenthesis, triggerExpression::Parser< Iterator >::prescale, triggerExpression::Parser< Iterator >::token, triggerExpression::Parser< Iterator >::token_l1algo, triggerExpression::Parser< Iterator >::token_path, and triggerExpression::Parser< Iterator >::unary.

26  :
27  Parser::base_type(expression)
28  {
29  token_l1algo %= qi::raw[qi::lexeme["L1_" >> +(qi::char_("a-zA-Z0-9_*?"))]];
30  token_path %= qi::raw[qi::lexeme[ +(qi::char_("a-zA-Z0-9_*?"))]];
31 
32  token = ( qi::lit("TRUE") [qi::_val = new_<Constant>(true)]
33  | qi::lit("FALSE") [qi::_val = new_<Constant>(false)]
34  | token_l1algo [qi::_val = new_<L1uGTReader>(qi::_1)]
35  | token_path [qi::_val = new_<PathReader>(qi::_1)]
36  );
37 
38  parenthesis %= ('(' >> expression >> ')');
39 
40  element %= (token | parenthesis);
41 
42  prescale = (element >> '/' >> qi::uint_) [qi::_val = new_<Prescaler> (qi::_1, qi::_2)];
43 
44  operand %= (prescale | element);
45 
46  unary = ( operand [qi::_val = qi::_1]
47  | (qi::lit("NOT") >> operand) [qi::_val = new_<OperatorNot> (qi::_1)]
48  );
49 
50  expression = unary [qi::_val = qi::_1]
51  >> *(
52  (qi::lit("AND") >> unary) [qi::_val = new_<OperatorAnd> (qi::_val, qi::_1)]
53  | (qi::lit("OR") >> unary) [qi::_val = new_<OperatorOr> (qi::_val, qi::_1)]
54  );
55  }

Member Data Documentation

template<typename Iterator>
rule triggerExpression::Parser< Iterator >::element
private
template<typename Iterator>
rule triggerExpression::Parser< Iterator >::expression
private
template<typename Iterator>
rule triggerExpression::Parser< Iterator >::operand
private
template<typename Iterator>
rule triggerExpression::Parser< Iterator >::parenthesis
private
template<typename Iterator>
rule triggerExpression::Parser< Iterator >::prescale
private
template<typename Iterator>
rule triggerExpression::Parser< Iterator >::token
private
template<typename Iterator>
name_rule triggerExpression::Parser< Iterator >::token_l1algo
private
template<typename Iterator>
name_rule triggerExpression::Parser< Iterator >::token_path
private
template<typename Iterator>
rule triggerExpression::Parser< Iterator >::unary
private