OPAL (Object Oriented Parallel Accelerator Library)  2021.1.99
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 95 of file matheval.hpp.

Member Typedef Documentation

◆ tree_t

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 97 of file matheval.hpp.

Constructor & Destructor Documentation

◆ expr_ast() [1/2]

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 120 of file matheval.hpp.

◆ expr_ast() [2/2]

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 127 of file matheval.hpp.

Member Function Documentation

◆ operator*=()

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 190 of file matheval.hpp.

◆ operator+=()

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 178 of file matheval.hpp.

◆ operator-=()

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 184 of file matheval.hpp.

◆ operator/=()

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 196 of file matheval.hpp.

Member Data Documentation

◆ tree

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 113 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: