@surrealdb/lezer 1.0.4 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +3 -3
- package/dist/index.cjs +16 -16
- package/dist/index.js +16 -16
- package/package.json +1 -1
- package/src/parser.js +16 -16
- package/src/parser.terms.js +170 -169
- package/src/surrealql.grammar +47 -43
- package/test/misc/comments.txt +5 -5
- package/test/misc/functions.txt +3 -3
- package/test/misc/identifiers.txt +4 -4
- package/test/misc/javascript.txt +1 -1
- package/test/misc/operators.txt +10 -10
- package/test/misc/subqueries.txt +1 -1
- package/test/statements/create.txt +2 -2
- package/test/statements/define.txt +4 -4
- package/test/statements/delete.txt +1 -1
- package/test/statements/for.txt +1 -1
- package/test/statements/if-else.txt +6 -6
- package/test/statements/insert.txt +2 -2
- package/test/statements/let.txt +3 -3
- package/test/statements/live.txt +1 -1
- package/test/statements/return.txt +2 -2
- package/test/statements/select.txt +8 -8
- package/test/statements/show.txt +2 -2
- package/test/statements/update.txt +7 -7
- package/test/statements/upsert.txt +3 -3
- package/test/values/arrays.txt +5 -5
- package/test/values/closures.txt +3 -3
- package/test/values/format-strings.txt +3 -3
- package/test/values/geometries.txt +3 -3
- package/test/values/idioms.txt +8 -8
- package/test/values/numbers.txt +8 -8
- package/test/values/objects.txt +6 -6
- package/test/values/ranges.txt +3 -3
- package/test/values/record-ids.txt +2 -2
- package/test/values/sets.txt +3 -3
package/test/misc/operators.txt
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
==>
|
|
6
6
|
|
|
7
|
-
SurrealQL(BinaryExpression(Int,Operator,Int))
|
|
7
|
+
SurrealQL(BinaryExpression(Number(Int),Operator,Number(Int)))
|
|
8
8
|
|
|
9
9
|
# Subtraction
|
|
10
10
|
|
|
@@ -12,7 +12,7 @@ SurrealQL(BinaryExpression(Int,Operator,Int))
|
|
|
12
12
|
|
|
13
13
|
==>
|
|
14
14
|
|
|
15
|
-
SurrealQL(BinaryExpression(Int,Operator,Int))
|
|
15
|
+
SurrealQL(BinaryExpression(Number(Int),Operator,Number(Int)))
|
|
16
16
|
|
|
17
17
|
# Multiplication
|
|
18
18
|
|
|
@@ -20,7 +20,7 @@ SurrealQL(BinaryExpression(Int,Operator,Int))
|
|
|
20
20
|
|
|
21
21
|
==>
|
|
22
22
|
|
|
23
|
-
SurrealQL(BinaryExpression(Int,Operator,Int))
|
|
23
|
+
SurrealQL(BinaryExpression(Number(Int),Operator,Number(Int)))
|
|
24
24
|
|
|
25
25
|
# Division
|
|
26
26
|
|
|
@@ -28,7 +28,7 @@ SurrealQL(BinaryExpression(Int,Operator,Int))
|
|
|
28
28
|
|
|
29
29
|
==>
|
|
30
30
|
|
|
31
|
-
SurrealQL(BinaryExpression(Int,Operator,Int))
|
|
31
|
+
SurrealQL(BinaryExpression(Number(Int),Operator,Number(Int)))
|
|
32
32
|
|
|
33
33
|
# Power
|
|
34
34
|
|
|
@@ -36,7 +36,7 @@ SurrealQL(BinaryExpression(Int,Operator,Int))
|
|
|
36
36
|
|
|
37
37
|
==>
|
|
38
38
|
|
|
39
|
-
SurrealQL(BinaryExpression(Int,Operator,Int))
|
|
39
|
+
SurrealQL(BinaryExpression(Number(Int),Operator,Number(Int)))
|
|
40
40
|
|
|
41
41
|
# Equality
|
|
42
42
|
|
|
@@ -178,7 +178,7 @@ SurrealQL(BinaryExpression(Ident,Operator,Ident))
|
|
|
178
178
|
|
|
179
179
|
==>
|
|
180
180
|
|
|
181
|
-
SurrealQL(BinaryExpression(Int,Operator,Int))
|
|
181
|
+
SurrealQL(BinaryExpression(Number(Int),Operator,Number(Int)))
|
|
182
182
|
|
|
183
183
|
# Unicode division
|
|
184
184
|
|
|
@@ -186,7 +186,7 @@ SurrealQL(BinaryExpression(Int,Operator,Int))
|
|
|
186
186
|
|
|
187
187
|
==>
|
|
188
188
|
|
|
189
|
-
SurrealQL(BinaryExpression(Int,Operator,Int))
|
|
189
|
+
SurrealQL(BinaryExpression(Number(Int),Operator,Number(Int)))
|
|
190
190
|
|
|
191
191
|
# Matches operator with distance
|
|
192
192
|
|
|
@@ -194,7 +194,7 @@ x @1@ y
|
|
|
194
194
|
|
|
195
195
|
==>
|
|
196
196
|
|
|
197
|
-
SurrealQL(BinaryExpression(Ident,Operator(Int),Ident))
|
|
197
|
+
SurrealQL(BinaryExpression(Ident,Operator(Number(Int)),Ident))
|
|
198
198
|
|
|
199
199
|
# Addition assignment in expression
|
|
200
200
|
|
|
@@ -202,7 +202,7 @@ a += 1
|
|
|
202
202
|
|
|
203
203
|
==>
|
|
204
204
|
|
|
205
|
-
SurrealQL(BinaryExpression(Ident,Operator,Int))
|
|
205
|
+
SurrealQL(BinaryExpression(Ident,Operator,Number(Int)))
|
|
206
206
|
|
|
207
207
|
# Subtraction assignment in expression
|
|
208
208
|
|
|
@@ -210,4 +210,4 @@ a -= 1
|
|
|
210
210
|
|
|
211
211
|
==>
|
|
212
212
|
|
|
213
|
-
SurrealQL(BinaryExpression(Ident,Operator,Int))
|
|
213
|
+
SurrealQL(BinaryExpression(Ident,Operator,Number(Int)))
|
package/test/misc/subqueries.txt
CHANGED
|
@@ -20,7 +20,7 @@ CREATE person SET name = "Tobie", age = 30
|
|
|
20
20
|
|
|
21
21
|
==>
|
|
22
22
|
|
|
23
|
-
SurrealQL(CreateStatement(Keyword,Ident,SetClause(Keyword,FieldAssignment(Ident,Operator,String),FieldAssignment(Ident,Operator,Int))))
|
|
23
|
+
SurrealQL(CreateStatement(Keyword,Ident,SetClause(Keyword,FieldAssignment(Ident,Operator,String),FieldAssignment(Ident,Operator,Number(Int)))))
|
|
24
24
|
|
|
25
25
|
# Create with CONTENT
|
|
26
26
|
|
|
@@ -28,7 +28,7 @@ CREATE person CONTENT {name: "Tobie", age: 30}
|
|
|
28
28
|
|
|
29
29
|
==>
|
|
30
30
|
|
|
31
|
-
SurrealQL(CreateStatement(Keyword,Ident,ContentClause(Keyword,Object(BraceOpen,ObjectContent(ObjectProperty(ObjectKey(KeyName),Colon,String),ObjectProperty(ObjectKey(KeyName),Colon,Int)),BraceClose))))
|
|
31
|
+
SurrealQL(CreateStatement(Keyword,Ident,ContentClause(Keyword,Object(BraceOpen,ObjectContent(ObjectProperty(ObjectKey(KeyName),Colon,String),ObjectProperty(ObjectKey(KeyName),Colon,Number(Int))),BraceClose))))
|
|
32
32
|
|
|
33
33
|
# Create with RETURN fields
|
|
34
34
|
|
|
@@ -60,7 +60,7 @@ DEFINE FIELD age ON TABLE person TYPE number DEFAULT 0
|
|
|
60
60
|
|
|
61
61
|
==>
|
|
62
62
|
|
|
63
|
-
SurrealQL(DefineStatement(Keyword,Keyword,Idiom(Ident),OnTableClause(Keyword,Keyword,Ident),TypeClause(Keyword,TypeName),DefaultClause(Keyword,DefaultAlways,Int)))
|
|
63
|
+
SurrealQL(DefineStatement(Keyword,Keyword,Idiom(Ident),OnTableClause(Keyword,Keyword,Ident),TypeClause(Keyword,TypeName),DefaultClause(Keyword,DefaultAlways,Number(Int))))
|
|
64
64
|
|
|
65
65
|
# Define field with assert
|
|
66
66
|
|
|
@@ -132,7 +132,7 @@ DEFINE INDEX idx_vec ON TABLE person FIELDS embedding MTREE DIMENSION 3
|
|
|
132
132
|
|
|
133
133
|
==>
|
|
134
134
|
|
|
135
|
-
SurrealQL(DefineStatement(Keyword,Keyword,Ident,OnTableClause(Keyword,Keyword,Ident),FieldsColumnsClause(Keyword,Idiom(Ident)),IndexClause(MtreeClause(Keyword,IndexDimensionClause(Keyword,Int)))))
|
|
135
|
+
SurrealQL(DefineStatement(Keyword,Keyword,Ident,OnTableClause(Keyword,Keyword,Ident),FieldsColumnsClause(Keyword,Idiom(Ident)),IndexClause(MtreeClause(Keyword,IndexDimensionClause(Keyword,Number(Int))))))
|
|
136
136
|
|
|
137
137
|
# Define index hnsw
|
|
138
138
|
|
|
@@ -140,7 +140,7 @@ DEFINE INDEX idx_vec ON TABLE person FIELDS embedding HNSW DIMENSION 3
|
|
|
140
140
|
|
|
141
141
|
==>
|
|
142
142
|
|
|
143
|
-
SurrealQL(DefineStatement(Keyword,Keyword,Ident,OnTableClause(Keyword,Keyword,Ident),FieldsColumnsClause(Keyword,Idiom(Ident)),IndexClause(HnswClause(Keyword,IndexDimensionClause(Keyword,Int)))))
|
|
143
|
+
SurrealQL(DefineStatement(Keyword,Keyword,Ident,OnTableClause(Keyword,Keyword,Ident),FieldsColumnsClause(Keyword,Idiom(Ident)),IndexClause(HnswClause(Keyword,IndexDimensionClause(Keyword,Number(Int))))))
|
|
144
144
|
|
|
145
145
|
# Define function
|
|
146
146
|
|
|
@@ -222,7 +222,7 @@ DEFINE TABLE adult AS SELECT * FROM person WHERE age > 18
|
|
|
222
222
|
|
|
223
223
|
==>
|
|
224
224
|
|
|
225
|
-
SurrealQL(DefineStatement(Keyword,Keyword,Ident,TableViewClause(Keyword,Keyword,Any,Keyword,Ident,WhereClause(Keyword,BinaryExpression(Ident,Operator,Int)))))
|
|
225
|
+
SurrealQL(DefineStatement(Keyword,Keyword,Ident,TableViewClause(Keyword,Keyword,Any,Keyword,Ident,WhereClause(Keyword,BinaryExpression(Ident,Operator,Number(Int))))))
|
|
226
226
|
|
|
227
227
|
# Define table with changefeed
|
|
228
228
|
|
|
@@ -20,7 +20,7 @@ DELETE person WHERE age < 18
|
|
|
20
20
|
|
|
21
21
|
==>
|
|
22
22
|
|
|
23
|
-
SurrealQL(DeleteStatement(Keyword,Ident,WhereClause(Keyword,BinaryExpression(Ident,Operator,Int))))
|
|
23
|
+
SurrealQL(DeleteStatement(Keyword,Ident,WhereClause(Keyword,BinaryExpression(Ident,Operator,Number(Int)))))
|
|
24
24
|
|
|
25
25
|
# Delete with RETURN BEFORE
|
|
26
26
|
|
package/test/statements/for.txt
CHANGED
|
@@ -6,7 +6,7 @@ FOR $item IN [1, 2, 3] {
|
|
|
6
6
|
|
|
7
7
|
==>
|
|
8
8
|
|
|
9
|
-
SurrealQL(ForStatement(Keyword,VariableName,Keyword,Array("[",Int,Int,Int,"]"),Block(BraceOpen,CreateStatement(Keyword,Ident,SetClause(Keyword,FieldAssignment(Ident,Operator,VariableName))),BraceClose)))
|
|
9
|
+
SurrealQL(ForStatement(Keyword,VariableName,Keyword,Array("[",Number(Int),Number(Int),Number(Int),"]"),Block(BraceOpen,CreateStatement(Keyword,Ident,SetClause(Keyword,FieldAssignment(Ident,Operator,VariableName))),BraceClose)))
|
|
10
10
|
|
|
11
11
|
# For loop with variable
|
|
12
12
|
|
|
@@ -4,7 +4,7 @@ IF $age > 18 { RETURN "adult" }
|
|
|
4
4
|
|
|
5
5
|
==>
|
|
6
6
|
|
|
7
|
-
SurrealQL(IfElseStatement(Keyword,Modern(BinaryExpression(VariableName,Operator,Int),Block(BraceOpen,ReturnStatement(Keyword,String),BraceClose))))
|
|
7
|
+
SurrealQL(IfElseStatement(Keyword,Modern(BinaryExpression(VariableName,Operator,Number(Int)),Block(BraceOpen,ReturnStatement(Keyword,String),BraceClose))))
|
|
8
8
|
|
|
9
9
|
# Modern if else
|
|
10
10
|
|
|
@@ -12,7 +12,7 @@ IF $age > 18 { RETURN "adult" } ELSE { RETURN "minor" }
|
|
|
12
12
|
|
|
13
13
|
==>
|
|
14
14
|
|
|
15
|
-
SurrealQL(IfElseStatement(Keyword,Modern(BinaryExpression(VariableName,Operator,Int),Block(BraceOpen,ReturnStatement(Keyword,String),BraceClose),Keyword,Block(BraceOpen,ReturnStatement(Keyword,String),BraceClose))))
|
|
15
|
+
SurrealQL(IfElseStatement(Keyword,Modern(BinaryExpression(VariableName,Operator,Number(Int)),Block(BraceOpen,ReturnStatement(Keyword,String),BraceClose),Keyword,Block(BraceOpen,ReturnStatement(Keyword,String),BraceClose))))
|
|
16
16
|
|
|
17
17
|
# Modern if else if else
|
|
18
18
|
|
|
@@ -20,7 +20,7 @@ IF $age > 65 { RETURN "senior" } ELSE IF $age > 18 { RETURN "adult" } ELSE { RET
|
|
|
20
20
|
|
|
21
21
|
==>
|
|
22
22
|
|
|
23
|
-
SurrealQL(IfElseStatement(Keyword,Modern(BinaryExpression(VariableName,Operator,Int),Block(BraceOpen,ReturnStatement(Keyword,String),BraceClose),Keyword,Keyword,BinaryExpression(VariableName,Operator,Int),Block(BraceOpen,ReturnStatement(Keyword,String),BraceClose),Keyword,Block(BraceOpen,ReturnStatement(Keyword,String),BraceClose))))
|
|
23
|
+
SurrealQL(IfElseStatement(Keyword,Modern(BinaryExpression(VariableName,Operator,Number(Int)),Block(BraceOpen,ReturnStatement(Keyword,String),BraceClose),Keyword,Keyword,BinaryExpression(VariableName,Operator,Number(Int)),Block(BraceOpen,ReturnStatement(Keyword,String),BraceClose),Keyword,Block(BraceOpen,ReturnStatement(Keyword,String),BraceClose))))
|
|
24
24
|
|
|
25
25
|
# Legacy if then end
|
|
26
26
|
|
|
@@ -28,7 +28,7 @@ IF $age > 18 THEN (RETURN "adult") END
|
|
|
28
28
|
|
|
29
29
|
==>
|
|
30
30
|
|
|
31
|
-
SurrealQL(IfElseStatement(Keyword,Legacy(BinaryExpression(VariableName,Operator,Int),Keyword,SubQuery(ReturnStatement(Keyword,String)),Keyword)))
|
|
31
|
+
SurrealQL(IfElseStatement(Keyword,Legacy(BinaryExpression(VariableName,Operator,Number(Int)),Keyword,SubQuery(ReturnStatement(Keyword,String)),Keyword)))
|
|
32
32
|
|
|
33
33
|
# Legacy if then else end
|
|
34
34
|
|
|
@@ -36,7 +36,7 @@ IF $age > 18 THEN (RETURN "adult") ELSE (RETURN "minor") END
|
|
|
36
36
|
|
|
37
37
|
==>
|
|
38
38
|
|
|
39
|
-
SurrealQL(IfElseStatement(Keyword,Legacy(BinaryExpression(VariableName,Operator,Int),Keyword,SubQuery(ReturnStatement(Keyword,String)),Keyword,SubQuery(ReturnStatement(Keyword,String)),Keyword)))
|
|
39
|
+
SurrealQL(IfElseStatement(Keyword,Legacy(BinaryExpression(VariableName,Operator,Number(Int)),Keyword,SubQuery(ReturnStatement(Keyword,String)),Keyword,SubQuery(ReturnStatement(Keyword,String)),Keyword)))
|
|
40
40
|
|
|
41
41
|
# Legacy if then else if then else end
|
|
42
42
|
|
|
@@ -44,4 +44,4 @@ IF $age > 65 THEN (RETURN "senior") ELSE IF $age > 18 THEN (RETURN "adult") ELSE
|
|
|
44
44
|
|
|
45
45
|
==>
|
|
46
46
|
|
|
47
|
-
SurrealQL(IfElseStatement(Keyword,Legacy(BinaryExpression(VariableName,Operator,Int),Keyword,SubQuery(ReturnStatement(Keyword,String)),Keyword,Keyword,BinaryExpression(VariableName,Operator,Int),Keyword,SubQuery(ReturnStatement(Keyword,String)),Keyword,SubQuery(ReturnStatement(Keyword,String)),Keyword)))
|
|
47
|
+
SurrealQL(IfElseStatement(Keyword,Legacy(BinaryExpression(VariableName,Operator,Number(Int)),Keyword,SubQuery(ReturnStatement(Keyword,String)),Keyword,Keyword,BinaryExpression(VariableName,Operator,Number(Int)),Keyword,SubQuery(ReturnStatement(Keyword,String)),Keyword,SubQuery(ReturnStatement(Keyword,String)),Keyword)))
|
|
@@ -12,7 +12,7 @@ INSERT INTO person (name, age) VALUES ("Tobie", 30)
|
|
|
12
12
|
|
|
13
13
|
==>
|
|
14
14
|
|
|
15
|
-
SurrealQL(InsertStatement(Keyword,Keyword,Ident,Ident,Ident,Keyword,String,Int))
|
|
15
|
+
SurrealQL(InsertStatement(Keyword,Keyword,Ident,Ident,Ident,Keyword,String,Number(Int)))
|
|
16
16
|
|
|
17
17
|
# Insert with IGNORE
|
|
18
18
|
|
|
@@ -44,7 +44,7 @@ INSERT INTO person {name: "Tobie"} ON DUPLICATE KEY UPDATE age = 31
|
|
|
44
44
|
|
|
45
45
|
==>
|
|
46
46
|
|
|
47
|
-
SurrealQL(InsertStatement(Keyword,Keyword,Ident,Object(BraceOpen,ObjectContent(ObjectProperty(ObjectKey(KeyName),Colon,String)),BraceClose),Keyword,Keyword,Keyword,Keyword,FieldAssignment(Ident,Operator,Int)))
|
|
47
|
+
SurrealQL(InsertStatement(Keyword,Keyword,Ident,Object(BraceOpen,ObjectContent(ObjectProperty(ObjectKey(KeyName),Colon,String)),BraceClose),Keyword,Keyword,Keyword,Keyword,FieldAssignment(Ident,Operator,Number(Int))))
|
|
48
48
|
|
|
49
49
|
# Insert with RETURN
|
|
50
50
|
|
package/test/statements/let.txt
CHANGED
|
@@ -12,7 +12,7 @@ LET $age = 30
|
|
|
12
12
|
|
|
13
13
|
==>
|
|
14
14
|
|
|
15
|
-
SurrealQL(LetStatement(Keyword,ParamDefinition(VariableName),Int))
|
|
15
|
+
SurrealQL(LetStatement(Keyword,ParamDefinition(VariableName),Number(Int)))
|
|
16
16
|
|
|
17
17
|
# Let with subquery in parens
|
|
18
18
|
|
|
@@ -20,7 +20,7 @@ LET $bla = (SELECT * FROM 123)
|
|
|
20
20
|
|
|
21
21
|
==>
|
|
22
22
|
|
|
23
|
-
SurrealQL(LetStatement(Keyword,ParamDefinition(VariableName),SubQuery(SelectStatement(Keyword,Fields(Any),Keyword,Int))))
|
|
23
|
+
SurrealQL(LetStatement(Keyword,ParamDefinition(VariableName),SubQuery(SelectStatement(Keyword,Fields(Any),Keyword,Number(Int)))))
|
|
24
24
|
|
|
25
25
|
# Let with subquery statement
|
|
26
26
|
|
|
@@ -28,7 +28,7 @@ LET $bla = SELECT * FROM 123
|
|
|
28
28
|
|
|
29
29
|
==>
|
|
30
30
|
|
|
31
|
-
SurrealQL(LetStatement(Keyword,ParamDefinition(VariableName),SelectStatement(Keyword,Fields(Any),Keyword,Int)))
|
|
31
|
+
SurrealQL(LetStatement(Keyword,ParamDefinition(VariableName),SelectStatement(Keyword,Fields(Any),Keyword,Number(Int))))
|
|
32
32
|
|
|
33
33
|
# Let with typed parameter
|
|
34
34
|
|
package/test/statements/live.txt
CHANGED
|
@@ -36,7 +36,7 @@ LIVE SELECT * FROM person WHERE age > 18
|
|
|
36
36
|
|
|
37
37
|
==>
|
|
38
38
|
|
|
39
|
-
SurrealQL(LiveSelectStatement(Keyword,Keyword,Any,Keyword,Ident,WhereClause(Keyword,BinaryExpression(Ident,Operator,Int))))
|
|
39
|
+
SurrealQL(LiveSelectStatement(Keyword,Keyword,Any,Keyword,Ident,WhereClause(Keyword,BinaryExpression(Ident,Operator,Number(Int)))))
|
|
40
40
|
|
|
41
41
|
# Kill statement
|
|
42
42
|
|
|
@@ -4,7 +4,7 @@ RETURN 42
|
|
|
4
4
|
|
|
5
5
|
==>
|
|
6
6
|
|
|
7
|
-
SurrealQL(ReturnStatement(Keyword,Int))
|
|
7
|
+
SurrealQL(ReturnStatement(Keyword,Number(Int)))
|
|
8
8
|
|
|
9
9
|
# Return string
|
|
10
10
|
|
|
@@ -20,7 +20,7 @@ RETURN 1 + 2
|
|
|
20
20
|
|
|
21
21
|
==>
|
|
22
22
|
|
|
23
|
-
SurrealQL(ReturnStatement(Keyword,BinaryExpression(Int,Operator,Int)))
|
|
23
|
+
SurrealQL(ReturnStatement(Keyword,BinaryExpression(Number(Int),Operator,Number(Int))))
|
|
24
24
|
|
|
25
25
|
# Return variable
|
|
26
26
|
|
|
@@ -44,7 +44,7 @@ SELECT * FROM person WHERE age > 18
|
|
|
44
44
|
|
|
45
45
|
==>
|
|
46
46
|
|
|
47
|
-
SurrealQL(SelectStatement(Keyword,Fields(Any),Keyword,Ident,WhereClause(Keyword,BinaryExpression(Ident,Operator,Int))))
|
|
47
|
+
SurrealQL(SelectStatement(Keyword,Fields(Any),Keyword,Ident,WhereClause(Keyword,BinaryExpression(Ident,Operator,Number(Int)))))
|
|
48
48
|
|
|
49
49
|
# Select with ORDER BY
|
|
50
50
|
|
|
@@ -84,7 +84,7 @@ SELECT * FROM person LIMIT 10
|
|
|
84
84
|
|
|
85
85
|
==>
|
|
86
86
|
|
|
87
|
-
SurrealQL(SelectStatement(Keyword,Fields(Any),Keyword,Ident,LimitStartComboClause(LimitClause(Keyword,Int))))
|
|
87
|
+
SurrealQL(SelectStatement(Keyword,Fields(Any),Keyword,Ident,LimitStartComboClause(LimitClause(Keyword,Number(Int)))))
|
|
88
88
|
|
|
89
89
|
# Select with LIMIT BY
|
|
90
90
|
|
|
@@ -92,7 +92,7 @@ SELECT * FROM person LIMIT BY 10
|
|
|
92
92
|
|
|
93
93
|
==>
|
|
94
94
|
|
|
95
|
-
SurrealQL(SelectStatement(Keyword,Fields(Any),Keyword,Ident,LimitStartComboClause(LimitClause(Keyword,Keyword,Int))))
|
|
95
|
+
SurrealQL(SelectStatement(Keyword,Fields(Any),Keyword,Ident,LimitStartComboClause(LimitClause(Keyword,Keyword,Number(Int)))))
|
|
96
96
|
|
|
97
97
|
# Select with START
|
|
98
98
|
|
|
@@ -100,7 +100,7 @@ SELECT * FROM person START 5
|
|
|
100
100
|
|
|
101
101
|
==>
|
|
102
102
|
|
|
103
|
-
SurrealQL(SelectStatement(Keyword,Fields(Any),Keyword,Ident,LimitStartComboClause(StartClause(Keyword,Int))))
|
|
103
|
+
SurrealQL(SelectStatement(Keyword,Fields(Any),Keyword,Ident,LimitStartComboClause(StartClause(Keyword,Number(Int)))))
|
|
104
104
|
|
|
105
105
|
# Select with START AT
|
|
106
106
|
|
|
@@ -108,7 +108,7 @@ SELECT * FROM person START AT 5
|
|
|
108
108
|
|
|
109
109
|
==>
|
|
110
110
|
|
|
111
|
-
SurrealQL(SelectStatement(Keyword,Fields(Any),Keyword,Ident,LimitStartComboClause(StartClause(Keyword,Keyword,Int))))
|
|
111
|
+
SurrealQL(SelectStatement(Keyword,Fields(Any),Keyword,Ident,LimitStartComboClause(StartClause(Keyword,Keyword,Number(Int)))))
|
|
112
112
|
|
|
113
113
|
# Select with LIMIT and START
|
|
114
114
|
|
|
@@ -116,7 +116,7 @@ SELECT * FROM person LIMIT 10 START 5
|
|
|
116
116
|
|
|
117
117
|
==>
|
|
118
118
|
|
|
119
|
-
SurrealQL(SelectStatement(Keyword,Fields(Any),Keyword,Ident,LimitStartComboClause(LimitClause(Keyword,Int),StartClause(Keyword,Int))))
|
|
119
|
+
SurrealQL(SelectStatement(Keyword,Fields(Any),Keyword,Ident,LimitStartComboClause(LimitClause(Keyword,Number(Int)),StartClause(Keyword,Number(Int)))))
|
|
120
120
|
|
|
121
121
|
# Select with FETCH
|
|
122
122
|
|
|
@@ -124,7 +124,7 @@ SELECT * FROM person FETCH posts
|
|
|
124
124
|
|
|
125
125
|
==>
|
|
126
126
|
|
|
127
|
-
SurrealQL(SelectStatement(Keyword,Fields(Any),Keyword,Ident,FetchClause(Keyword,
|
|
127
|
+
SurrealQL(SelectStatement(Keyword,Fields(Any),Keyword,Ident,FetchClause(Keyword,Idiom(Ident))))
|
|
128
128
|
|
|
129
129
|
# Select with SPLIT
|
|
130
130
|
|
|
@@ -212,7 +212,7 @@ SELECT * FROM person WHERE age > 18 ORDER BY name LIMIT 10
|
|
|
212
212
|
|
|
213
213
|
==>
|
|
214
214
|
|
|
215
|
-
SurrealQL(SelectStatement(Keyword,Fields(Any),Keyword,Ident,WhereClause(Keyword,BinaryExpression(Ident,Operator,Int)),OrderClause(Keyword,Keyword,Order(Idiom(Ident))),LimitStartComboClause(LimitClause(Keyword,Int))))
|
|
215
|
+
SurrealQL(SelectStatement(Keyword,Fields(Any),Keyword,Ident,WhereClause(Keyword,BinaryExpression(Ident,Operator,Number(Int))),OrderClause(Keyword,Keyword,Order(Idiom(Ident))),LimitStartComboClause(LimitClause(Keyword,Number(Int)))))
|
|
216
216
|
|
|
217
217
|
# Select from multiple targets
|
|
218
218
|
|
package/test/statements/show.txt
CHANGED
|
@@ -20,7 +20,7 @@ SHOW CHANGES FOR TABLE person LIMIT 10
|
|
|
20
20
|
|
|
21
21
|
==>
|
|
22
22
|
|
|
23
|
-
SurrealQL(ShowStatement(Keyword,Keyword,Keyword,Keyword,Ident,Keyword,Int))
|
|
23
|
+
SurrealQL(ShowStatement(Keyword,Keyword,Keyword,Keyword,Ident,Keyword,Number(Int)))
|
|
24
24
|
|
|
25
25
|
# Show changes with since and limit
|
|
26
26
|
|
|
@@ -28,4 +28,4 @@ SHOW CHANGES FOR TABLE person SINCE "2024-01-01T00:00:00Z" LIMIT 10
|
|
|
28
28
|
|
|
29
29
|
==>
|
|
30
30
|
|
|
31
|
-
SurrealQL(ShowStatement(Keyword,Keyword,Keyword,Keyword,Ident,Keyword,String,Keyword,Int))
|
|
31
|
+
SurrealQL(ShowStatement(Keyword,Keyword,Keyword,Keyword,Ident,Keyword,String,Keyword,Number(Int)))
|
|
@@ -20,7 +20,7 @@ UPDATE person SET age = 31
|
|
|
20
20
|
|
|
21
21
|
==>
|
|
22
22
|
|
|
23
|
-
SurrealQL(UpdateStatement(Keyword,Ident,SetClause(Keyword,FieldAssignment(Ident,Operator,Int))))
|
|
23
|
+
SurrealQL(UpdateStatement(Keyword,Ident,SetClause(Keyword,FieldAssignment(Ident,Operator,Number(Int)))))
|
|
24
24
|
|
|
25
25
|
# Update with CONTENT
|
|
26
26
|
|
|
@@ -36,7 +36,7 @@ UPDATE person MERGE {age: 31}
|
|
|
36
36
|
|
|
37
37
|
==>
|
|
38
38
|
|
|
39
|
-
SurrealQL(UpdateStatement(Keyword,Ident,MergeClause(Keyword,Object(BraceOpen,ObjectContent(ObjectProperty(ObjectKey(KeyName),Colon,Int)),BraceClose))))
|
|
39
|
+
SurrealQL(UpdateStatement(Keyword,Ident,MergeClause(Keyword,Object(BraceOpen,ObjectContent(ObjectProperty(ObjectKey(KeyName),Colon,Number(Int))),BraceClose))))
|
|
40
40
|
|
|
41
41
|
# Update with REPLACE
|
|
42
42
|
|
|
@@ -52,7 +52,7 @@ UPDATE person UNSET temp = 0
|
|
|
52
52
|
|
|
53
53
|
==>
|
|
54
54
|
|
|
55
|
-
SurrealQL(UpdateStatement(Keyword,Ident,UnsetClause(Keyword,FieldAssignment(Ident,Operator,Int))))
|
|
55
|
+
SurrealQL(UpdateStatement(Keyword,Ident,UnsetClause(Keyword,FieldAssignment(Ident,Operator,Number(Int)))))
|
|
56
56
|
|
|
57
57
|
# Update with WHERE
|
|
58
58
|
|
|
@@ -60,7 +60,7 @@ UPDATE person SET age = 31 WHERE name = "Tobie"
|
|
|
60
60
|
|
|
61
61
|
==>
|
|
62
62
|
|
|
63
|
-
SurrealQL(UpdateStatement(Keyword,Ident,SetClause(Keyword,FieldAssignment(Ident,Operator,Int)),WhereClause(Keyword,BinaryExpression(Ident,Operator,String))))
|
|
63
|
+
SurrealQL(UpdateStatement(Keyword,Ident,SetClause(Keyword,FieldAssignment(Ident,Operator,Number(Int))),WhereClause(Keyword,BinaryExpression(Ident,Operator,String))))
|
|
64
64
|
|
|
65
65
|
# Update with RETURN
|
|
66
66
|
|
|
@@ -68,7 +68,7 @@ UPDATE person SET age = 31 RETURN AFTER
|
|
|
68
68
|
|
|
69
69
|
==>
|
|
70
70
|
|
|
71
|
-
SurrealQL(UpdateStatement(Keyword,Ident,SetClause(Keyword,FieldAssignment(Ident,Operator,Int)),ReturnClause(Keyword,Literal)))
|
|
71
|
+
SurrealQL(UpdateStatement(Keyword,Ident,SetClause(Keyword,FieldAssignment(Ident,Operator,Number(Int))),ReturnClause(Keyword,Literal)))
|
|
72
72
|
|
|
73
73
|
# Update with TIMEOUT
|
|
74
74
|
|
|
@@ -76,7 +76,7 @@ UPDATE person SET age = 31 TIMEOUT 5s
|
|
|
76
76
|
|
|
77
77
|
==>
|
|
78
78
|
|
|
79
|
-
SurrealQL(UpdateStatement(Keyword,Ident,SetClause(Keyword,FieldAssignment(Ident,Operator,Int)),TimeoutClause(Keyword,Duration(DurationPart))))
|
|
79
|
+
SurrealQL(UpdateStatement(Keyword,Ident,SetClause(Keyword,FieldAssignment(Ident,Operator,Number(Int))),TimeoutClause(Keyword,Duration(DurationPart))))
|
|
80
80
|
|
|
81
81
|
# Update with PARALLEL
|
|
82
82
|
|
|
@@ -84,4 +84,4 @@ UPDATE person SET age = 31 PARALLEL
|
|
|
84
84
|
|
|
85
85
|
==>
|
|
86
86
|
|
|
87
|
-
SurrealQL(UpdateStatement(Keyword,Ident,SetClause(Keyword,FieldAssignment(Ident,Operator,Int)),ParallelClause(Keyword)))
|
|
87
|
+
SurrealQL(UpdateStatement(Keyword,Ident,SetClause(Keyword,FieldAssignment(Ident,Operator,Number(Int))),ParallelClause(Keyword)))
|
|
@@ -36,7 +36,7 @@ UPSERT person MERGE {age: 31}
|
|
|
36
36
|
|
|
37
37
|
==>
|
|
38
38
|
|
|
39
|
-
SurrealQL(UpsertStatement(Keyword,Ident,MergeClause(Keyword,Object(BraceOpen,ObjectContent(ObjectProperty(ObjectKey(KeyName),Colon,Int)),BraceClose))))
|
|
39
|
+
SurrealQL(UpsertStatement(Keyword,Ident,MergeClause(Keyword,Object(BraceOpen,ObjectContent(ObjectProperty(ObjectKey(KeyName),Colon,Number(Int))),BraceClose))))
|
|
40
40
|
|
|
41
41
|
# Upsert with WHERE
|
|
42
42
|
|
|
@@ -44,7 +44,7 @@ UPSERT person SET age = 31 WHERE name = "Tobie"
|
|
|
44
44
|
|
|
45
45
|
==>
|
|
46
46
|
|
|
47
|
-
SurrealQL(UpsertStatement(Keyword,Ident,SetClause(Keyword,FieldAssignment(Ident,Operator,Int)),WhereClause(Keyword,BinaryExpression(Ident,Operator,String))))
|
|
47
|
+
SurrealQL(UpsertStatement(Keyword,Ident,SetClause(Keyword,FieldAssignment(Ident,Operator,Number(Int))),WhereClause(Keyword,BinaryExpression(Ident,Operator,String))))
|
|
48
48
|
|
|
49
49
|
# Upsert with RETURN
|
|
50
50
|
|
|
@@ -52,4 +52,4 @@ UPSERT person SET age = 31 RETURN AFTER
|
|
|
52
52
|
|
|
53
53
|
==>
|
|
54
54
|
|
|
55
|
-
SurrealQL(UpsertStatement(Keyword,Ident,SetClause(Keyword,FieldAssignment(Ident,Operator,Int)),ReturnClause(Keyword,Literal)))
|
|
55
|
+
SurrealQL(UpsertStatement(Keyword,Ident,SetClause(Keyword,FieldAssignment(Ident,Operator,Number(Int))),ReturnClause(Keyword,Literal)))
|
package/test/values/arrays.txt
CHANGED
|
@@ -12,7 +12,7 @@ SurrealQL(Array("[","]"))
|
|
|
12
12
|
|
|
13
13
|
==>
|
|
14
14
|
|
|
15
|
-
SurrealQL(Array("[",Int,"]"))
|
|
15
|
+
SurrealQL(Array("[",Number(Int),"]"))
|
|
16
16
|
|
|
17
17
|
# Multiple elements
|
|
18
18
|
|
|
@@ -20,7 +20,7 @@ SurrealQL(Array("[",Int,"]"))
|
|
|
20
20
|
|
|
21
21
|
==>
|
|
22
22
|
|
|
23
|
-
SurrealQL(Array("[",Int,Int,Int,"]"))
|
|
23
|
+
SurrealQL(Array("[",Number(Int),Number(Int),Number(Int),"]"))
|
|
24
24
|
|
|
25
25
|
# Trailing comma
|
|
26
26
|
|
|
@@ -28,7 +28,7 @@ SurrealQL(Array("[",Int,Int,Int,"]"))
|
|
|
28
28
|
|
|
29
29
|
==>
|
|
30
30
|
|
|
31
|
-
SurrealQL(Array("[",Int,Int,Int,"]"))
|
|
31
|
+
SurrealQL(Array("[",Number(Int),Number(Int),Number(Int),"]"))
|
|
32
32
|
|
|
33
33
|
# Nested arrays
|
|
34
34
|
|
|
@@ -36,7 +36,7 @@ SurrealQL(Array("[",Int,Int,Int,"]"))
|
|
|
36
36
|
|
|
37
37
|
==>
|
|
38
38
|
|
|
39
|
-
SurrealQL(Array("[",Array("[",Int,Int,"]"),Array("[",Int,Int,"]"),"]"))
|
|
39
|
+
SurrealQL(Array("[",Array("[",Number(Int),Number(Int),"]"),Array("[",Number(Int),Number(Int),"]"),"]"))
|
|
40
40
|
|
|
41
41
|
# Mixed types
|
|
42
42
|
|
|
@@ -44,4 +44,4 @@ SurrealQL(Array("[",Array("[",Int,Int,"]"),Array("[",Int,Int,"]"),"]"))
|
|
|
44
44
|
|
|
45
45
|
==>
|
|
46
46
|
|
|
47
|
-
SurrealQL(Array("[",Int,String,Bool,None,"]"))
|
|
47
|
+
SurrealQL(Array("[",Number(Int),String,Bool,None,"]"))
|
package/test/values/closures.txt
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
==>
|
|
6
6
|
|
|
7
|
-
SurrealQL(Closure(Pipe,Pipe,Block(BraceOpen,Int,BraceClose)))
|
|
7
|
+
SurrealQL(Closure(Pipe,Pipe,Block(BraceOpen,Number(Int),BraceClose)))
|
|
8
8
|
|
|
9
9
|
# Closure with param
|
|
10
10
|
|
|
@@ -20,7 +20,7 @@ SurrealQL(Closure(Pipe,ParamDefinition(VariableName),Pipe,Block(BraceOpen,Variab
|
|
|
20
20
|
|
|
21
21
|
==>
|
|
22
22
|
|
|
23
|
-
SurrealQL(Closure(Pipe,ParamDefinition(VariableName,Colon,Type(TypeName)),Pipe,Block(BraceOpen,BinaryExpression(VariableName,Operator,Int),BraceClose)))
|
|
23
|
+
SurrealQL(Closure(Pipe,ParamDefinition(VariableName,Colon,Type(TypeName)),Pipe,Block(BraceOpen,BinaryExpression(VariableName,Operator,Number(Int)),BraceClose)))
|
|
24
24
|
|
|
25
25
|
# Closure with multiple params
|
|
26
26
|
|
|
@@ -36,4 +36,4 @@ SurrealQL(Closure(Pipe,ParamDefinition(VariableName),ParamDefinition(VariableNam
|
|
|
36
36
|
|
|
37
37
|
==>
|
|
38
38
|
|
|
39
|
-
SurrealQL(Closure(Pipe,ParamDefinition(VariableName,Colon,Type(TypeName)),Pipe,LookupRight,TypeName,Block(BraceOpen,BinaryExpression(VariableName,Operator,Int),BraceClose)))
|
|
39
|
+
SurrealQL(Closure(Pipe,ParamDefinition(VariableName,Colon,Type(TypeName)),Pipe,LookupRight,TypeName,Block(BraceOpen,BinaryExpression(VariableName,Operator,Number(Int)),BraceClose)))
|
|
@@ -12,7 +12,7 @@ $"result is {1 + 2 + 3}"
|
|
|
12
12
|
|
|
13
13
|
==>
|
|
14
14
|
|
|
15
|
-
SurrealQL(FormatString(Interpolation(BraceOpen,BinaryExpression(BinaryExpression(Int,Operator,Int),Operator,Int),BraceClose)))
|
|
15
|
+
SurrealQL(FormatString(Interpolation(BraceOpen,BinaryExpression(BinaryExpression(Number(Int),Operator,Number(Int)),Operator,Number(Int)),BraceClose)))
|
|
16
16
|
|
|
17
17
|
# Escaped quote in format string
|
|
18
18
|
|
|
@@ -20,7 +20,7 @@ $"some \" quote {1 + 2 + 3} and \{ some } brackets"
|
|
|
20
20
|
|
|
21
21
|
==>
|
|
22
22
|
|
|
23
|
-
SurrealQL(FormatString(Interpolation(BraceOpen,BinaryExpression(BinaryExpression(Int,Operator,Int),Operator,Int),BraceClose)))
|
|
23
|
+
SurrealQL(FormatString(Interpolation(BraceOpen,BinaryExpression(BinaryExpression(Number(Int),Operator,Number(Int)),Operator,Number(Int)),BraceClose)))
|
|
24
24
|
|
|
25
25
|
# Nested format strings
|
|
26
26
|
|
|
@@ -28,7 +28,7 @@ $'nested {$"string {22}"}'
|
|
|
28
28
|
|
|
29
29
|
==>
|
|
30
30
|
|
|
31
|
-
SurrealQL(FormatString(Interpolation(BraceOpen,FormatString(Interpolation(BraceOpen,Int,BraceClose)),BraceClose)))
|
|
31
|
+
SurrealQL(FormatString(Interpolation(BraceOpen,FormatString(Interpolation(BraceOpen,Number(Int),BraceClose)),BraceClose)))
|
|
32
32
|
|
|
33
33
|
# Single quoted format string
|
|
34
34
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
==>
|
|
6
6
|
|
|
7
|
-
SurrealQL(Point(Decimal,Decimal))
|
|
7
|
+
SurrealQL(Point(Number(Decimal),Number(Decimal)))
|
|
8
8
|
|
|
9
9
|
# Point with integers
|
|
10
10
|
|
|
@@ -12,7 +12,7 @@ SurrealQL(Point(Decimal,Decimal))
|
|
|
12
12
|
|
|
13
13
|
==>
|
|
14
14
|
|
|
15
|
-
SurrealQL(Point(Int,Int))
|
|
15
|
+
SurrealQL(Point(Number(Int),Number(Int)))
|
|
16
16
|
|
|
17
17
|
# Point with floats
|
|
18
18
|
|
|
@@ -20,4 +20,4 @@ SurrealQL(Point(Int,Int))
|
|
|
20
20
|
|
|
21
21
|
==>
|
|
22
22
|
|
|
23
|
-
SurrealQL(Point(Float,Float))
|
|
23
|
+
SurrealQL(Point(Number(Float),Number(Float)))
|
package/test/values/idioms.txt
CHANGED
|
@@ -60,7 +60,7 @@ SurrealQL(SelectStatement(Keyword,Fields(Predicate(Path(Lookup(LookupRight,Ident
|
|
|
60
60
|
|
|
61
61
|
==>
|
|
62
62
|
|
|
63
|
-
SurrealQL(Path(Int,Subscript(IdiomFunction(FunctionName,ArgumentList))))
|
|
63
|
+
SurrealQL(Path(Number(Int),Subscript(IdiomFunction(FunctionName,ArgumentList))))
|
|
64
64
|
|
|
65
65
|
# Filter with variable key
|
|
66
66
|
|
|
@@ -100,7 +100,7 @@ SurrealQL(Path(RecordId(RecordTbIdent,Colon,RecordIdIdent),Filter("[",Ident,"]")
|
|
|
100
100
|
|
|
101
101
|
==>
|
|
102
102
|
|
|
103
|
-
SurrealQL(Path(Array("[","]"),Filter("[",Int,"]")))
|
|
103
|
+
SurrealQL(Path(Array("[","]"),Filter("[",Number(Int),"]")))
|
|
104
104
|
|
|
105
105
|
# Array variable access
|
|
106
106
|
|
|
@@ -116,7 +116,7 @@ SurrealQL(Path(Array("[","]"),Filter("[",VariableName,"]")))
|
|
|
116
116
|
|
|
117
117
|
==>
|
|
118
118
|
|
|
119
|
-
SurrealQL(Path(Array("[","]"),Filter("[",WhereClause(Keyword,BinaryExpression(Ident,Operator,Int)),"]")))
|
|
119
|
+
SurrealQL(Path(Array("[","]"),Filter("[",WhereClause(Keyword,BinaryExpression(Ident,Operator,Number(Int))),"]")))
|
|
120
120
|
|
|
121
121
|
# Array question mark filter
|
|
122
122
|
|
|
@@ -124,7 +124,7 @@ SurrealQL(Path(Array("[","]"),Filter("[",WhereClause(Keyword,BinaryExpression(Id
|
|
|
124
124
|
|
|
125
125
|
==>
|
|
126
126
|
|
|
127
|
-
SurrealQL(Path(Array("[","]"),Filter("[",WhereClause(BinaryExpression(Ident,Operator,Int)),"]")))
|
|
127
|
+
SurrealQL(Path(Array("[","]"),Filter("[",WhereClause(BinaryExpression(Ident,Operator,Number(Int))),"]")))
|
|
128
128
|
|
|
129
129
|
# Recurse unbounded
|
|
130
130
|
|
|
@@ -175,7 +175,7 @@ a:b.{1}
|
|
|
175
175
|
|
|
176
176
|
SurrealQL(Path(
|
|
177
177
|
RecordId(RecordTbIdent,Colon,RecordIdIdent),
|
|
178
|
-
Subscript(Recurse(BraceOpen,RecurseRange(Int),RecurseOptions,BraceClose))
|
|
178
|
+
Subscript(Recurse(BraceOpen,RecurseRange(Number(Int)),RecurseOptions,BraceClose))
|
|
179
179
|
))
|
|
180
180
|
|
|
181
181
|
# Recurse with min range
|
|
@@ -186,7 +186,7 @@ a:b.{1..}
|
|
|
186
186
|
|
|
187
187
|
SurrealQL(Path(
|
|
188
188
|
RecordId(RecordTbIdent,Colon,RecordIdIdent),
|
|
189
|
-
Subscript(Recurse(BraceOpen,RecurseRange(Int,RangeOp),RecurseOptions,BraceClose))
|
|
189
|
+
Subscript(Recurse(BraceOpen,RecurseRange(Number(Int),RangeOp),RecurseOptions,BraceClose))
|
|
190
190
|
))
|
|
191
191
|
|
|
192
192
|
# Recurse with full range
|
|
@@ -197,7 +197,7 @@ a:b.{1..2}
|
|
|
197
197
|
|
|
198
198
|
SurrealQL(Path(
|
|
199
199
|
RecordId(RecordTbIdent,Colon,RecordIdIdent),
|
|
200
|
-
Subscript(Recurse(BraceOpen,RecurseRange(Int,RangeOp,Int),RecurseOptions,BraceClose))
|
|
200
|
+
Subscript(Recurse(BraceOpen,RecurseRange(Number(Int),RangeOp,Number(Int)),RecurseOptions,BraceClose))
|
|
201
201
|
))
|
|
202
202
|
|
|
203
203
|
# Recurse with max range
|
|
@@ -208,7 +208,7 @@ a:b.{..2}
|
|
|
208
208
|
|
|
209
209
|
SurrealQL(Path(
|
|
210
210
|
RecordId(RecordTbIdent,Colon,RecordIdIdent),
|
|
211
|
-
Subscript(Recurse(BraceOpen,RecurseRange(RangeOp,Int),RecurseOptions,BraceClose))
|
|
211
|
+
Subscript(Recurse(BraceOpen,RecurseRange(RangeOp,Number(Int)),RecurseOptions,BraceClose))
|
|
212
212
|
))
|
|
213
213
|
|
|
214
214
|
# At reference with subscript
|