C++ Mathematical Expression Toolkit (ExprTk) release
Loading...
Searching...
No Matches
Public Member Functions | Private Attributes | List of all members
exprtk::lexer::helper::commutative_inserter Class Reference
Inheritance diagram for exprtk::lexer::helper::commutative_inserter:
[legend]
Collaboration diagram for exprtk::lexer::helper::commutative_inserter:
[legend]

Public Member Functions

 commutative_inserter ()
 
void ignore_symbol (const std::string &symbol)
 
int insert (const lexer::token &t0, const lexer::token &t1, lexer::token &new_token)
 
- Public Member Functions inherited from exprtk::lexer::token_inserter
 token_inserter (const std::size_t &stride)
 
std::size_t process (generator &g)
 
virtual int insert (const token &, token &)
 
virtual int insert (const token &, const token &, const token &, token &)
 
virtual int insert (const token &, const token &, const token &, const token &, token &)
 
virtual int insert (const token &, const token &, const token &, const token &, const token &, token &)
 
- Public Member Functions inherited from exprtk::lexer::helper_interface
virtual void init ()
 
virtual void reset ()
 
virtual bool result ()
 
virtual ~helper_interface ()
 

Private Attributes

std::set< std::string, details::ilesscompareignore_set_
 

Detailed Description

Definition at line 3477 of file exprtk.hpp.

Constructor & Destructor Documentation

◆ commutative_inserter()

exprtk::lexer::helper::commutative_inserter::commutative_inserter ( )
inline

Definition at line 3483 of file exprtk.hpp.

3484 : lexer::token_inserter(2)
3485 {}

Member Function Documentation

◆ ignore_symbol()

void exprtk::lexer::helper::commutative_inserter::ignore_symbol ( const std::string &  symbol)
inline

Definition at line 3487 of file exprtk.hpp.

3488 {
3489 ignore_set_.insert(symbol);
3490 }
std::set< std::string, details::ilesscompare > ignore_set_
Definition exprtk.hpp:3536

References ignore_set_.

Referenced by exprtk::parser< T >::init_precompilation().

Here is the caller graph for this function:

◆ insert()

int exprtk::lexer::helper::commutative_inserter::insert ( const lexer::token t0,
const lexer::token t1,
lexer::token new_token 
)
inlinevirtual

Reimplemented from exprtk::lexer::token_inserter.

Definition at line 3492 of file exprtk.hpp.

3493 {
3494 bool match = false;
3495 new_token.type = lexer::token::e_mul;
3496 new_token.value = "*";
3497 new_token.position = t1.position;
3498
3499 if (t0.type == lexer::token::e_symbol)
3500 {
3501 if (ignore_set_.end() != ignore_set_.find(t0.value))
3502 {
3503 return -1;
3504 }
3505 else if (!t0.value.empty() && ('$' == t0.value[0]))
3506 {
3507 return -1;
3508 }
3509 }
3510
3511 if (t1.type == lexer::token::e_symbol)
3512 {
3513 if (ignore_set_.end() != ignore_set_.find(t1.value))
3514 {
3515 return -1;
3516 }
3517 }
3518 if ((t0.type == lexer::token::e_number ) && (t1.type == lexer::token::e_symbol )) match = true;
3519 else if ((t0.type == lexer::token::e_number ) && (t1.type == lexer::token::e_lbracket )) match = true;
3520 else if ((t0.type == lexer::token::e_number ) && (t1.type == lexer::token::e_lcrlbracket)) match = true;
3521 else if ((t0.type == lexer::token::e_number ) && (t1.type == lexer::token::e_lsqrbracket)) match = true;
3522 else if ((t0.type == lexer::token::e_symbol ) && (t1.type == lexer::token::e_number )) match = true;
3523 else if ((t0.type == lexer::token::e_rbracket ) && (t1.type == lexer::token::e_number )) match = true;
3524 else if ((t0.type == lexer::token::e_rcrlbracket) && (t1.type == lexer::token::e_number )) match = true;
3525 else if ((t0.type == lexer::token::e_rsqrbracket) && (t1.type == lexer::token::e_number )) match = true;
3526 else if ((t0.type == lexer::token::e_rbracket ) && (t1.type == lexer::token::e_symbol )) match = true;
3527 else if ((t0.type == lexer::token::e_rcrlbracket) && (t1.type == lexer::token::e_symbol )) match = true;
3528 else if ((t0.type == lexer::token::e_rsqrbracket) && (t1.type == lexer::token::e_symbol )) match = true;
3529 else if ((t0.type == lexer::token::e_symbol ) && (t1.type == lexer::token::e_symbol )) match = true;
3530
3531 return (match) ? 1 : -1;
3532 }

References exprtk::lexer::token::e_lbracket, exprtk::lexer::token::e_lcrlbracket, exprtk::lexer::token::e_lsqrbracket, exprtk::lexer::token::e_mul, exprtk::lexer::token::e_number, exprtk::lexer::token::e_rbracket, exprtk::lexer::token::e_rcrlbracket, exprtk::lexer::token::e_rsqrbracket, exprtk::lexer::token::e_symbol, and ignore_set_.

Member Data Documentation

◆ ignore_set_

std::set<std::string,details::ilesscompare> exprtk::lexer::helper::commutative_inserter::ignore_set_
private

Definition at line 3536 of file exprtk.hpp.

Referenced by ignore_symbol(), and insert().


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