C++ Mathematical Expression Toolkit (ExprTk) release
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
exprtk::lexer::token Struct Reference

#include <exprtk.hpp>

Public Types

enum  token_type {
  e_none = 0 , e_error = 1 , e_err_symbol = 2 , e_err_number = 3 ,
  e_err_string = 4 , e_err_sfunc = 5 , e_eof = 6 , e_number = 7 ,
  e_symbol = 8 , e_string = 9 , e_assign = 10 , e_addass = 11 ,
  e_subass = 12 , e_mulass = 13 , e_divass = 14 , e_modass = 15 ,
  e_shr = 16 , e_shl = 17 , e_lte = 18 , e_ne = 19 ,
  e_gte = 20 , e_swap = 21 , e_lt = '<' , e_gt = '>' ,
  e_eq = '=' , e_rbracket = ')' , e_lbracket = '(' , e_rsqrbracket = ']' ,
  e_lsqrbracket = '[' , e_rcrlbracket = '}' , e_lcrlbracket = '{' , e_comma = ',' ,
  e_add = '+' , e_sub = '-' , e_div = '/' , e_mul = '*' ,
  e_mod = '' , e_pow = '^' , e_colon = ':' , e_ternary = '?'
}
 

Public Member Functions

 token ()
 
void clear ()
 
template<typename Iterator >
tokenset_operator (const token_type tt, const Iterator begin, const Iterator end, const Iterator base_begin=Iterator(0))
 
template<typename Iterator >
tokenset_symbol (const Iterator begin, const Iterator end, const Iterator base_begin=Iterator(0))
 
template<typename Iterator >
tokenset_numeric (const Iterator begin, const Iterator end, const Iterator base_begin=Iterator(0))
 
template<typename Iterator >
tokenset_string (const Iterator begin, const Iterator end, const Iterator base_begin=Iterator(0))
 
tokenset_string (const std::string &s, const std::size_t p)
 
template<typename Iterator >
tokenset_error (const token_type et, const Iterator begin, const Iterator end, const Iterator base_begin=Iterator(0))
 
bool is_error () const
 

Static Public Member Functions

static std::string to_str (const token_type t)
 
static std::string seperator_to_str (const token_type t)
 

Public Attributes

token_type type
 
std::string value
 
std::size_t position
 

Detailed Description

Definition at line 2272 of file exprtk.hpp.

Member Enumeration Documentation

◆ token_type

Enumerator
e_none 
e_error 
e_err_symbol 
e_err_number 
e_err_string 
e_err_sfunc 
e_eof 
e_number 
e_symbol 
e_string 
e_assign 
e_addass 
e_subass 
e_mulass 
e_divass 
e_modass 
e_shr 
e_shl 
e_lte 
e_ne 
e_gte 
e_swap 
e_lt 
e_gt 
e_eq 
e_rbracket 
e_lbracket 
e_rsqrbracket 
e_lsqrbracket 
e_rcrlbracket 
e_lcrlbracket 
e_comma 
e_add 
e_sub 
e_div 
e_mul 
e_mod 
e_pow 
e_colon 
e_ternary 

Definition at line 2274 of file exprtk.hpp.

2275 {
2276 e_none = 0, e_error = 1, e_err_symbol = 2,
2278 e_eof = 6, e_number = 7, e_symbol = 8,
2279 e_string = 9, e_assign = 10, e_addass = 11,
2280 e_subass = 12, e_mulass = 13, e_divass = 14,
2281 e_modass = 15, e_shr = 16, e_shl = 17,
2282 e_lte = 18, e_ne = 19, e_gte = 20,
2283 e_swap = 21, e_lt = '<', e_gt = '>',
2284 e_eq = '=', e_rbracket = ')', e_lbracket = '(',
2285 e_rsqrbracket = ']', e_lsqrbracket = '[', e_rcrlbracket = '}',
2286 e_lcrlbracket = '{', e_comma = ',', e_add = '+',
2287 e_sub = '-', e_div = '/', e_mul = '*',
2288 e_mod = '%', e_pow = '^', e_colon = ':',
2289 e_ternary = '?'
2290 };

Constructor & Destructor Documentation

◆ token()

exprtk::lexer::token::token ( )
inline

Definition at line 2292 of file exprtk.hpp.

