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 3533 of file exprtk.hpp.

Constructor & Destructor Documentation

◆ commutative_inserter()

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

Definition at line 3539 of file exprtk.hpp.

3540 : lexer::token_inserter(2)
3541 {}

Member Function Documentation

◆ ignore_symbol()

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

Definition at line 3543 of file exprtk.hpp.

3544 {
3545 ignore_set_.insert(symbol);
3546 }
std::set< std::string, details::ilesscompare > ignore_set_
Definition exprtk.hpp:3592

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 3548 of file exprtk.hpp.

3549 {
3550 bool match = false;
3551 new_token.type = lexer::token::e_mul;
3552 new_token.value = "*";
3553 new_token.position = t1.position;
3554
3555 if (t0.type == lexer::token::e_symbol)
3556 {
3557 if (ignore_set_.end() != ignore_set_.find(t0.value))
3558 {
3559 return -1;
3560 }
3561 else if (!t0.value.empty() && ('$' == t0.value[0]))
3562 {
3563 return -1;
3564 }
3565 }
3566
3567 if (t1.type == lexer::token::e_symbol)
3568 {
3569 if (ignore_set_.end() != ignore_set_.find(t1.value))
3570 {
3571 return -1;
3572 }
3573 }
3574 if ((t0.type == lexer::token::e_number ) && (t1.type == lexer::token::e_symbol )) match = true;
3575 else if ((t0.type == lexer::token::e_number ) && (t1.type == lexer::token::e_lbracket )) match = true;
3576 else if ((t0.type == lexer::token::e_number ) && (t1.type == lexer::token::e_lcrlbracket)) match = true;
3577 else if ((t0.type == lexer::token::e_number ) && (t1.type == lexer::token::e_lsqrbracket)) match = true;
3578 else if ((t0.type == lexer::token::e_symbol ) && (t1.type == lexer::token::e_number )) match = true;
3579 else if ((t0.type == lexer::token::e_rbracket ) && (t1.type == lexer::token::e_number )) match = true;
3580 else if ((t0.type == lexer::token::e_rcrlbracket) && (t1.type == lexer::token::e_number )) match = true;
3581 else if ((t0.type == lexer::token::e_rsqrbracket) && (t1.type == lexer::token::e_number )) match = true;
3582 else if ((t0.type == lexer::token::e_rbracket ) && (t1.type == lexer::token::e_symbol )) match = true;
3583 else if ((t0.type == lexer::token::e_rcrlbracket) && (t1.type == lexer::token::e_symbol )) match = true;
3584 else if ((t0.type == lexer::token::e_rsqrbracket) && (t1.type == lexer::token::e_symbol )) match = true;
3585 else if ((t0.type == lexer::token::e_symbol ) && (t1.type == lexer::token::e_symbol )) match = true;
3586
3587 return (match) ? 1 : -1;
3588 }

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 3592 of file exprtk.hpp.

Referenced by ignore_symbol(), and insert().


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