mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-08-28 04:27:19 +02:00
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
|
||
|
;
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|