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 (token_type t)
 

Public Attributes

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

Detailed Description

Definition at line 2231 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 2233 of file exprtk.hpp.

2234 {
2235 e_none = 0, e_error = 1, e_err_symbol = 2,
2237 e_eof = 6, e_number = 7, e_symbol = 8,
2238 e_string = 9, e_assign = 10, e_addass = 11,
2239 e_subass = 12, e_mulass = 13, e_divass = 14,
2240 e_modass = 15, e_shr = 16, e_shl = 17,
2241 e_lte = 18, e_ne = 19, e_gte = 20,
2242 e_swap = 21, e_lt = '<', e_gt = '>',
2243 e_eq = '=', e_rbracket = ')', e_lbracket = '(',
2244 e_rsqrbracket = ']', e_lsqrbracket = '[', e_rcrlbracket = '}',
2245 e_lcrlbracket = '{', e_comma = ',', e_add = '+',
2246 e_sub = '-', e_div = '/', e_mul = '*',
2247 e_mod = '%', e_pow = '^', e_colon = ':',
2248 e_ternary = '?'
2249 };

Constructor & Destructor Documentation

◆ token()

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

Definition at line 2251 of file exprtk.hpp.

2252 : type(e_none)
2253 , value("")
2254 , position(std::numeric_limits<std::size_t>::max())
2255 {}
std::size_t position
Definition exprtk.hpp:2400
std::string value
Definition exprtk.hpp:2399

Member Function Documentation

◆ clear()

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

Definition at line 2257 of file exprtk.hpp.

2258 {
2259 type = e_none;
2260 value = "";
2261 position = std::numeric_limits<std::size_t>::max();
2262 }

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

2388 {
2389 return (
2390 (e_error == type) ||
2391 (e_err_symbol == type) ||
2392 (e_err_number == type) ||
2393 (e_err_string == type) ||
2394 (e_err_sfunc == type)
2395 );
2396 }

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

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

2318 {
2319 if (
2320 (e_error == et) ||
2321 (e_err_symbol == et) ||
2322 (e_err_number == et) ||
2323 (e_err_string == et) ||
2324 (e_err_sfunc == et)
2325 )
2326 {
2327 type = et;
2328 }
2329 else
2330 type = e_error;
2331
2332 value.assign(begin,end);
2333
2334 if (base_begin)
2335 position = static_cast<std::size_t>(std::distance(base_begin,begin));
2336
2337 return (*this);
2338 }

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

2288 {
2289 type = e_number;
2290 value.assign(begin,end);
2291 if (base_begin)
2292 position = static_cast<std::size_t>(std::distance(base_begin,begin));
2293 return (*this);
2294 }

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

2268 {
2269 type = tt;
2270 value.assign(begin,end);
2271 if (base_begin)
2272 position = static_cast<std::size_t>(std::distance(base_begin,begin));
2273 return (*this);
2274 }

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

2298 {
2299 type = e_string;
2300 value.assign(begin,end);
2301 if (base_begin)
2302 position = static_cast<std::size_t>(std::distance(base_begin,begin));
2303 return (*this);
2304 }

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

2307 {
2308 type = e_string;
2309 value = s;
2310 position = p;
2311 return (*this);
2312 }

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

2278 {
2279 type = e_symbol;
2280 value.assign(begin,end);
2281 if (base_begin)
2282 position = static_cast<std::size_t>(std::distance(base_begin,begin));
2283 return (*this);
2284 }

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 ( token_type  t)
inlinestatic

Definition at line 2340 of file exprtk.hpp.

2341 {
2342 switch (t)
2343 {
2344 case e_none : return "NONE";
2345 case e_error : return "ERROR";
2346 case e_err_symbol : return "ERROR_SYMBOL";
2347 case e_err_number : return "ERROR_NUMBER";
2348 case e_err_string : return "ERROR_STRING";
2349 case e_eof : return "EOF";
2350 case e_number : return "NUMBER";
2351 case e_symbol : return "SYMBOL";
2352 case e_string : return "STRING";
2353 case e_assign : return ":=";
2354 case e_addass : return "+=";
2355 case e_subass : return "-=";
2356 case e_mulass : return "*=";
2357 case e_divass : return "/=";
2358 case e_modass : return "%=";
2359 case e_shr : return ">>";
2360 case e_shl : return "<<";
2361 case e_lte : return "<=";
2362 case e_ne : return "!=";
2363 case e_gte : return ">=";
2364 case e_lt : return "<";
2365 case e_gt : return ">";
2366 case e_eq : return "=";
2367 case e_rbracket : return ")";
2368 case e_lbracket : return "(";
2369 case e_rsqrbracket : return "]";
2370 case e_lsqrbracket : return "[";
2371 case e_rcrlbracket : return "}";
2372 case e_lcrlbracket : return "{";
2373 case e_comma : return ",";
2374 case e_add : return "+";
2375 case e_sub : return "-";
2376 case e_div : return "/";
2377 case e_mul : return "*";
2378 case e_mod : return "%";
2379 case e_pow : return "^";
2380 case e_colon : return ":";
2381 case e_ternary : return "?";
2382 case e_swap : return "<=>";
2383 default : return "UNKNOWN";
2384 }
2385 }

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: