MAiNGO
maingo::SymbolFinder Class Reference

Visitor for finding all symbols used in an expression. More...

#include <symbolFinder.h>

Public Member Functions

 SymbolFinder (symbol_table &symbols)
 Constructor. More...
 
Dispatch functions

Functions dispatching to visit functions

template<typename TType >
void dispatch (expression< TType > &expr)
 
template<typename TType >
void dispatch (value_node< TType > *node)
 
template<typename TType >
void dispatch (value_symbol< TType > *sym)
 
Visit specializations for terminal nodes and symbols

Functions visiting specific terminal node and symbol types

template<typename TType >
void operator() (constant_node< TType > *node)
 
template<typename TType >
void operator() (parameter_node< TType > *node)
 
template<typename TType >
void operator() (parameter_symbol< TType > *sym)
 
template<typename TType >
void operator() (variable_symbol< TType > *sym)
 
template<typename TType >
void operator() (expression_symbol< TType > *sym)
 
Traverse functions

Functions for traversing non-terminal nodes

template<typename TType >
void traverse (unary_node< TType > *node)
 
template<typename TType , typename UType >
void traverse (binary_node< TType, UType > *node)
 
template<typename TType , typename UType , typename VType >
void traverse (ternary_node< TType, UType, VType > *node)
 
template<typename TType , typename UType , typename VType , typename WType >
void traverse (quaternary_node< TType, UType, VType, WType > *node)
 
template<typename TType , typename UType , typename VType , typename WType , typename XType >
void traverse (quinary_node< TType, UType, VType, WType, XType > *node)
 
template<typename TType , typename UType , typename VType , typename WType , typename XType , typename YType >
void traverse (senary_node< TType, UType, VType, WType, XType, YType > *node)
 
template<typename TType , typename UType , typename VType , typename WType , typename XType , typename YType , typename ZType >
void traverse (septenary_node< TType, UType, VType, WType, XType, YType, ZType > *node)
 
template<typename TType , typename UType , typename VType , typename WType , typename XType , typename YType , typename ZType , typename AType >
void traverse (octonary_node< TType, UType, VType, WType, XType, YType, ZType, AType > *node)
 
template<typename TType , typename UType , typename VType , typename WType , typename XType , typename YType , typename ZType , typename AType , typename BType >
void traverse (novenary_node< TType, UType, VType, WType, XType, YType, ZType, AType, BType > *node)
 
template<typename TType , typename UType , typename VType , typename WType , typename XType , typename YType , typename ZType , typename AType , typename BType , typename CType , typename DType >
void traverse (undenary_node< TType, UType, VType, WType, XType, YType, ZType, AType, BType, CType, DType > *node)
 
template<typename TTypes >
void traverse (nary_node< TTypes > *node)
 
Visit specializations for non-terminal nodes

Functions visiting specific non-terminal node types

template<typename TType >
void operator() (entry_node< TType > *node)
 
void operator() (minus_node *node)
 
void operator() (inverse_node *node)
 
void operator() (addition_node *node)
 
void operator() (multiplication_node *node)
 
void operator() (exponentiation_node *node)
 
void operator() (min_node *node)
 
void operator() (max_node *node)
 
void operator() (sum_div_node *node)
 
void operator() (xlog_sum_node *node)
 
void operator() (exp_node *node)
 
void operator() (log_node *node)
 
void operator() (sqrt_node *node)
 
void operator() (sin_node *node)
 
void operator() (asin_node *node)
 
void operator() (cos_node *node)
 
void operator() (acos_node *node)
 
void operator() (tan_node *node)
 
void operator() (atan_node *node)
 
void operator() (lmtd_node *node)
 
void operator() (rlmtd_node *node)
 
void operator() (xexpax_node *node)
 
void operator() (arh_node *node)
 
void operator() (lb_func_node *node)
 
void operator() (ub_func_node *node)
 
void operator() (bounding_func_node *node)
 
void operator() (ale::squash_node *node)
 
void operator() (ale::regnormal_node *node)
 
void operator() (xlogx_node *node)
 
void operator() (abs_node *node)
 
void operator() (xabsx_node *node)
 
void operator() (cosh_node *node)
 
void operator() (sinh_node *node)
 
void operator() (tanh_node *node)
 
void operator() (coth_node *node)
 
void operator() (acosh_node *node)
 
void operator() (asinh_node *node)
 
void operator() (atanh_node *node)
 
void operator() (acoth_node *node)
 
void operator() (erf_node *node)
 
void operator() (erfc_node *node)
 
