+++ /dev/null
-
-%token QNAME
-%token NAME_COLON_STAR
-%token DOT
-%token DOT_DOT
-%token AT
-%token AXIS_NAME
-%token FUNCTION_NAME
-%token COMMENT
-%token PI
-%token TEXT
-%token NODE
-%token STAR
-%token LPAR
-%token RPAR
-%token LSQB
-%token RSQB
-%token LITERAL
-%token NUMBER
-%token COLON_COLON
-%token DOLLAR_QNAME
-%token SLASH
-%token SLASH_SLASH
-%token VBAR
-%token COMMA
-%token PLUS
-%token MINUS
-%token EQUALS
-%token GT
-%token LT
-%token GTE
-%token LTE
-%token MULTIPLY
-%token AND
-%token OR
-%token MOD
-%token DIV
-%token QUO
-
-%%
-
-expr :
- or_expr
- ;
-
-or_expr :
- and_expr
- | or_expr OR and_expr
- ;
-
-and_expr :
- equality_expr
- | and_expr AND equality_expr
- ;
-
-equality_expr :
- relational_expr
- | equality_expr EQUALS relational_expr
- ;
-
-relational_expr :
- additive_expr
- | relational_expr LT additive_expr
- | relational_expr GT additive_expr
- | relational_expr LTE additive_expr
- | relational_expr GTE additive_expr
- ;
-
-additive_expr :
- multiplicative_expr
- | additive_expr PLUS multiplicative_expr
- | additive_expr MINUS multiplicative_expr
- ;
-
-multiplicative_expr :
- unary_expr
- | multiplicative_expr MULTIPLY unary_expr
- | multiplicative_expr DIV unary_expr
- | multiplicative_expr MOD unary_expr
- ;
-
-unary_expr :
- union_expr
- | '-' unary_expr
- ;
-
-union_expr :
- path_expr
- | union_expr VBAR path_expr
- ;
-
-path_expr :
- location_path
- | primary_expr predicates segment
- ;
-
-segment :
- /* empty */
- | SLASH relative_location_path
- | SLASH_SLASH relative_location_path
- ;
-
-location_path :
- relative_location_path
- | absolute_location_path
- ;
-
-absolute_location_path :
- SLASH
- | SLASH relative_location_path
- | SLASH_SLASH relative_location_path
- ;
-
-relative_location_path :
- step
- | relative_location_path SLASH step
- | relative_location_path SLASH_SLASH step
- ;
-
-step :
- axis node_test predicates
- | DOT
- | DOT_DOT
- ;
-
-axis:
- /* empty */
- | AXIS_NAME COLON_COLON
- | AT
- ;
-
-predicates :
- /* empty */
- | predicates LSQB expr RSQB
- ;
-
-primary_expr :
- DOLLAR_QNAME
- | LPAR expr RPAR
- | LITERAL
- | NUMBER
- | function_call
- ;
-
-function_call :
- FUNCTION_NAME LPAR opt_args RPAR
- ;
-
-opt_args :
- /* empty */
- | args
- ;
-
-args :
- expr
- | args COMMA expr
- ;
-
-node_test :
- QNAME
- | STAR
- | NAME_COLON_STAR
- | PI LPAR opt_literal RPAR
- | COMMENT LPAR RPAR
- | TEXT LPAR RPAR
- | NODE LPAR RPAR
- ;
-
-opt_literal :
- /* empty */
- | LITERAL
- ;
-
-
-
-
-
-