-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathquery_bnf.txt
More file actions
72 lines (44 loc) · 1.88 KB
/
query_bnf.txt
File metadata and controls
72 lines (44 loc) · 1.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#################################################
# Core grammar / pipeline rules
#################################################
<query> ::= <stmt> | <query> <stmt>
<stmt> ::= <pipelineDecl> | <directive>
<directive> ::= '!' <directiveType>
| '!' <directiveType> '(' <directiveParams> ')'
<directiveType> ::= 'import' | 'instrument'
<pipelineDecl> ::= <identifier> '=' <expr>
| <expr>
<expr> ::= <pipelineOp>
<pipelineOp> ::= <pipelineExpr>
| <pipelineOp> ('|' | '&' | '-') <pipelineExpr>
<pipelineExpr> ::= <term>
| <selectorDef>
| <pipelineExpr> '|>' <selectorDef>
<term> ::= <ref>
| '(' <expr> ')'
| '[' <exprList> ']'
<exprList> ::= <expr>
| <exprList> ',' <expr>
<selectorDef> ::= <selectorType> '(' <params> ')'
| <selectorType> '(' ')'
| <selectorType>
<ref> ::= '%' <identifier> | '%%'
<selectorType> ::= <identifier>
<params> ::= <param>
| <params> ',' <param>
<param> ::= <string> | <int> | <float> | <bool>
#################################################
# Lexical / helper rules
#################################################
<identifier> ::= <letter> | <letter> <idRest>
<idRest> ::= <idChar> | <idChar> <idRest>
<idChar> ::= '_' | <letter> | <digit>
<letter> ::= [a-z] | [A-Z]
<char> ::= any character
<string> ::= '"' <char>+ '"'
<bool> ::= 'true' | 'false'
<digit> ::= [0-9]
<int> ::= '-' <digit>+ | <digit>+
<float> ::= <neg_float> | <pos_float>
<neg_float> ::= '-' <pos_float>
<pos_float> ::= <digit>* '.' <digit>+