void operator() (pos_node *node)
 
void operator() (neg_node *node)
 
void operator() (xexpy_node *node)
 
void operator() (norm2_node *node)
 
void operator() (schroeder_ethanol_p_node *node)
 
void operator() (schroeder_ethanol_rhovap_node *node)
 
void operator() (schroeder_ethanol_rholiq_node *node)
 
void operator() (nrtl_dtau_node *node)
 
void operator() (nrtl_tau_node *node)
 
void operator() (nrtl_g_node *node)
 
void operator() (nrtl_gtau_node *node)
 
void operator() (nrtl_gdtau_node *node)
 
void operator() (nrtl_dgtau_node *node)
 
void operator() (ext_antoine_psat_node *node)
 
void operator() (antoine_psat_node *node)
 
void operator() (wagner_psat_node *node)
 
void operator() (ik_cape_psat_node *node)
 
void operator() (aspen_hig_node *node)
 
void operator() (nasa9_hig_node *node)
 
void operator() (dippr107_hig_node *node)
 
void operator() (dippr127_hig_node *node)
 
void operator() (antoine_tsat_node *node)
 
void operator() (watson_dhvap_node *node)
 
void operator() (dippr106_dhvap_node *node)
 
void operator() (cost_turton_node *node)
 
void operator() (covar_matern_1_node *node)
 
void operator() (covar_matern_3_node *node)
 
void operator() (covar_matern_5_node *node)
 
void operator() (covar_sqrexp_node *node)
 
void operator() (gpdf_node *node)
 
template<typename TType >
void operator() (sum_node< TType > *node)
 
template<typename TType >
void operator() (set_min_node< TType > *node)
 
template<typename TType >
void operator() (set_max_node< TType > *node)
 
void operator() (index_minus_node *node)
 
void operator() (index_addition_node *node)
 
void operator() (index_multiplication_node *node)
 
void operator() (negation_node *node)
 
template<typename TType >
void operator() (equal_node< TType > *node)
 
template<typename TType >
void operator() (less_node< TType > *node)
 
template<typename TType >
void operator() (less_equal_node< TType > *node)
 
template<typename TType >
void operator() (greater_node< TType > *node)
 
template<typename TType >
void operator() (greater_equal_node< TType > *node)
 
void operator() (disjunction_node *node)
 
void operator() (conjunction_node *node)
 
void operator() (element_node *node)
 
template<typename TType >
void operator() (forall_node< TType > *node)
 
template<typename TType >
void operator() (indicator_set_node< TType > *node)
 
void operator() (mid_node *node)
 

Public Attributes

std::set< std::string > mDefinedSymbols
 
std::set< std::string > mIlldefinedSymbols
 
std::set< std::string > mFixedSymbols
 
std::set< std::string > mScopedSymbols
 

Private Attributes

symbol_table & _symbols
 
std::deque< std::string > _scopeStack
 

Detailed Description

Visitor for finding all symbols used in an expression.

Constructor & Destructor Documentation

◆ SymbolFinder()

maingo::SymbolFinder::SymbolFinder ( symbol_table &  symbols)
inline

Constructor.

Parameters
[in]symbolsis the symbol_table for symbol lookup

Member Function Documentation

◆ dispatch() [1/3]

template<typename TType >
void maingo::SymbolFinder::dispatch ( expression< TType > &  expr)
inline

◆ dispatch() [2/3]

template<typename TType >
void maingo::SymbolFinder::dispatch ( value_node< TType > *  node)
inline

◆ dispatch() [3/3]

template<typename TType >
void maingo::SymbolFinder::dispatch ( value_symbol< TType > *  sym)
inline

◆ operator()() [1/94]

template<typename TType >
void maingo::SymbolFinder::operator() ( constant_node< TType > *  node)
inline

◆ operator()() [2/94]

template<typename TType >
void maingo::SymbolFinder::operator() ( parameter_node< TType > *  node)
inline

◆ operator()() [3/94]

template<typename TType >
void maingo::SymbolFinder::operator() ( parameter_symbol< TType > *  sym)
inline

◆ operator()() [4/94]

template<typename TType >
void maingo::SymbolFinder::operator() ( variable_symbol< TType > *  sym)
inline

◆ operator()() [5/94]

template<typename TType >
void maingo::SymbolFinder::operator() ( expression_symbol< TType > *  sym)
inline

◆ operator()() [6/94]

template<typename TType >
void maingo::SymbolFinder::operator() ( entry_node< TType > *  node)
inline

◆ operator()() [7/94]

void maingo::SymbolFinder::operator() ( minus_node *  node)
inline