2293 : type(e_none)
2294 , value("")
2295 , position(std::numeric_limits<std::size_t>::max())
2296 {}
std::size_t position
Definition exprtk.hpp:2454
std::string value
Definition exprtk.hpp:2453

Member Function Documentation

◆ clear()

void exprtk::lexer::token::clear ( )
inline

Definition at line 2298 of file exprtk.hpp.

2299 {
2300 type = e_none;
2301 value = "";
2302 position = std::numeric_limits<std::size_t>::max();
2303 }

References e_none, position, type, and value.

Referenced by exprtk::lexer::generator::process(), and exprtk::lexer::helper::bracket_checker::reset().

Here is the caller graph for this function:

◆ is_error()

bool exprtk::lexer::token::is_error ( ) const
inline

Definition at line 2443 of file exprtk.hpp.

2444 {
2445 return (e_error == type) ||
2446 (e_err_symbol == type) ||
2447 (e_err_number == type) ||
2448 (e_err_string == type) ||
2449 (e_err_sfunc == type) ;
2450 }

References e_err_number, e_err_sfunc, e_err_string, e_err_symbol, e_error, and type.

◆ seperator_to_str()

static std::string exprtk::lexer::token::seperator_to_str ( const token_type  t)
inlinestatic

Definition at line 2428 of file exprtk.hpp.

2429 {
2430 switch (t)
2431 {
2432 case e_comma : return ",";
2433 case e_colon : return ":";
2434 case e_eof : return ";";
2435 default : return "UNKNOWN";
2436 }
2437
2438 #if !defined(_MSC_VER) && !defined(__NVCOMPILER)
2439 return "UNKNOWN";
2440 #endif
2441 }

References e_colon, e_comma, and e_eof.

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

Here is the caller graph for this function:

◆ set_error()

template<typename Iterator >
token & exprtk::lexer::token::set_error ( const token_type  et,
const Iterator  begin,
const Iterator  end,
const Iterator  base_begin = Iterator(0) 
)
inline

Definition at line 2356 of file exprtk.hpp.

2359 {
2360 if (
2361 (e_error == et) ||
2362 (e_err_symbol == et) ||
2363 (e_err_number == et) ||
2364 (e_err_string == et) ||
2365 (e_err_sfunc == et)
2366 )
2367 {
2368 type = et;
2369 }
2370 else
2371 type = e_error;
2372
2373 value.assign(begin,end);
2374
2375 if (base_begin)
2376 position = static_cast<std::size_t>(std::distance(base_begin,begin));
2377
2378 return (*this);
2379 }

References e_err_number, e_err_sfunc, e_err_string, e_err_symbol, e_error, position, type, and value.

Referenced by exprtk::lexer::generator::scan_number(), exprtk::lexer::generator::scan_special_function(), exprtk::lexer::generator::scan_string(), exprtk::lexer::generator::scan_token(), and exprtk::lexer::generator::skip_comments().

Here is the caller graph for this function:

◆ set_numeric()

template<typename Iterator >
token & exprtk::lexer::token::set_numeric ( const Iterator  begin,
const Iterator  end,
const Iterator  base_begin = Iterator(0) 
)
inline

Definition at line 2328 of file exprtk.hpp.

2329 {
2330 type = e_number;
2331 value.assign(begin,end);
2332 if (base_begin)
2333 position = static_cast<std::size_t>(std::distance(base_begin,begin));
2334 return (*this);
2335 }

References e_number, position, type, and value.

Referenced by exprtk::lexer::generator::scan_number().

Here is the caller graph for this function:

◆ set_operator()

template<typename Iterator >
token & exprtk::lexer::token::set_operator ( const token_type  tt,
const Iterator  begin,
const Iterator  end,
const Iterator  base_begin = Iterator(0) 
)
inline

Definition at line 2306 of file exprtk.hpp.

2309 {
2310 type = tt;
2311 value.assign(begin,end);
2312 if (base_begin)
2313 position = static_cast<std::size_t>(std::distance(base_begin,begin));
2314 return (*this);
2315 }

References position, type, and value.

Referenced by exprtk::lexer::generator::process(), and exprtk::lexer::generator::scan_operator().

Here is the caller graph for this function:

◆ set_string() [1/2]

template<typename Iterator >
token & exprtk::lexer::token::set_string ( const Iterator  begin,
const Iterator  end,
const Iterator  base_begin = Iterator(0) 
)
inline

