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 352 of file AnalyticExpressionEvaluator.hpp.

Constructor & Destructor Documentation

This function specifies the grammar of the MathAnalyticExpression parser.

Definition at line 155 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 368 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 360 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 370 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 366 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 365 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 364 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 371 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 372 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 369 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 367 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 361 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 374 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 363 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 358 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 362 of file AnalyticExpressionEvaluator.hpp.