◆ operator()() [8/94]

void maingo::SymbolFinder::operator() ( inverse_node *  node)
inline

◆ operator()() [9/94]

void maingo::SymbolFinder::operator() ( addition_node *  node)
inline

◆ operator()() [10/94]

void maingo::SymbolFinder::operator() ( multiplication_node *  node)
inline

◆ operator()() [11/94]

void maingo::SymbolFinder::operator() ( exponentiation_node *  node)
inline

◆ operator()() [12/94]

void maingo::SymbolFinder::operator() ( min_node *  node)
inline

◆ operator()() [13/94]

void maingo::SymbolFinder::operator() ( max_node *  node)
inline

◆ operator()() [14/94]

void maingo::SymbolFinder::operator() ( sum_div_node *  node)
inline

◆ operator()() [15/94]

void maingo::SymbolFinder::operator() ( xlog_sum_node *  node)
inline

◆ operator()() [16/94]

void maingo::SymbolFinder::operator() ( exp_node *  node)
inline

◆ operator()() [17/94]

void maingo::SymbolFinder::operator() ( log_node *  node)
inline

◆ operator()() [18/94]

void maingo::SymbolFinder::operator() ( sqrt_node *  node)
inline

◆ operator()() [19/94]

void maingo::SymbolFinder::operator() ( sin_node *  node)
inline

◆ operator()() [20/94]

void maingo::SymbolFinder::operator() ( asin_node *  node)
inline

◆ operator()() [21/94]

void maingo::SymbolFinder::operator() ( cos_node *  node)
inline

◆ operator()() [22/94]

void maingo::SymbolFinder::operator() ( acos_node *  node)
inline

◆ operator()() [23/94]

void maingo::SymbolFinder::operator() ( tan_node *  node)
inline

◆ operator()() [24/94]

void maingo::SymbolFinder::operator() ( atan_node *  node)
inline

◆ operator()() [25/94]

void maingo::SymbolFinder::operator() ( lmtd_node *  node)
inline

◆ operator()() [26/94]

void maingo::SymbolFinder::operator() ( rlmtd_node *  node)
inline

◆ operator()() [27/94]

void maingo::SymbolFinder::operator() ( xexpax_node *  node)
inline

◆ operator()() [28/94]

void maingo::SymbolFinder::operator() ( arh_node *  node)
inline

◆ operator()() [29/94]

void maingo::SymbolFinder::operator() ( lb_func_node *  node)
inline

◆ operator()() [30/94]

void maingo::SymbolFinder::operator() ( ub_func_node *  node)
inline

◆ operator()() [31/94]

void maingo::SymbolFinder::operator() ( bounding_func_node *  node)
inline

◆ operator()() [32/94]

void maingo::SymbolFinder::operator() ( ale::squash_node *  node)
inline

◆ operator()() [33/94]

void maingo::SymbolFinder::operator() ( ale::regnormal_node *  node)
inline

◆ operator()() [34/94]

void maingo::SymbolFinder::operator() ( xlogx_node *  node)
inline

◆ operator()() [35/94]

void maingo::SymbolFinder::operator() ( abs_node *  node)
inline

◆ operator()() [36/94]

void maingo::SymbolFinder::operator() ( xabsx_node *  node)
inline

◆ operator()() [37/94]

void maingo::SymbolFinder::operator() ( cosh_node *  node)
inline

◆ operator()() [38/94]

void maingo::SymbolFinder::operator() ( sinh_node *  node)
inline

◆ operator()() [39/94]

void maingo::SymbolFinder::operator() ( tanh_node *  node)
inline

◆ operator()() [40/94]

void maingo::SymbolFinder::operator() ( coth_node *  node)
inline

◆ operator()() [41/94]

void maingo::SymbolFinder::operator() ( acosh_node *  node)
inline

◆ operator()() [42/94]

void maingo::SymbolFinder::operator() ( asinh_node *  node)
inline

◆ operator()() [43/94]

void maingo::SymbolFinder::operator() ( atanh_node *  node)
inline

◆ operator()() [44/94]

void maingo::SymbolFinder::operator() ( acoth_node *  node)
inline

◆ operator()() [45/94]

void maingo::SymbolFinder::operator() ( erf_node *  node)
inline

◆ operator()() [46/94]

void maingo::SymbolFinder::operator() ( erfc_node *  node)
inline

◆ operator()() [47/94]

void maingo::SymbolFinder::operator() ( pos_node *  node)
inline

◆ operator()() [48/94]

