OPAL (Object Oriented Parallel Accelerator Library)  2.2.0
OPAL
Public Types | Public Member Functions | Public Attributes | List of all members
matheval::detail::expr_ast< real_t > Struct Template Reference

Abstract Syntax Tree. More...

#include <matheval.hpp>

Public Types

using tree_t = boost::variant< nil, real_t, std::string, boost::recursive_wrapper< expr_ast< real_t >>, boost::recursive_wrapper< binary_op< real_t >>, boost::recursive_wrapper< unary_op< real_t >> >
 

Public Member Functions

 expr_ast ()
 Default constructor. More...
 
template<typename Expr >
 expr_ast (Expr other)
 Copy constructor. More...
 
expr_astoperator+= (expr_ast const &rhs)
 Add a tree. More...
 
expr_astoperator-= (expr_ast const &rhs)
 subtract a tree More...
 
expr_astoperator*= (expr_ast const &rhs)
 Multiply by a tree. More...
 
expr_astoperator/= (expr_ast const &rhs)
 Divide by a tree. More...
 

Public Attributes

tree_t tree
 AST storage. More...
 

Detailed Description

template<typename real_t>
struct matheval::detail::expr_ast< real_t >

Abstract Syntax Tree.

Stores the abstract syntax tree (AST) of the parsed mathematical expression.

Definition at line 103 of file matheval.hpp.

Member Typedef Documentation

template<typename real_t>
using matheval::detail::expr_ast< real_t >::tree_t = boost::variant< nil , real_t , std::string , boost::recursive_wrapper<expr_ast<real_t>> , boost::recursive_wrapper<binary_op<real_t>> , boost::recursive_wrapper<unary_op<real_t>> >

Definition at line 112 of file matheval.hpp.

Constructor & Destructor Documentation

template<typename real_t>
matheval::detail::expr_ast< real_t >::expr_ast ( )
inline

Default constructor.

Initializes the tree to a nil value to indicate inconsistent state.

Definition at line 128 of file matheval.hpp.

template<typename real_t>
template<typename Expr >
matheval::detail::expr_ast< real_t >::expr_ast ( Expr  other)
inline

Copy constructor.

Deep copies the syntax tree.

Definition at line 135 of file matheval.hpp.

Member Function Documentation

template<typename real_t >
expr_ast< real_t > & matheval::detail::expr_ast< real_t >::operator*= ( expr_ast< real_t > const &  rhs)

Multiply by a tree.

Definition at line 198 of file matheval.hpp.

template<typename real_t >
expr_ast< real_t > & matheval::detail::expr_ast< real_t >::operator+= ( expr_ast< real_t > const &  rhs)

Add a tree.

Definition at line 186 of file matheval.hpp.

template<typename real_t >
expr_ast< real_t > & matheval::detail::expr_ast< real_t >::operator-= ( expr_ast< real_t > const &  rhs)

subtract a tree

Definition at line 192 of file matheval.hpp.

template<typename real_t >
expr_ast< real_t > & matheval::detail::expr_ast< real_t >::operator/= ( expr_ast< real_t > const &  rhs)

Divide by a tree.

Definition at line 204 of file matheval.hpp.

Member Data Documentation

template<typename real_t>
tree_t matheval::detail::expr_ast< real_t >::tree

AST storage.

The syntax tree can hold various types. Numbers (real_t), variables (std::string), the recursive tree itself (expr_ast), binary operators (binary_op), and unary operators (unary_op).

Definition at line 121 of file matheval.hpp.

Referenced by matheval::detail::eval_ast< real_t >::operator()(), and matheval::detail::ConstantFolder< real_t >::operator()().


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