#include <xpath_syntax.h>
XPath syntax decoder class. Pure virtual : one need to redefine v_action and i_get_action_counter
TinyXPath::token_syntax_decoder::token_syntax_decoder | ( | ) | [inline] |
virtual TinyXPath::token_syntax_decoder::~token_syntax_decoder | ( | ) | [inline, virtual] |
bool TinyXPath::token_syntax_decoder::o_recognize | ( | xpath_construct | xc_current, | |
bool | o_final | |||
) | [protected] |
Recognize one XPath construction
This function throws exceptions every time there's a failure in a backtracking attempt. This should only happen when o_final is false, otherwise we have a syntax error
xc_current | XPath construction to recognize | |
o_final | true if we need to go on, false if it's just a trial in the backtracking |
References i_get_action_counter(), TinyXPath::lex_2_colon, TinyXPath::lex_2_dot, TinyXPath::lex_2_slash, TinyXPath::lex_and, TinyXPath::lex_at, TinyXPath::lex_cbrack, TinyXPath::lex_colon, TinyXPath::lex_comma, TinyXPath::lex_comment, TinyXPath::lex_cparen, TinyXPath::lex_div, TinyXPath::lex_dollar, TinyXPath::lex_dot, TinyXPath::lex_equal, TinyXPath::lex_gt, TinyXPath::lex_gt_equal, TinyXPath::lex_literal, TinyXPath::lex_lt, TinyXPath::lex_lt_equal, TinyXPath::lex_minus, TinyXPath::lex_mod, TinyXPath::lex_ncname, TinyXPath::lex_node, TinyXPath::lex_not_equal, TinyXPath::lex_number, TinyXPath::lex_obrack, TinyXPath::lex_oparen, TinyXPath::lex_or, TinyXPath::lex_orchar, TinyXPath::lex_plus, TinyXPath::lex_processing_instruction, TinyXPath::lex_slash, TinyXPath::lex_star, TinyXPath::lex_text, TinyXPath::token_list::ltp_get(), TinyXPath::o_is_axis_name(), u_nb_recurs, v_action(), TinyXPath::token_list::v_inc_current(), TinyXPath::token_list::v_set_current(), TinyXPath::xpath_abbreviated_absolute_location_path, TinyXPath::xpath_abbreviated_axis_specifier, TinyXPath::xpath_abbrieviated_step, TinyXPath::xpath_absolute_location_path, TinyXPath::xpath_absolute_location_path_abbrev, TinyXPath::xpath_absolute_location_path_slash, TinyXPath::xpath_absolute_location_path_slash_rel, TinyXPath::xpath_additive_expr, TinyXPath::xpath_additive_expr_minus, TinyXPath::xpath_additive_expr_more_minus, TinyXPath::xpath_additive_expr_more_plus, TinyXPath::xpath_additive_expr_plus, TinyXPath::xpath_additive_expr_simple, TinyXPath::xpath_and_expr, TinyXPath::xpath_and_expr_and, TinyXPath::xpath_and_expr_simple, TinyXPath::xpath_argument, TinyXPath::xpath_axis_name, TinyXPath::xpath_axis_specifier, TinyXPath::xpath_axis_specifier_at, TinyXPath::xpath_axis_specifier_axis_name, TinyXPath::xpath_axis_specifier_empty, TinyXPath::xpath_equality_expr, TinyXPath::xpath_equality_expr_equal, TinyXPath::xpath_equality_expr_not_equal, TinyXPath::xpath_equality_expr_simple, TinyXPath::xpath_expr, TinyXPath::xpath_filter_expr, TinyXPath::xpath_filter_expr_predicate, TinyXPath::xpath_filter_expr_primary, TinyXPath::xpath_function_call, TinyXPath::xpath_location_path, TinyXPath::xpath_location_path_abs, TinyXPath::xpath_location_path_rel, TinyXPath::xpath_multiplicative_expr, TinyXPath::xpath_multiplicative_expr_div, TinyXPath::xpath_multiplicative_expr_mod, TinyXPath::xpath_multiplicative_expr_simple, TinyXPath::xpath_multiplicative_expr_star, TinyXPath::xpath_name_test, TinyXPath::xpath_name_test_ncname, TinyXPath::xpath_name_test_qname, TinyXPath::xpath_name_test_star, TinyXPath::xpath_node_test, TinyXPath::xpath_node_test_name_test, TinyXPath::xpath_node_test_pi, TinyXPath::xpath_node_test_pi_lit, TinyXPath::xpath_node_test_reserved_keyword, TinyXPath::xpath_or_expr, TinyXPath::xpath_or_expr_or, TinyXPath::xpath_or_expr_simple, TinyXPath::xpath_path_expr, TinyXPath::xpath_path_expr_2_slash, TinyXPath::xpath_path_expr_filter, TinyXPath::xpath_path_expr_location_path, TinyXPath::xpath_path_expr_slash, TinyXPath::xpath_predicate, TinyXPath::xpath_predicate_expr, TinyXPath::xpath_primary_expr, TinyXPath::xpath_primary_expr_function_call, TinyXPath::xpath_primary_expr_literal, TinyXPath::xpath_primary_expr_number, TinyXPath::xpath_primary_expr_paren_expr, TinyXPath::xpath_primary_expr_variable, TinyXPath::xpath_relational_expr, TinyXPath::xpath_relational_expr_gt, TinyXPath::xpath_relational_expr_gte, TinyXPath::xpath_relational_expr_lt, TinyXPath::xpath_relational_expr_lte, TinyXPath::xpath_relational_expr_simple, TinyXPath::xpath_relative_location_path, TinyXPath::xpath_relative_location_path_rel_double_slash_step, TinyXPath::xpath_relative_location_path_rel_step, TinyXPath::xpath_relative_location_path_step, TinyXPath::xpath_step, TinyXPath::xpath_step_abbrev, TinyXPath::xpath_step_full, TinyXPath::xpath_unary_expr, TinyXPath::xpath_unary_expr_minus, TinyXPath::xpath_unary_expr_simple, TinyXPath::xpath_union_expr, TinyXPath::xpath_union_expr_simple, TinyXPath::xpath_union_expr_union, TinyXPath::xpath_unknown, TinyXPath::xpath_variable_reference, TinyXPath::xpath_xml_local_part, TinyXPath::xpath_xml_prefix, TinyXPath::xpath_xml_q_name, TinyXPath::xpath_xml_q_name_colon, and TinyXPath::xpath_xml_q_name_simple.
Referenced by v_syntax_decode().
void TinyXPath::token_syntax_decoder::v_syntax_decode | ( | ) |
Decodes the syntax of an XPath expression. On entry, the lexical analysis has already produced a list of basic tokens.
Throws : syntax_error, syntax_overflow
References TinyXPath::cp_disp_class_lex(), TinyXPath::token_list::ltp_get(), o_recognize(), u_nb_recurs, TinyXPath::token_list::v_set_current_top(), TinyXPath::token_list::v_tokenize_expression(), and TinyXPath::xpath_expr.
virtual void TinyXPath::token_syntax_decoder::v_action | ( | xpath_construct | xc_rule, | |
unsigned | u_sub, | |||
unsigned | u_variable = 0 , |
|||
const char * | cp_literal = "" | |||
) | [pure virtual] |
Pure virtual : action taken when processing the rule.
Implemented in TinyXPath::token_redef.
Referenced by o_recognize().
virtual int TinyXPath::token_syntax_decoder::i_get_action_counter | ( | ) | [pure virtual] |
Implemented in TinyXPath::token_redef.
Referenced by o_recognize().
unsigned TinyXPath::token_syntax_decoder::u_nb_recurs [protected] |
Nb of recursions.
Referenced by o_recognize(), and v_syntax_decode().