mirror of
https://github.com/ArashPartow/exprtk.git
synced 2025-06-12 16:27:23 +00:00
fixed shift operators << and >>
This commit is contained in:
58
exprtk.hpp
58
exprtk.hpp
@ -20496,6 +20496,8 @@ namespace exprtk
|
|||||||
case token_t::e_gt : current_state.set(e_level05,e_level06,details:: e_gt); break;
|
case token_t::e_gt : current_state.set(e_level05,e_level06,details:: e_gt); break;
|
||||||
case token_t::e_add : current_state.set(e_level07,e_level08,details:: e_add); break;
|
case token_t::e_add : current_state.set(e_level07,e_level08,details:: e_add); break;
|
||||||
case token_t::e_sub : current_state.set(e_level07,e_level08,details:: e_sub); break;
|
case token_t::e_sub : current_state.set(e_level07,e_level08,details:: e_sub); break;
|
||||||
|
case token_t::e_shl : current_state.set(e_level07,e_level08,details:: e_shl); break;
|
||||||
|
case token_t::e_shr : current_state.set(e_level07,e_level08,details:: e_shr); break;
|
||||||
case token_t::e_div : current_state.set(e_level10,e_level11,details:: e_div); break;
|
case token_t::e_div : current_state.set(e_level10,e_level11,details:: e_div); break;
|
||||||
case token_t::e_mul : current_state.set(e_level10,e_level11,details:: e_mul); break;
|
case token_t::e_mul : current_state.set(e_level10,e_level11,details:: e_mul); break;
|
||||||
case token_t::e_mod : current_state.set(e_level10,e_level11,details:: e_mod); break;
|
case token_t::e_mod : current_state.set(e_level10,e_level11,details:: e_mod); break;
|
||||||
@ -25314,11 +25316,13 @@ namespace exprtk
|
|||||||
{
|
{
|
||||||
expression_node_ptr branch = error_node();
|
expression_node_ptr branch = error_node();
|
||||||
|
|
||||||
if (token_t::e_number == current_token().type)
|
const token_t &tk = current_token();
|
||||||
|
const token_t::token_type token = tk.type;
|
||||||
|
if (token_t::e_number == token)
|
||||||
{
|
{
|
||||||
T numeric_value = T(0);
|
T numeric_value = T(0);
|
||||||
|
|
||||||
if (details::string_to_real(current_token().value, numeric_value))
|
if (details::string_to_real(tk.value, numeric_value))
|
||||||
{
|
{
|
||||||
expression_node_ptr literal_exp = expression_generator_(numeric_value);
|
expression_node_ptr literal_exp = expression_generator_(numeric_value);
|
||||||
|
|
||||||
@ -25326,8 +25330,8 @@ namespace exprtk
|
|||||||
{
|
{
|
||||||
set_error(
|
set_error(
|
||||||
make_error(parser_error::e_numeric,
|
make_error(parser_error::e_numeric,
|
||||||
current_token(),
|
tk,
|
||||||
"ERR191 - Failed generate node for scalar: '" + current_token().value + "'",
|
"ERR191 - Failed generate node for scalar: '" + tk.value + "'",
|
||||||
exprtk_error_location));
|
exprtk_error_location));
|
||||||
|
|
||||||
return error_node();
|
return error_node();
|
||||||
@ -25340,24 +25344,24 @@ namespace exprtk
|
|||||||
{
|
{
|
||||||
set_error(
|
set_error(
|
||||||
make_error(parser_error::e_numeric,
|
make_error(parser_error::e_numeric,
|
||||||
current_token(),
|
tk,
|
||||||
"ERR192 - Failed to convert '" + current_token().value + "' to a number",
|
"ERR192 - Failed to convert '" + tk.value + "' to a number",
|
||||||
exprtk_error_location));
|
exprtk_error_location));
|
||||||
|
|
||||||
return error_node();
|
return error_node();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (token_t::e_symbol == current_token().type)
|
else if (token_t::e_symbol == token)
|
||||||
{
|
{
|
||||||
branch = parse_symbol();
|
branch = parse_symbol();
|
||||||
}
|
}
|
||||||
#ifndef exprtk_disable_string_capabilities
|
#ifndef exprtk_disable_string_capabilities
|
||||||
else if (token_t::e_string == current_token().type)
|
else if (token_t::e_string == token)
|
||||||
{
|
{
|
||||||
branch = parse_const_string();
|
branch = parse_const_string();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
else if (token_t::e_lbracket == current_token().type)
|
else if (token_t::e_lbracket == token)
|
||||||
{
|
{
|
||||||
next_token();
|
next_token();
|
||||||
|
|
||||||
@ -25367,8 +25371,8 @@ namespace exprtk
|
|||||||
{
|
{
|
||||||
set_error(
|
set_error(
|
||||||
make_error(parser_error::e_syntax,
|
make_error(parser_error::e_syntax,
|
||||||
current_token(),
|
tk,
|
||||||
"ERR193 - Expected ')' instead of: '" + current_token().value + "'",
|
"ERR193 - Expected ')' instead of: '" + tk.value + "'",
|
||||||
exprtk_error_location));
|
exprtk_error_location));
|
||||||
|
|
||||||
free_node(node_allocator_,branch);
|
free_node(node_allocator_,branch);
|
||||||
@ -25382,7 +25386,7 @@ namespace exprtk
|
|||||||
return error_node();
|
return error_node();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (token_t::e_lsqrbracket == current_token().type)
|
else if (token_t::e_lsqrbracket == token)
|
||||||
{
|
{
|
||||||
next_token();
|
next_token();
|
||||||
|
|
||||||
@ -25392,8 +25396,8 @@ namespace exprtk
|
|||||||
{
|
{
|
||||||
set_error(
|
set_error(
|
||||||
make_error(parser_error::e_syntax,
|
make_error(parser_error::e_syntax,
|
||||||
current_token(),
|
tk,
|
||||||
"ERR194 - Expected ']' instead of: '" + current_token().value + "'",
|
"ERR194 - Expected ']' instead of: '" + tk.value + "'",
|
||||||
exprtk_error_location));
|
exprtk_error_location));
|
||||||
|
|
||||||
free_node(node_allocator_,branch);
|
free_node(node_allocator_,branch);
|
||||||
@ -25407,7 +25411,7 @@ namespace exprtk
|
|||||||
return error_node();
|
return error_node();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (token_t::e_lcrlbracket == current_token().type)
|
else if (token_t::e_lcrlbracket == token)
|
||||||
{
|
{
|
||||||
next_token();
|
next_token();
|
||||||
|
|
||||||
@ -25417,8 +25421,8 @@ namespace exprtk
|
|||||||
{
|
{
|
||||||
set_error(
|
set_error(
|
||||||
make_error(parser_error::e_syntax,
|
make_error(parser_error::e_syntax,
|
||||||
current_token(),
|
tk,
|
||||||
"ERR195 - Expected '}' instead of: '" + current_token().value + "'",
|
"ERR195 - Expected '}' instead of: '" + tk.value + "'",
|
||||||
exprtk_error_location));
|
exprtk_error_location));
|
||||||
|
|
||||||
free_node(node_allocator_,branch);
|
free_node(node_allocator_,branch);
|
||||||
@ -25432,7 +25436,7 @@ namespace exprtk
|
|||||||
return error_node();
|
return error_node();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (token_t::e_sub == current_token().type)
|
else if (token_t::e_sub == token)
|
||||||
{
|
{
|
||||||
next_token();
|
next_token();
|
||||||
branch = parse_expression(e_level11);
|
branch = parse_expression(e_level11);
|
||||||
@ -25448,16 +25452,26 @@ namespace exprtk
|
|||||||
branch = expression_generator_(details::e_neg,branch);
|
branch = expression_generator_(details::e_neg,branch);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (token_t::e_add == current_token().type)
|
else if (token_t::e_add == token)
|
||||||
{
|
{
|
||||||
next_token();
|
next_token();
|
||||||
branch = parse_expression(e_level13);
|
branch = parse_expression(e_level13);
|
||||||
}
|
}
|
||||||
else if (token_t::e_eof == current_token().type)
|
else if (token_t::e_shl == token)
|
||||||
|
{
|
||||||
|
next_token();
|
||||||
|
branch = parse_expression(e_level13);
|
||||||
|
}
|
||||||
|
else if (token_t::e_shr == token)
|
||||||
|
{
|
||||||
|
next_token();
|
||||||
|
branch = parse_expression(e_level13);
|
||||||
|
}
|
||||||
|
else if (token_t::e_eof == token)
|
||||||
{
|
{
|
||||||
set_error(
|
set_error(
|
||||||
make_error(parser_error::e_syntax,
|
make_error(parser_error::e_syntax,
|
||||||
current_token(),
|
tk,
|
||||||
"ERR196 - Premature end of expression[1]",
|
"ERR196 - Premature end of expression[1]",
|
||||||
exprtk_error_location));
|
exprtk_error_location));
|
||||||
|
|
||||||
@ -25467,7 +25481,7 @@ namespace exprtk
|
|||||||
{
|
{
|
||||||
set_error(
|
set_error(
|
||||||
make_error(parser_error::e_syntax,
|
make_error(parser_error::e_syntax,
|
||||||
current_token(),
|
tk,
|
||||||
"ERR197 - Premature end of expression[2]",
|
"ERR197 - Premature end of expression[2]",
|
||||||
exprtk_error_location));
|
exprtk_error_location));
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user