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

Public Member Functions

 sequence_validator ()
 
bool result ()
 
bool operator() (const lexer::token &t0, const lexer::token &t1)
 
std::size_t error_count () const
 
std::pair< lexer::token, lexer::tokenerror (const std::size_t index)
 
void clear_errors ()
 
- Public Member Functions inherited from exprtk::lexer::token_scanner
virtual ~token_scanner ()
 
 token_scanner (const std::size_t &stride)
 
std::size_t process (generator &g)
 
virtual bool operator() (const token &)
 
virtual bool operator() (const token &, const token &, const token &)
 
virtual bool operator() (const token &, const token &, const token &, const token &)
 
- Public Member Functions inherited from exprtk::lexer::helper_interface
virtual void init ()
 
virtual void reset ()
 
virtual ~helper_interface ()
 

Private Types

typedef std::pair< lexer::token::token_type, lexer::token::token_typetoken_pair_t
 
typedef std::set< token_pair_tset_t
 

Private Member Functions

void add_invalid (const lexer::token::token_type base, const lexer::token::token_type t)
 
void add_invalid_set1 (const lexer::token::token_type t)
 
bool invalid_bracket_check (const lexer::token::token_type base, const lexer::token::token_type t)
 

Private Attributes

set_t invalid_comb_
 
std::vector< std::pair< lexer::token, lexer::token > > error_list_
 

Detailed Description

Definition at line 3987 of file exprtk.hpp.

Member Typedef Documentation

◆ set_t

Definition at line 3992 of file exprtk.hpp.

◆ token_pair_t

Definition at line 3991 of file exprtk.hpp.

Constructor & Destructor Documentation

◆ sequence_validator()

exprtk::lexer::helper::sequence_validator::sequence_validator ( )
inline

Definition at line 3998 of file exprtk.hpp.

3999 : lexer::token_scanner(2)
4000 {
4005
4024 }
void add_invalid(const lexer::token::token_type base, const lexer::token::token_type t)
Definition exprtk.hpp:4072
void add_invalid_set1(const lexer::token::token_type t)
Definition exprtk.hpp:4077

References add_invalid(), add_invalid_set1(), exprtk::lexer::token::e_add, exprtk::lexer::token::e_assign, exprtk::lexer::token::e_colon, exprtk::lexer::token::e_comma, exprtk::lexer::token::e_div, exprtk::lexer::token::e_eq, exprtk::lexer::token::e_gt, exprtk::lexer::token::e_gte, exprtk::lexer::token::e_lt, exprtk::lexer::token::e_lte, exprtk::lexer::token::e_mod, exprtk::lexer::token::e_mul, exprtk::lexer::token::e_ne, exprtk::lexer::token::e_number, exprtk::lexer::token::e_pow, exprtk::lexer::token::e_shl, exprtk::lexer::token::e_shr, exprtk::lexer::token::e_string, exprtk::lexer::token::e_sub, and exprtk::lexer::token::e_ternary.

Here is the call graph for this function:

Member Function Documentation

◆ add_invalid()

void exprtk::lexer::helper::sequence_validator::add_invalid ( const lexer::token::token_type  base,
const lexer::token::token_type  t 
)
inlineprivate

Definition at line 4072 of file exprtk.hpp.

4073 {
4074 invalid_comb_.insert(std::make_pair(base,t));
4075 }

References invalid_comb_.

Referenced by add_invalid_set1(), and sequence_validator().

Here is the caller graph for this function:

◆ add_invalid_set1()

void exprtk::lexer::helper::sequence_validator::add_invalid_set1 ( const lexer::token::token_type  t)
inlineprivate

◆ clear_errors()

void exprtk::lexer::helper::sequence_validator::clear_errors ( )
inline

Definition at line 4065 of file exprtk.hpp.

4066 {
4067 error_list_.clear();
4068 }
std::vector< std::pair< lexer::token, lexer::token > > error_list_
Definition exprtk.hpp:4156

References error_list_.

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

Here is the caller graph for this function:

◆ error()

std::pair< lexer::token, lexer::token > exprtk::lexer::helper::sequence_validator::error ( const std::size_t  index)
inline

Definition at line 4052 of file exprtk.hpp.

4053 {
4054 if (index < error_list_.size())
4055 {
4056 return error_list_[index];
4057 }
4058 else
4059 {
4060 static const lexer::token error_token;
4061 return std::make_pair(error_token,error_token);
4062 }
4063 }

References error_list_.

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

Here is the caller graph for this function:

◆ error_count()

std::size_t exprtk::lexer::helper::sequence_validator::error_count ( ) const
inline

Definition at line 4047 of file exprtk.hpp.

4048 {
4049 return error_list_.size();
4050 }

References error_list_.

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