void maingo::SymbolFinder::operator() ( neg_node *  node)
inline

◆ operator()() [49/94]

void maingo::SymbolFinder::operator() ( xexpy_node *  node)
inline

◆ operator()() [50/94]

void maingo::SymbolFinder::operator() ( norm2_node *  node)
inline

◆ operator()() [51/94]

void maingo::SymbolFinder::operator() ( schroeder_ethanol_p_node *  node)
inline

◆ operator()() [52/94]

void maingo::SymbolFinder::operator() ( schroeder_ethanol_rhovap_node *  node)
inline

◆ operator()() [53/94]

void maingo::SymbolFinder::operator() ( schroeder_ethanol_rholiq_node *  node)
inline

◆ operator()() [54/94]

void maingo::SymbolFinder::operator() ( nrtl_dtau_node *  node)
inline

◆ operator()() [55/94]

void maingo::SymbolFinder::operator() ( nrtl_tau_node *  node)
inline

◆ operator()() [56/94]

void maingo::SymbolFinder::operator() ( nrtl_g_node *  node)
inline

◆ operator()() [57/94]

void maingo::SymbolFinder::operator() ( nrtl_gtau_node *  node)
inline

◆ operator()() [58/94]

void maingo::SymbolFinder::operator() ( nrtl_gdtau_node *  node)
inline

◆ operator()() [59/94]

void maingo::SymbolFinder::operator() ( nrtl_dgtau_node *  node)
inline

◆ operator()() [60/94]

void maingo::SymbolFinder::operator() ( ext_antoine_psat_node *  node)
inline

◆ operator()() [61/94]

void maingo::SymbolFinder::operator() ( antoine_psat_node *  node)
inline

◆ operator()() [62/94]

void maingo::SymbolFinder::operator() ( wagner_psat_node *  node)
inline

◆ operator()() [63/94]

void maingo::SymbolFinder::operator() ( ik_cape_psat_node *  node)
inline

◆ operator()() [64/94]

void maingo::SymbolFinder::operator() ( aspen_hig_node *  node)
inline

◆ operator()() [65/94]

void maingo::SymbolFinder::operator() ( nasa9_hig_node *  node)
inline

◆ operator()() [66/94]

void maingo::SymbolFinder::operator() ( dippr107_hig_node *  node)
inline

◆ operator()() [67/94]

void maingo::SymbolFinder::operator() ( dippr127_hig_node *  node)
inline

◆ operator()() [68/94]

void maingo::SymbolFinder::operator() ( antoine_tsat_node *  node)
inline

◆ operator()() [69/94]

void maingo::SymbolFinder::operator() ( watson_dhvap_node *  node)
inline

◆ operator()() [70/94]

void maingo::SymbolFinder::operator() ( dippr106_dhvap_node *  node)
inline

◆ operator()() [71/94]

void maingo::SymbolFinder::operator() ( cost_turton_node *  node)
inline

◆ operator()() [72/94]

void maingo::SymbolFinder::operator() ( covar_matern_1_node *  node)
inline

◆ operator()() [73/94]

void maingo::SymbolFinder::operator() ( covar_matern_3_node *  node)
inline

◆ operator()() [74/94]

void maingo::SymbolFinder::operator() ( covar_matern_5_node *  node)
inline

◆ operator()() [75/94]

void maingo::SymbolFinder::operator() ( covar_sqrexp_node *  node)
inline

◆ operator()() [76/94]

void maingo::SymbolFinder::operator() ( gpdf_node *  node)
inline

◆ operator()() [77/94]

template<typename TType >
void maingo::SymbolFinder::operator() ( sum_node< TType > *  node)
inline

◆ operator()() [78/94]

template<typename TType >
void maingo::SymbolFinder::operator() ( set_min_node< TType > *  node)
inline

◆ operator()() [79/94]

template<typename TType >
void maingo::SymbolFinder::operator() ( set_max_node< TType > *  node)
inline

◆ operator()() [80/94]

void maingo::SymbolFinder::operator() ( index_minus_node *  node)
inline

◆ operator()() [81/94]

void maingo::SymbolFinder::operator() ( index_addition_node *  node)
inline

◆ operator()() [82/94]

void maingo::SymbolFinder::operator() ( index_multiplication_node *  node)
inline

◆ operator()() [83/94]

void maingo::SymbolFinder::operator() ( negation_node *  node)
inline

◆ operator()() [84/94]

template<typename TType >
void maingo::SymbolFinder::operator() ( equal_node< TType > *  node)
inline

◆ operator()() [85/94]

