113bb9b5ac
John Gray
179 lines
2.3 KiB
Plaintext
179 lines
2.3 KiB
Plaintext
|
|
%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
|
|
;
|
|
|
|
|
|
|
|
|
|
|
|
|