Nektar++
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Public Attributes | List of all members
Nektar::LibUtilities::AnalyticExpressionEvaluator::AnalyticExpression::definition< ScannerT > Struct Template Reference

#include <AnalyticExpressionEvaluator.hpp>

Public Member Functions

 definition (AnalyticExpression const &self)
boost_spirit::rule< ScannerT,
boost_spirit::parser_context
<>, boost_spirit::parser_tag
< operatorID > > const & 
start () const

Public Attributes

NekDouble ParsedDouble
boost_spirit::rule< ScannerT,
boost_spirit::parser_context
<>, boost_spirit::parser_tag
< constantID > > 
constant
boost_spirit::rule< ScannerT,
boost_spirit::parser_context
<>, boost_spirit::parser_tag
< numberID > > 
number
boost_spirit::rule< ScannerT,
boost_spirit::parser_context
<>, boost_spirit::parser_tag
< variableID > > 
variable
boost_spirit::rule< ScannerT,
boost_spirit::parser_context
<>, boost_spirit::parser_tag
< parameterID > > 
parameter
boost_spirit::rule< ScannerT,
boost_spirit::parser_context
<>, boost_spirit::parser_tag
< functionID > > 
function
boost_spirit::rule< ScannerT,
boost_spirit::parser_context
<>, boost_spirit::parser_tag
< factorID > > 
factor
boost_spirit::rule< ScannerT,
boost_spirit::parser_context
<>, boost_spirit::parser_tag
< operatorID > > 
exponential
boost_spirit::rule< ScannerT,
boost_spirit::parser_context
<>, boost_spirit::parser_tag
< operatorID > > 
mult_div
boost_spirit::rule< ScannerT,
boost_spirit::parser_context
<>, boost_spirit::parser_tag
< operatorID > > 
add_sub
boost_spirit::rule< ScannerT,
boost_spirit::parser_context
<>, boost_spirit::parser_tag
< operatorID > > 
lt_gt
boost_spirit::rule< ScannerT,
boost_spirit::parser_context
<>, boost_spirit::parser_tag
< operatorID > > 
equality
boost_spirit::rule< ScannerT,
boost_spirit::parser_context
<>, boost_spirit::parser_tag
< operatorID > > 
logical_and
boost_spirit::rule< ScannerT,
boost_spirit::parser_context
<>, boost_spirit::parser_tag
< operatorID > > 
logical_or
boost_spirit::rule< ScannerT,
boost_spirit::parser_context
<>, boost_spirit::parser_tag
< operatorID > > 
expression
boost_spirit::rule< ScannerT,
boost_spirit::parser_context
<>, boost_spirit::parser_tag
< operatorID > > 
op

Detailed Description

template<typename ScannerT>
struct Nektar::LibUtilities::AnalyticExpressionEvaluator::AnalyticExpression::definition< ScannerT >

Definition at line 336 of file AnalyticExpressionEvaluator.hpp.

Constructor & Destructor Documentation

This function specifies the grammar of the MathAnalyticExpression parser.

Definition at line 153 of file AnalyticExpressionEvaluator.cpp.

References Nektar::LibUtilities::functions_p.

{
logical_or = logical_and >> *( (root_node_d[str_p("||")] >> logical_and) );
logical_and = equality >> *( (root_node_d[str_p("&&")] >> equality) );
equality = lt_gt >> *( (root_node_d[str_p("==")] >> lt_gt) );
*( (root_node_d[str_p("<=")] >> add_sub)
| (root_node_d[str_p(">=")] >> add_sub)
| (root_node_d[ch_p('<')] >> add_sub)
| (root_node_d[ch_p('>')] >> add_sub)
);
*( (root_node_d[ch_p('+')] >> mult_div)
| (root_node_d[ch_p('-')] >> mult_div)
);
*( (root_node_d[ch_p('*')] >> exponential)
| (root_node_d[ch_p('/')] >> exponential)
);
*( (root_node_d[ch_p('^')] >> factor) );
| function
| inner_node_d[ch_p('(') >> expression >> ch_p(')')]
| (root_node_d[ch_p('-')] >> factor);
parameter = leaf_node_d[ lexeme_d[
(alpha_p | '_' | '$') >> *(alnum_p | '_' | '$')
] ] >> op;
function = root_node_d[functions_p] >>
infix_node_d[inner_node_d[ch_p('(') >> expression >> *(',' >> expression) >> ch_p(')')]];
variable = leaf_node_d[ lexeme_d[
self.variables_p
] ] >> op;
number = leaf_node_d[ lexeme_d[
real_p
] ] >> op;
constant = leaf_node_d[ lexeme_d[
*self.constants_p
] ] >> op;
op = eps_p( end_p | "||" | "&&" | "==" | "<=" | ">=" | '<' | '>' | '+' | '-' | '*' | '/' | '^' | ')' );
}

Member Function Documentation

template<typename ScannerT >
boost_spirit::rule<ScannerT, boost_spirit::parser_context<>, boost_spirit::parser_tag<operatorID> > const& Nektar::LibUtilities::AnalyticExpressionEvaluator::AnalyticExpression::definition< ScannerT >::start ( ) const
inline

Member Data Documentation

