17 enum ExpressionPart { EP_VALUE, EP_OPERATOR, EP_OPEN, EP_FUNC, EP_CLOSE, EP_LIST_OPEN, EP_LIST_CLOSE, EP_LIST_ACCESS, EP_COMMA };
36 typedef std::pair<unsigned int, unsigned int> expr_stack_entry;
40 bool compress_stack_validate(
int priority, std::vector<expr_stack_entry>& expression_stack,
41 std::vector<ExpressionPart>& parenthesis_stack,
42 std::stack<variant>& value_stack, std::stack<OperatorType>& operator_stack);
44 bool compress_stack_evaluate(
int priority, std::vector<expr_stack_entry>& expression_stack,
45 std::vector<ExpressionPart>& parenthesis_stack,
46 std::stack<variant>& value_stack, std::stack<OperatorType>& operator_stack);
48 std::vector<expression_token> expression_tokens;
50 unsigned int get_nr_comma_separated_expressions(std::vector<expr_stack_entry>& expression_stack,
51 std::vector<ExpressionPart>& parenthesis_stack,
52 std::stack<variant>& value_stack)
const;
54 ExpressionPart find_last_parenthesis(std::vector<expr_stack_entry>& expression_stack,
55 std::vector<ExpressionPart>& parenthesis_stack)
const;
57 mutable std::string last_error;
58 mutable token last_error_token;
65 bool parse(
const token& input_token);
67 void extract_begins(std::vector<unsigned>& begins,
unsigned i0 = 0,
unsigned ie = -1)
const;
68 bool assign_func_decl(
const std::vector<variant>& values)
const;
69 bool is_func_decl()
const;
70 int classify_call(
unsigned i)
const;
72 bool validate(
bool allow_several_values =
false);
75 const std::string& get_last_error()
const;
76 const token& get_last_error_token()
const;