/
sql.grammar
61 lines (56 loc) · 1 KB
/
sql.grammar
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
@precedence { dot }
@top Script {
Statement { element* Semi }*
Statement { element+ }?
}
@skip { whitespace | LineComment | BlockComment }
element {
String |
Number |
Bool |
Null |
Identifier |
QuotedIdentifier |
Bits |
Bytes |
Builtin |
SpecialVar |
CompositeIdentifier {
Dot? (QuotedIdentifier | Identifier | SpecialVar) (!dot Dot (QuotedIdentifier | Identifier | SpecialVar))+
} |
Keyword |
Type |
Operator |
Punctuation |
Parens { ParenL element* ParenR } |
Braces { BraceL element* BraceR } |
Brackets { BracketL element* BracketR }
}
@external tokens tokens from "./tokens" {
whitespace
LineComment[isolate]
BlockComment[isolate]
String[isolate]
Number
Bool
Null
ParenL[@name="("]
ParenR[@name=")"]
BraceL[@name="{"]
BraceR[@name="}"]
BracketL[@name="["]
BracketR[@name="]"]
Semi[@name=";"]
Dot[@name="."]
Operator
Punctuation
SpecialVar
Identifier
QuotedIdentifier[isolate]
Keyword
Type
Bits
Bytes
Builtin
}
@detectDelim