Here is the caller graph for this function:

◆ invalid_bracket_check()

bool exprtk::lexer::helper::sequence_validator::invalid_bracket_check ( const lexer::token::token_type  base,
const lexer::token::token_type  t 
)
inlineprivate

Definition at line 4096 of file exprtk.hpp.

4097 {
4098 if (details::is_right_bracket(static_cast<details::char_t>(base)))
4099 {
4100 switch (t)
4101 {
4102 case lexer::token::e_assign : return (']' != base);
4103 case lexer::token::e_string : return (')' != base);
4104 default : return false;
4105 }
4106 }
4107 else if (details::is_left_bracket(static_cast<details::char_t>(base)))
4108 {
4109 if (details::is_right_bracket(static_cast<details::char_t>(t)))
4110 return false;
4111 else if (details::is_left_bracket(static_cast<details::char_t>(t)))
4112 return false;
4113 else
4114 {
4115 switch (t)
4116 {
4117 case lexer::token::e_number : return false;
4118 case lexer::token::e_symbol : return false;
4119 case lexer::token::e_string : return false;
4120 case lexer::token::e_add : return false;
4121 case lexer::token::e_sub : return false;
4122 case lexer::token::e_colon : return false;
4123 case lexer::token::e_ternary : return false;
4124 default : return true ;
4125 }
4126 }
4127 }
4128 else if (details::is_right_bracket(static_cast<details::char_t>(t)))
4129 {
4130 switch (base)
4131 {
4132 case lexer::token::e_number : return false;
4133 case lexer::token::e_symbol : return false;
4134 case lexer::token::e_string : return false;
4135 case lexer::token::e_eof : return false;
4136 case lexer::token::e_colon : return false;
4137 case lexer::token::e_ternary : return false;
4138 default : return true ;
4139 }
4140 }
4141 else if (details::is_left_bracket(static_cast<details::char_t>(t)))
4142 {
4143 switch (base)
4144 {
4145 case lexer::token::e_rbracket : return true;
4146 case lexer::token::e_rsqrbracket : return true;
4147 case lexer::token::e_rcrlbracket : return true;
4148 default : return false;
4149 }
4150 }
4151
4152 return false;
4153 }
bool is_left_bracket(const char_t c)
Definition exprtk.hpp:142
bool is_right_bracket(const char_t c)
Definition exprtk.hpp:147

References exprtk::lexer::token::e_add, exprtk::lexer::token::e_assign, exprtk::lexer::token::e_colon, exprtk::lexer::token::e_eof, exprtk::lexer::token::e_number, exprtk::lexer::token::e_rbracket, exprtk::lexer::token::e_rcrlbracket, exprtk::lexer::token::e_rsqrbracket, exprtk::lexer::token::e_string, exprtk::lexer::token::e_sub, exprtk::lexer::token::e_symbol, exprtk::lexer::token::e_ternary, exprtk::details::is_left_bracket(), and exprtk::details::is_right_bracket().

Referenced by operator()().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ operator()()

bool exprtk::lexer::helper::sequence_validator::operator() ( const lexer::token t0,
const lexer::token t1 
)
inlinevirtual

Reimplemented from exprtk::lexer::token_scanner.

Definition at line 4031 of file exprtk.hpp.

4032 {
4033 const set_t::value_type p = std::make_pair(t0.type,t1.type);
4034
4035 if (invalid_bracket_check(t0.type,t1.type))
4036 {
4037 error_list_.push_back(std::make_pair(t0,t1));
4038 }
4039 else if (invalid_comb_.find(p) != invalid_comb_.end())
4040 {
4041 error_list_.push_back(std::make_pair(t0,t1));
4042 }
4043
4044 return true;
4045 }
bool invalid_bracket_check(const lexer::token::token_type base, const lexer::token::token_type t)
Definition exprtk.hpp:4096

References error_list_, invalid_bracket_check(), and invalid_comb_.

Here is the call graph for this function:

◆ result()

bool exprtk::lexer::helper::sequence_validator::result ( )
inlinevirtual

Reimplemented from exprtk::lexer::helper_interface.

Definition at line 4026 of file exprtk.hpp.

4027 {
4028 return error_list_.empty();
4029 }

References error_list_.

Member Data Documentation

◆ error_list_

std::vector<std::pair<lexer::token,lexer::token> > exprtk::lexer::helper::sequence_validator::error_list_
private

Definition at line 4156 of file exprtk.hpp.

Referenced by clear_errors(), error(), error_count(), operator()(), and result().

◆ invalid_comb_

set_t exprtk::lexer::helper::sequence_validator::invalid_comb_
private

Definition at line 4155 of file exprtk.hpp.

Referenced by add_invalid(), and operator()().


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