template<typename ScannerT >
boost_spirit::rule<ScannerT, boost_spirit::parser_context<>, boost_spirit::parser_tag<operatorID> > Nektar::LibUtilities::AnalyticExpressionEvaluator::AnalyticExpression::definition< ScannerT >::add_sub

Definition at line 352 of file AnalyticExpressionEvaluator.hpp.

template<typename ScannerT >
boost_spirit::rule<ScannerT, boost_spirit::parser_context<>, boost_spirit::parser_tag<constantID> > Nektar::LibUtilities::AnalyticExpressionEvaluator::AnalyticExpression::definition< ScannerT >::constant

Definition at line 344 of file AnalyticExpressionEvaluator.hpp.

template<typename ScannerT >
boost_spirit::rule<ScannerT, boost_spirit::parser_context<>, boost_spirit::parser_tag<operatorID> > Nektar::LibUtilities::AnalyticExpressionEvaluator::AnalyticExpression::definition< ScannerT >::equality

Definition at line 354 of file AnalyticExpressionEvaluator.hpp.

template<typename ScannerT >
boost_spirit::rule<ScannerT, boost_spirit::parser_context<>, boost_spirit::parser_tag<operatorID> > Nektar::LibUtilities::AnalyticExpressionEvaluator::AnalyticExpression::definition< ScannerT >::exponential

Definition at line 350 of file AnalyticExpressionEvaluator.hpp.

template<typename ScannerT >
boost_spirit::rule<ScannerT, boost_spirit::parser_context<>, boost_spirit::parser_tag<operatorID> > Nektar::LibUtilities::AnalyticExpressionEvaluator::AnalyticExpression::definition< ScannerT >::expression
template<typename ScannerT >
boost_spirit::rule<ScannerT, boost_spirit::parser_context<>, boost_spirit::parser_tag<factorID> > Nektar::LibUtilities::AnalyticExpressionEvaluator::AnalyticExpression::definition< ScannerT >::factor

Definition at line 349 of file AnalyticExpressionEvaluator.hpp.

template<typename ScannerT >
boost_spirit::rule<ScannerT, boost_spirit::parser_context<>, boost_spirit::parser_tag<functionID> > Nektar::LibUtilities::AnalyticExpressionEvaluator::AnalyticExpression::definition< ScannerT >::function

Definition at line 348 of file AnalyticExpressionEvaluator.hpp.

template<typename ScannerT >
boost_spirit::rule<ScannerT, boost_spirit::parser_context<>, boost_spirit::parser_tag<operatorID> > Nektar::LibUtilities::AnalyticExpressionEvaluator::AnalyticExpression::definition< ScannerT >::logical_and

Definition at line 355 of file AnalyticExpressionEvaluator.hpp.

template<typename ScannerT >
boost_spirit::rule<ScannerT, boost_spirit::parser_context<>, boost_spirit::parser_tag<operatorID> > Nektar::LibUtilities::AnalyticExpressionEvaluator::AnalyticExpression::definition< ScannerT >::logical_or

Definition at line 356 of file AnalyticExpressionEvaluator.hpp.

template<typename ScannerT >
boost_spirit::rule<ScannerT, boost_spirit::parser_context<>, boost_spirit::parser_tag<operatorID> > Nektar::LibUtilities::AnalyticExpressionEvaluator::AnalyticExpression::definition< ScannerT >::lt_gt

Definition at line 353 of file AnalyticExpressionEvaluator.hpp.

template<typename ScannerT >
boost_spirit::rule<ScannerT, boost_spirit::parser_context<>, boost_spirit::parser_tag<operatorID> > Nektar::LibUtilities::AnalyticExpressionEvaluator::AnalyticExpression::definition< ScannerT >::mult_div

Definition at line 351 of file AnalyticExpressionEvaluator.hpp.

template<typename ScannerT >
boost_spirit::rule<ScannerT, boost_spirit::parser_context<>, boost_spirit::parser_tag<numberID> > Nektar::LibUtilities::AnalyticExpressionEvaluator::AnalyticExpression::definition< ScannerT >::number

Definition at line 345 of file AnalyticExpressionEvaluator.hpp.

template<typename ScannerT >
boost_spirit::rule<ScannerT, boost_spirit::parser_context<>, boost_spirit::parser_tag<operatorID> > Nektar::LibUtilities::AnalyticExpressionEvaluator::AnalyticExpression::definition< ScannerT >::op

Definition at line 358 of file AnalyticExpressionEvaluator.hpp.

template<typename ScannerT >
boost_spirit::rule<ScannerT, boost_spirit::parser_context<>, boost_spirit::parser_tag<parameterID> > Nektar::LibUtilities::AnalyticExpressionEvaluator::AnalyticExpression::definition< ScannerT >::parameter

Definition at line 347 of file AnalyticExpressionEvaluator.hpp.

This holds the NekDouble value that is parsed by spirit so it can be stored in the AST.

Definition at line 342 of file AnalyticExpressionEvaluator.hpp.

template<typename ScannerT >
boost_spirit::rule<ScannerT, boost_spirit::parser_context<>, boost_spirit::parser_tag<variableID> > Nektar::LibUtilities::AnalyticExpressionEvaluator::AnalyticExpression::definition< ScannerT >::variable

Definition at line 346 of file AnalyticExpressionEvaluator.hpp.