CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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_l1tech
 
name_rule token_path
 
rule unary
 

Detailed Description

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

Definition at line 24 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 61 of file TriggerExpressionParser.h.

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

Definition at line 62 of file TriggerExpressionParser.h.

Constructor & Destructor Documentation

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

Definition at line 27 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_l1tech, triggerExpression::Parser< Iterator >::token_path, and triggerExpression::Parser< Iterator >::unary.

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

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_l1tech
private
template<typename Iterator>
name_rule triggerExpression::Parser< Iterator >::token_path
private
template<typename Iterator>
rule triggerExpression::Parser< Iterator >::unary
private