Definition at line 2338 of file exprtk.hpp.

2339 {
2340 type = e_string;
2341 value.assign(begin,end);
2342 if (base_begin)
2343 position = static_cast<std::size_t>(std::distance(base_begin,begin));
2344 return (*this);
2345 }

References e_string, position, type, and value.

Referenced by exprtk::lexer::generator::scan_string().

Here is the caller graph for this function:

◆ set_string() [2/2]

token & exprtk::lexer::token::set_string ( const std::string &  s,
const std::size_t  p 
)
inline

Definition at line 2347 of file exprtk.hpp.

2348 {
2349 type = e_string;
2350 value = s;
2351 position = p;
2352 return (*this);
2353 }

References e_string, position, type, and value.

◆ set_symbol()

template<typename Iterator >
token & exprtk::lexer::token::set_symbol ( const Iterator  begin,
const Iterator  end,
const Iterator  base_begin = Iterator(0) 
)
inline

Definition at line 2318 of file exprtk.hpp.

2319 {
2320 type = e_symbol;
2321 value.assign(begin,end);
2322 if (base_begin)
2323 position = static_cast<std::size_t>(std::distance(base_begin,begin));
2324 return (*this);
2325 }

References e_symbol, position, type, and value.

Referenced by exprtk::lexer::generator::scan_operator(), exprtk::lexer::generator::scan_special_function(), exprtk::lexer::generator::scan_symbol(), and exprtk::lexer::generator::scan_token().

Here is the caller graph for this function:

◆ to_str()

static std::string exprtk::lexer::token::to_str ( const token_type  t)
inlinestatic

Definition at line 2381 of file exprtk.hpp.

2382 {
2383 switch (t)
2384 {
2385 case e_none : return "NONE";
2386 case e_error : return "ERROR";
2387 case e_err_symbol : return "ERROR_SYMBOL";
2388 case e_err_number : return "ERROR_NUMBER";
2389 case e_err_string : return "ERROR_STRING";
2390 case e_eof : return "EOF";
2391 case e_number : return "NUMBER";
2392 case e_symbol : return "SYMBOL";
2393 case e_string : return "STRING";
2394 case e_assign : return ":=";
2395 case e_addass : return "+=";
2396 case e_subass : return "-=";
2397 case e_mulass : return "*=";
2398 case e_divass : return "/=";
2399 case e_modass : return "%=";
2400 case e_shr : return ">>";
2401 case e_shl : return "<<";
2402 case e_lte : return "<=";
2403 case e_ne : return "!=";
2404 case e_gte : return ">=";
2405 case e_lt : return "<";
2406 case e_gt : return ">";
2407 case e_eq : return "=";
2408 case e_rbracket : return ")";
2409 case e_lbracket : return "(";
2410 case e_rsqrbracket : return "]";
2411 case e_lsqrbracket : return "[";
2412 case e_rcrlbracket : return "}";
2413 case e_lcrlbracket : return "{";
2414 case e_comma : return ",";
2415 case e_add : return "+";
2416 case e_sub : return "-";
2417 case e_div : return "/";
2418 case e_mul : return "*";
2419 case e_mod : return "%";
2420 case e_pow : return "^";
2421 case e_colon : return ":";
2422 case e_ternary : return "?";
2423 case e_swap : return "<=>";
2424 default : return "UNKNOWN";
2425 }
2426 }

References e_add, e_addass, e_assign, e_colon, e_comma, e_div, e_divass, e_eof, e_eq, e_err_number, e_err_string, e_err_symbol, e_error, e_gt, e_gte, e_lbracket, e_lcrlbracket, e_lsqrbracket, e_lt, e_lte, e_mod, e_modass, e_mul, e_mulass, e_ne, e_none, e_number, e_pow, e_rbracket, e_rcrlbracket, e_rsqrbracket, e_shl, e_shr, e_string, e_sub, e_subass, e_swap, e_symbol, and e_ternary.

Referenced by exprtk::lexer::helper::dump(), exprtk::parser< T >::parse_multi_sequence(), and exprtk::parser< T >::parse_repeat_until_loop().

Here is the caller graph for this function:

Member Data Documentation

◆ position

std::size_t exprtk::lexer::token::position

◆ type

token_type exprtk::lexer::token::type

◆ value

std::string exprtk::lexer::token::value

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