C++ Mathematical Expression Toolkit (ExprTk) release
Loading...
Searching...
No Matches
exprtk::lexer::helper::commutative_inserter Class Reference

#include <exprtk.hpp>

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)
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::token_inserter
 token_inserter (const std::size_t &stride)
std::size_t process (generator &g)
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 3541 of file exprtk.hpp.

Constructor & Destructor Documentation

◆ commutative_inserter()

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

Definition at line 3547 of file exprtk.hpp.

3548 : lexer::token_inserter(2)
3549 {}

References exprtk::lexer::token_inserter::token_inserter().

Here is the call graph for this function:

Member Function Documentation

◆ ignore_symbol()

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

Definition at line 3551 of file exprtk.hpp.

3552 {
3553 ignore_set_.insert(symbol);
3554 }
std::set< std::string, details::ilesscompare > ignore_set_
Definition exprtk.hpp:3600

References ignore_set_.

◆ insert() [1/5]

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

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

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, exprtk_override, and ignore_set_.

◆ insert() [2/5]

virtual int exprtk::lexer::token_inserter::insert ( const token & ,
const token & ,
const token & ,
const token & ,
const token & ,
token &  )
inlinevirtual

Reimplemented from exprtk::lexer::token_inserter.

Definition at line 3401 of file exprtk.hpp.

◆ insert() [3/5]

virtual int exprtk::lexer::token_inserter::insert ( const token & ,
const token & ,
const token & ,
const token & ,
token &  )
inlinevirtual

Reimplemented from exprtk::lexer::token_inserter.

Definition at line 3398 of file exprtk.hpp.

◆ insert() [4/5]

virtual int exprtk::lexer::token_inserter::insert ( const token & ,
const token & ,
const token & ,
token &  )
inlinevirtual

Reimplemented from exprtk::lexer::token_inserter.

Definition at line 3395 of file exprtk.hpp.

◆ insert() [5/5]

virtual int exprtk::lexer::token_inserter::insert ( const token & ,
token &  )
inlinevirtual

Reimplemented from exprtk::lexer::token_inserter.

Definition at line 3389 of file exprtk.hpp.

Member Data Documentation

◆ ignore_set_

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

Definition at line 3600 of file exprtk.hpp.

Referenced by ignore_symbol(), and insert().


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