template<typename TType >
void maingo::SymbolFinder::operator() ( less_node< TType > *  node)
inline

◆ operator()() [86/94]

template<typename TType >
void maingo::SymbolFinder::operator() ( less_equal_node< TType > *  node)
inline

◆ operator()() [87/94]

template<typename TType >
void maingo::SymbolFinder::operator() ( greater_node< TType > *  node)
inline

◆ operator()() [88/94]

template<typename TType >
void maingo::SymbolFinder::operator() ( greater_equal_node< TType > *  node)
inline

◆ operator()() [89/94]

void maingo::SymbolFinder::operator() ( disjunction_node *  node)
inline

◆ operator()() [90/94]

void maingo::SymbolFinder::operator() ( conjunction_node *  node)
inline

◆ operator()() [91/94]

void maingo::SymbolFinder::operator() ( element_node *  node)
inline

◆ operator()() [92/94]

template<typename TType >
void maingo::SymbolFinder::operator() ( forall_node< TType > *  node)
inline

◆ operator()() [93/94]

template<typename TType >
void maingo::SymbolFinder::operator() ( indicator_set_node< TType > *  node)
inline

◆ operator()() [94/94]

void maingo::SymbolFinder::operator() ( mid_node *  node)
inline

◆ traverse() [1/11]

template<typename TType >
void maingo::SymbolFinder::traverse ( unary_node< TType > *  node)
inline

◆ traverse() [2/11]

template<typename TType , typename UType >
void maingo::SymbolFinder::traverse ( binary_node< TType, UType > *  node)
inline

◆ traverse() [3/11]

template<typename TType , typename UType , typename VType >
void maingo::SymbolFinder::traverse ( ternary_node< TType, UType, VType > *  node)
inline

◆ traverse() [4/11]

template<typename TType , typename UType , typename VType , typename WType >
void maingo::SymbolFinder::traverse ( quaternary_node< TType, UType, VType, WType > *  node)
inline

◆ traverse() [5/11]

template<typename TType , typename UType , typename VType , typename WType , typename XType >
void maingo::SymbolFinder::traverse ( quinary_node< TType, UType, VType, WType, XType > *  node)
inline

◆ traverse() [6/11]

template<typename TType , typename UType , typename VType , typename WType , typename XType , typename YType >
void maingo::SymbolFinder::traverse ( senary_node< TType, UType, VType, WType, XType, YType > *  node)
inline

◆ traverse() [7/11]

template<typename TType , typename UType , typename VType , typename WType , typename XType , typename YType , typename ZType >
void maingo::SymbolFinder::traverse ( septenary_node< TType, UType, VType, WType, XType, YType, ZType > *  node)
inline

◆ traverse() [8/11]

template<typename TType , typename UType , typename VType , typename WType , typename XType , typename YType , typename ZType , typename AType >
void maingo::SymbolFinder::traverse ( octonary_node< TType, UType, VType, WType, XType, YType, ZType, AType > *  node)
inline

◆ traverse() [9/11]

template<typename TType , typename UType , typename VType , typename WType , typename XType , typename YType , typename ZType , typename AType , typename BType >
void maingo::SymbolFinder::traverse ( novenary_node< TType, UType, VType, WType, XType, YType, ZType, AType, BType > *  node)
inline

◆ traverse() [10/11]

template<typename TType , typename UType , typename VType , typename WType , typename XType , typename YType , typename ZType , typename AType , typename BType , typename CType , typename DType >
void maingo::SymbolFinder::traverse ( undenary_node< TType, UType, VType, WType, XType, YType, ZType, AType, BType, CType, DType > *  node)
inline

◆ traverse() [11/11]

template<typename TTypes >
void maingo::SymbolFinder::traverse ( nary_node< TTypes > *  node)
inline

Member Data Documentation

◆ _scopeStack

std::deque<std::string> maingo::SymbolFinder::_scopeStack
private

Container for scope tracking

◆ _symbols

symbol_table& maingo::SymbolFinder::_symbols
private

symbol_table for symbol lookup

◆ mDefinedSymbols

std::set<std::string> maingo::SymbolFinder::mDefinedSymbols

Symbols that are properly defined

◆ mFixedSymbols

std::set<std::string> maingo::SymbolFinder::mFixedSymbols

Symbols with fixed value

◆ mIlldefinedSymbols

std::set<std::string> maingo::SymbolFinder::mIlldefinedSymbols

Symbols that are ill-defined

◆ mScopedSymbols

std::set<std::string> maingo::SymbolFinder::mScopedSymbols

Symbols in local scopes


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