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

Member Typedef Documentation

◆ set_t

Definition at line 3936 of file exprtk.hpp.

◆ token_pair_t

Definition at line 3935 of file exprtk.hpp.

Constructor & Destructor Documentation

◆ sequence_validator()

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

Definition at line 3942 of file exprtk.hpp.

3943 : lexer::token_scanner(2)
3944 {
3949
3968 }
void add_invalid(const lexer::token::token_type base, const lexer::token::token_type t)
Definition exprtk.hpp:4016
void add_invalid_set1(const lexer::token::token_type t)
Definition exprtk.hpp:4021

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

4017 {
4018 invalid_comb_.insert(std::make_pair(base,t));
4019 }

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

4010 {
4011 error_list_.clear();
4012 }
std::vector< std::pair< lexer::token, lexer::token > > error_list_
Definition exprtk.hpp:4100

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

3997 {
3998 if (index < error_list_.size())
3999 {
4000 return error_list_[index];
4001 }
4002 else
4003 {
4004 static const lexer::token error_token;
4005 return std::make_pair(error_token,error_token);
4006 }
4007 }

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

3992 {
3993 return error_list_.size();
3994 }

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

4041 {
4042 if (details::is_right_bracket(static_cast<details::char_t>(base)))
4043 {
4044 switch (t)
4045 {
4046 case lexer::token::e_assign : return (']' != base);
4047 case lexer::token::e_string : return (')' != base);
4048 default : return false;
4049 }
4050 }
4051 else if (details::is_left_bracket(static_cast<details::char_t>(base)))
4052 {
4053 if (details::is_right_bracket(static_cast<details::char_t>(t)))
4054 return false;
4055 else if (details::is_left_bracket(static_cast<details::char_t>(t)))
4056 return false;
4057 else
4058 {
4059 switch (t)
4060 {
4061 case lexer::token::e_number : return false;
4062 case lexer::token::e_symbol : return false;
4063 case lexer::token::e_string : return false;
4064 case lexer::token::e_add : return false;
4065 case lexer::token::e_sub : return false;
4066 case lexer::token::e_colon : return false;
4067 case lexer::token::e_ternary : return false;
4068 default : return true ;
4069 }
4070 }
4071 }
4072 else if (details::is_right_bracket(static_cast<details::char_t>(t)))
4073 {
4074 switch (base)
4075 {
4076 case lexer::token::e_number : return false;
4077 case lexer::token::e_symbol : return false;
4078 case lexer::token::e_string : return false;
4079 case lexer::token::e_eof : return false;
4080 case lexer::token::e_colon : return false;
4081 case lexer::token::e_ternary : return false;
4082 default : return true ;
4083 }
4084 }
4085 else if (details::is_left_bracket(static_cast<details::char_t>(t)))
4086 {
4087 switch (base)
4088 {
4089 case lexer::token::e_rbracket : return true;
4090 case lexer::token::e_rsqrbracket : return true;
4091 case lexer::token::e_rcrlbracket : return true;
4092 default : return false;
4093 }
4094 }
4095
4096 return false;
4097 }
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 3975 of file exprtk.hpp.

3976 {
3977 const set_t::value_type p = std::make_pair(t0.type,t1.type);
3978
3979 if (invalid_bracket_check(t0.type,t1.type))
3980 {
3981 error_list_.push_back(std::make_pair(t0,t1));
3982 }
3983 else if (invalid_comb_.find(p) != invalid_comb_.end())
3984 {
3985 error_list_.push_back(std::make_pair(t0,t1));
3986 }
3987
3988 return true;
3989 }
bool invalid_bracket_check(const lexer::token::token_type base, const lexer::token::token_type t)
Definition exprtk.hpp:4040

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

3971 {
3972 return error_list_.empty();
3973 }

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

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


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