Skip to content

Commit 642d93e

Browse files
N1QL: Updated keywords + minor improvements (#3229)
1 parent c1025aa commit 642d93e

File tree

4 files changed

+86
-8
lines changed

4 files changed

+86
-8
lines changed

components/prism-n1ql.js

+10-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
1+
// https://docs.couchbase.com/server/current/n1ql/n1ql-language-reference/index.html
2+
13
Prism.languages.n1ql = {
2-
'comment': /\/\*[\s\S]*?(?:$|\*\/)/,
3-
'parameter': /\$[\w.]+/,
4+
'comment': {
5+
pattern: /\/\*[\s\S]*?(?:$|\*\/)|--.*/,
6+
greedy: true,
7+
},
48
'string': {
59
pattern: /(["'])(?:\\[\s\S]|(?!\1)[^\\]|\1\1)*\1/,
610
greedy: true,
@@ -9,8 +13,10 @@ Prism.languages.n1ql = {
913
pattern: /`(?:\\[\s\S]|[^\\`]|``)*`/,
1014
greedy: true,
1115
},
12-
'function': /\b(?:ABS|ACOS|ARRAY_AGG|ARRAY_APPEND|ARRAY_AVG|ARRAY_CONCAT|ARRAY_CONTAINS|ARRAY_COUNT|ARRAY_DISTINCT|ARRAY_FLATTEN|ARRAY_IFNULL|ARRAY_INSERT|ARRAY_INTERSECT|ARRAY_LENGTH|ARRAY_MAX|ARRAY_MIN|ARRAY_POSITION|ARRAY_PREPEND|ARRAY_PUT|ARRAY_RANGE|ARRAY_REMOVE|ARRAY_REPEAT|ARRAY_REPLACE|ARRAY_REVERSE|ARRAY_SORT|ARRAY_STAR|ARRAY_SUM|ARRAY_SYMDIFF|ARRAY_SYMDIFFN|ARRAY_UNION|ASIN|ATAN|ATAN2|AVG|BASE64|BASE64_DECODE|BASE64_ENCODE|BITAND|BITCLEAR|BITNOT|BITOR|BITSET|BITSHIFT|BITTEST|BITXOR|CEIL|CLOCK_LOCAL|CLOCK_MILLIS|CLOCK_STR|CLOCK_TZ|CLOCK_UTC|CONTAINS|CONTAINS_TOKEN|CONTAINS_TOKEN_LIKE|CONTAINS_TOKEN_REGEXP|COS|COUNT|CURL|DATE_ADD_MILLIS|DATE_ADD_STR|DATE_DIFF_MILLIS|DATE_DIFF_STR|DATE_FORMAT_STR|DATE_PART_MILLIS|DATE_PART_STR|DATE_RANGE_MILLIS|DATE_RANGE_STR|DATE_TRUNC_MILLIS|DATE_TRUNC_STR|DECODE_JSON|DEGREES|DURATION_TO_STR|E|ENCODED_SIZE|ENCODE_JSON|EXP|FLOOR|GREATEST|HAS_TOKEN|IFINF|IFMISSING|IFMISSINGORNULL|IFNAN|IFNANORINF|IFNULL|INITCAP|ISARRAY|ISATOM|IsBitSET|ISBOOLEAN|ISNUMBER|ISOBJECT|ISSTRING|LEAST|LENGTH|LN|LOG|LOWER|LTRIM|MAX|META|MILLIS|MILLIS_TO_LOCAL|MILLIS_TO_STR|MILLIS_TO_TZ|MILLIS_TO_UTC|MILLIS_TO_ZONE_NAME|MIN|MISSINGIF|NANIF|NEGINFIF|NOW_LOCAL|NOW_MILLIS|NOW_STR|NOW_TZ|NOW_UTC|NULLIF|OBJECT_ADD|OBJECT_CONCAT|OBJECT_INNER_PAIRS|OBJECT_INNER_VALUES|OBJECT_LENGTH|OBJECT_NAMES|OBJECT_PAIRS|OBJECT_PUT|OBJECT_REMOVE|OBJECT_RENAME|OBJECT_REPLACE|OBJECT_UNWRAP|OBJECT_VALUES|PAIRS|PI|POLY_LENGTH|POSINFIF|POSITION|POWER|RADIANS|RANDOM|REGEXP_CONTAINS|REGEXP_LIKE|REGEXP_POSITION|REGEXP_REPLACE|REPEAT|REPLACE|REVERSE|ROUND|RTRIM|SIGN|SIN|SPLIT|SQRT|STR_TO_DURATION|STR_TO_MILLIS|STR_TO_TZ|STR_TO_UTC|STR_TO_ZONE_NAME|SUBSTR|SUFFIXES|SUM|TAN|TITLE|TOARRAY|TOATOM|TOBOOLEAN|TOKENS|TONUMBER|TOOBJECT|TOSTRING|TRIM|TRUNC|TYPE|UPPER|WEEKDAY_MILLIS|WEEKDAY_STR)(?=\s*\()/i,
13-
'keyword': /\b(?:ALL|ALTER|ANALYZE|AS|ASC|BEGIN|BINARY|BOOLEAN|BREAK|BUCKET|BUILD|BY|CALL|CAST|CLUSTER|COLLATE|COLLECTION|COMMIT|CONNECT|CONTINUE|CORRELATE|COVER|CREATE|DATABASE|DATASET|DATASTORE|DECLARE|DECREMENT|DELETE|DERIVED|DESC|DESCRIBE|DISTINCT|DO|DROP|EACH|ELEMENT|EXCEPT|EXCLUDE|EXECUTE|EXPLAIN|FETCH|FLATTEN|FOR|FORCE|FROM|FUNCTION|GRANT|GROUP|GSI|HAVING|IF|IGNORE|ILIKE|INCLUDE|INCREMENT|INDEX|INFER|INLINE|INNER|INSERT|INTERSECT|INTO|IS|JOIN|KEY|KEYS|KEYSPACE|KNOWN|LAST|LEFT|LET|LETTING|LIMIT|LSM|MAP|MAPPING|MATCHED|MATERIALIZED|MERGE|MINUS|MISSING|NAMESPACE|NEST|NULL|NUMBER|OBJECT|OFFSET|ON|OPTION|ORDER|OUTER|OVER|PARSE|PARTITION|PASSWORD|PATH|POOL|PREPARE|PRIMARY|PRIVATE|PRIVILEGE|PROCEDURE|PUBLIC|RAW|REALM|REDUCE|RENAME|RETURN|RETURNING|REVOKE|RIGHT|ROLE|ROLLBACK|SATISFIES|SCHEMA|SELECT|SELF|SEMI|SET|SHOW|SOME|START|STATISTICS|STRING|SYSTEM|TO|TRANSACTION|TRIGGER|TRUNCATE|UNDER|UNION|UNIQUE|UNKNOWN|UNNEST|UNSET|UPDATE|UPSERT|USE|USER|USING|VALIDATE|VALUE|VALUES|VIA|VIEW|WHERE|WHILE|WITH|WORK|XOR)\b/i,
16+
'parameter': /\$[\w.]+/,
17+
// https://docs.couchbase.com/server/current/n1ql/n1ql-language-reference/reservedwords.html#n1ql-reserved-words
18+
'keyword': /\b(?:ADVISE|ALL|ALTER|ANALYZE|AS|ASC|AT|BEGIN|BINARY|BOOLEAN|BREAK|BUCKET|BUILD|BY|CALL|CAST|CLUSTER|COLLATE|COLLECTION|COMMIT|COMMITTED|CONNECT|CONTINUE|CORRELATE|CORRELATED|COVER|CREATE|CURRENT|DATABASE|DATASET|DATASTORE|DECLARE|DECREMENT|DELETE|DERIVED|DESC|DESCRIBE|DISTINCT|DO|DROP|EACH|ELEMENT|EXCEPT|EXCLUDE|EXECUTE|EXPLAIN|FETCH|FILTER|FLATTEN|FLUSH|FOLLOWING|FOR|FORCE|FROM|FTS|FUNCTION|GOLANG|GRANT|GROUP|GROUPS|GSI|HASH|HAVING|IF|IGNORE|ILIKE|INCLUDE|INCREMENT|INDEX|INFER|INLINE|INNER|INSERT|INTERSECT|INTO|IS|ISOLATION|JAVASCRIPT|JOIN|KEY|KEYS|KEYSPACE|KNOWN|LANGUAGE|LAST|LEFT|LET|LETTING|LEVEL|LIMIT|LSM|MAP|MAPPING|MATCHED|MATERIALIZED|MERGE|MINUS|MISSING|NAMESPACE|NEST|NL|NO|NTH_VALUE|NULL|NULLS|NUMBER|OBJECT|OFFSET|ON|OPTION|OPTIONS|ORDER|OTHERS|OUTER|OVER|PARSE|PARTITION|PASSWORD|PATH|POOL|PRECEDING|PREPARE|PRIMARY|PRIVATE|PRIVILEGE|PROBE|PROCEDURE|PUBLIC|RANGE|RAW|REALM|REDUCE|RENAME|RESPECT|RETURN|RETURNING|REVOKE|RIGHT|ROLE|ROLLBACK|ROW|ROWS|SATISFIES|SAVEPOINT|SCHEMA|SCOPE|SELECT|SELF|SEMI|SET|SHOW|SOME|START|STATISTICS|STRING|SYSTEM|TIES|TO|TRAN|TRANSACTION|TRIGGER|TRUNCATE|UNBOUNDED|UNDER|UNION|UNIQUE|UNKNOWN|UNNEST|UNSET|UPDATE|UPSERT|USE|USER|USING|VALIDATE|VALUE|VALUES|VIA|VIEW|WHERE|WHILE|WINDOW|WITH|WORK|XOR)\b/i,
19+
'function': /\b[a-z_]\w*(?=\s*\()/i,
1420
'boolean': /\b(?:FALSE|TRUE)\b/i,
1521
'number': /(?:\b\d+\.|\B\.)\d+e[+\-]?\d+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,
1622
'operator': /[-+*\/%]|!=|==?|\|\||<[>=]?|>=?|\b(?:AND|ANY|ARRAY|BETWEEN|CASE|ELSE|END|EVERY|EXISTS|FIRST|IN|LIKE|NOT|OR|THEN|VALUED|WHEN|WITHIN)\b/i,

components/prism-n1ql.min.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/languages/n1ql/comment_feature.test

+6-2
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,17 @@
22
/* foo
33
bar */
44

5+
-- comment
6+
57
----------------------------------------------------
68

79
[
810
["comment", "/**/"],
9-
["comment", "/* foo\r\nbar */"]
11+
["comment", "/* foo\r\nbar */"],
12+
13+
["comment", "-- comment"]
1014
]
1115

1216
----------------------------------------------------
1317

14-
Checks for comments.
18+
Checks for comments.

tests/languages/n1ql/keyword_feature.test

+69-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1+
ADVISE
12
ALL
23
ALTER
34
ANALYZE
45
AS
56
ASC
7+
AT
68
BEGIN
79
BINARY
810
BOOLEAN
@@ -16,11 +18,14 @@ CLUSTER
1618
COLLATE
1719
COLLECTION
1820
COMMIT
21+
COMMITTED
1922
CONNECT
2023
CONTINUE
2124
CORRELATE
25+
CORRELATED
2226
COVER
2327
CREATE
28+
CURRENT
2429
DATABASE
2530
DATASET
2631
DATASTORE
@@ -40,14 +45,21 @@ EXCLUDE
4045
EXECUTE
4146
EXPLAIN
4247
FETCH
48+
FILTER
4349
FLATTEN
50+
FLUSH
51+
FOLLOWING
4452
FOR
4553
FORCE
4654
FROM
55+
FTS
4756
FUNCTION
57+
GOLANG
4858
GRANT
4959
GROUP
60+
GROUPS
5061
GSI
62+
HASH
5163
HAVING
5264
IF
5365
IGNORE
@@ -62,15 +74,19 @@ INSERT
6274
INTERSECT
6375
INTO
6476
IS
77+
ISOLATION
78+
JAVASCRIPT
6579
JOIN
6680
KEY
6781
KEYS
6882
KEYSPACE
6983
KNOWN
84+
LANGUAGE
7085
LAST
7186
LEFT
7287
LET
7388
LETTING
89+
LEVEL
7490
LIMIT
7591
LSM
7692
MAP
@@ -82,38 +98,52 @@ MINUS
8298
MISSING
8399
NAMESPACE
84100
NEST
101+
NL
102+
NO
103+
NTH_VALUE
85104
NULL
105+
NULLS
86106
NUMBER
87107
OBJECT
88108
OFFSET
89109
ON
90110
OPTION
111+
OPTIONS
91112
ORDER
113+
OTHERS
92114
OUTER
93115
OVER
94116
PARSE
95117
PARTITION
96118
PASSWORD
97119
PATH
98120
POOL
121+
PRECEDING
99122
PREPARE
100123
PRIMARY
101124
PRIVATE
102125
PRIVILEGE
126+
PROBE
103127
PROCEDURE
104128
PUBLIC
129+
RANGE
105130
RAW
106131
REALM
107132
REDUCE
108133
RENAME
134+
RESPECT
109135
RETURN
110136
RETURNING
111137
REVOKE
112138
RIGHT
113139
ROLE
114140
ROLLBACK
141+
ROW
142+
ROWS
115143
SATISFIES
144+
SAVEPOINT
116145
SCHEMA
146+
SCOPE
117147
SELECT
118148
SELF
119149
SEMI
@@ -124,10 +154,13 @@ START
124154
STATISTICS
125155
STRING
126156
SYSTEM
157+
TIES
127158
TO
159+
TRAN
128160
TRANSACTION
129161
TRIGGER
130162
TRUNCATE
163+
UNBOUNDED
131164
UNDER
132165
UNION
133166
UNIQUE
@@ -146,18 +179,21 @@ VIA
146179
VIEW
147180
WHERE
148181
WHILE
182+
WINDOW
149183
WITH
150184
WORK
151185
XOR
152186

153187
----------------------------------------------------
154188

155189
[
190+
["keyword", "ADVISE"],
156191
["keyword", "ALL"],
157192
["keyword", "ALTER"],
158193
["keyword", "ANALYZE"],
159194
["keyword", "AS"],
160195
["keyword", "ASC"],
196+
["keyword", "AT"],
161197
["keyword", "BEGIN"],
162198
["keyword", "BINARY"],
163199
["keyword", "BOOLEAN"],
@@ -171,11 +207,14 @@ XOR
171207
["keyword", "COLLATE"],
172208
["keyword", "COLLECTION"],
173209
["keyword", "COMMIT"],
210+
["keyword", "COMMITTED"],
174211
["keyword", "CONNECT"],
175212
["keyword", "CONTINUE"],
176213
["keyword", "CORRELATE"],
214+
["keyword", "CORRELATED"],
177215
["keyword", "COVER"],
178216
["keyword", "CREATE"],
217+
["keyword", "CURRENT"],
179218
["keyword", "DATABASE"],
180219
["keyword", "DATASET"],
181220
["keyword", "DATASTORE"],
@@ -195,14 +234,21 @@ XOR
195234
["keyword", "EXECUTE"],
196235
["keyword", "EXPLAIN"],
197236
["keyword", "FETCH"],
237+
["keyword", "FILTER"],
198238
["keyword", "FLATTEN"],
239+
["keyword", "FLUSH"],
240+
["keyword", "FOLLOWING"],
199241
["keyword", "FOR"],
200242
["keyword", "FORCE"],
201243
["keyword", "FROM"],
244+
["keyword", "FTS"],
202245
["keyword", "FUNCTION"],
246+
["keyword", "GOLANG"],
203247
["keyword", "GRANT"],
204248
["keyword", "GROUP"],
249+
["keyword", "GROUPS"],
205250
["keyword", "GSI"],
251+
["keyword", "HASH"],
206252
["keyword", "HAVING"],
207253
["keyword", "IF"],
208254
["keyword", "IGNORE"],
@@ -217,15 +263,19 @@ XOR
217263
["keyword", "INTERSECT"],
218264
["keyword", "INTO"],
219265
["keyword", "IS"],
266+
["keyword", "ISOLATION"],
267+
["keyword", "JAVASCRIPT"],
220268
["keyword", "JOIN"],
221269
["keyword", "KEY"],
222270
["keyword", "KEYS"],
223271
["keyword", "KEYSPACE"],
224272
["keyword", "KNOWN"],
273+
["keyword", "LANGUAGE"],
225274
["keyword", "LAST"],
226275
["keyword", "LEFT"],
227276
["keyword", "LET"],
228277
["keyword", "LETTING"],
278+
["keyword", "LEVEL"],
229279
["keyword", "LIMIT"],
230280
["keyword", "LSM"],
231281
["keyword", "MAP"],
@@ -237,38 +287,52 @@ XOR
237287
["keyword", "MISSING"],
238288
["keyword", "NAMESPACE"],
239289
["keyword", "NEST"],
290+
["keyword", "NL"],
291+
["keyword", "NO"],
292+
["keyword", "NTH_VALUE"],
240293
["keyword", "NULL"],
294+
["keyword", "NULLS"],
241295
["keyword", "NUMBER"],
242296
["keyword", "OBJECT"],
243297
["keyword", "OFFSET"],
244298
["keyword", "ON"],
245299
["keyword", "OPTION"],
300+
["keyword", "OPTIONS"],
246301
["keyword", "ORDER"],
302+
["keyword", "OTHERS"],
247303
["keyword", "OUTER"],
248304
["keyword", "OVER"],
249305
["keyword", "PARSE"],
250306
["keyword", "PARTITION"],
251307
["keyword", "PASSWORD"],
252308
["keyword", "PATH"],
253309
["keyword", "POOL"],
310+
["keyword", "PRECEDING"],
254311
["keyword", "PREPARE"],
255312
["keyword", "PRIMARY"],
256313
["keyword", "PRIVATE"],
257314
["keyword", "PRIVILEGE"],
315+
["keyword", "PROBE"],
258316
["keyword", "PROCEDURE"],
259317
["keyword", "PUBLIC"],
318+
["keyword", "RANGE"],
260319
["keyword", "RAW"],
261320
["keyword", "REALM"],
262321
["keyword", "REDUCE"],
263322
["keyword", "RENAME"],
323+
["keyword", "RESPECT"],
264324
["keyword", "RETURN"],
265325
["keyword", "RETURNING"],
266326
["keyword", "REVOKE"],
267327
["keyword", "RIGHT"],
268328
["keyword", "ROLE"],
269329
["keyword", "ROLLBACK"],
330+
["keyword", "ROW"],
331+
["keyword", "ROWS"],
270332
["keyword", "SATISFIES"],
333+
["keyword", "SAVEPOINT"],
271334
["keyword", "SCHEMA"],
335+
["keyword", "SCOPE"],
272336
["keyword", "SELECT"],
273337
["keyword", "SELF"],
274338
["keyword", "SEMI"],
@@ -279,10 +343,13 @@ XOR
279343
["keyword", "STATISTICS"],
280344
["keyword", "STRING"],
281345
["keyword", "SYSTEM"],
346+
["keyword", "TIES"],
282347
["keyword", "TO"],
348+
["keyword", "TRAN"],
283349
["keyword", "TRANSACTION"],
284350
["keyword", "TRIGGER"],
285351
["keyword", "TRUNCATE"],
352+
["keyword", "UNBOUNDED"],
286353
["keyword", "UNDER"],
287354
["keyword", "UNION"],
288355
["keyword", "UNIQUE"],
@@ -301,11 +368,12 @@ XOR
301368
["keyword", "VIEW"],
302369
["keyword", "WHERE"],
303370
["keyword", "WHILE"],
371+
["keyword", "WINDOW"],
304372
["keyword", "WITH"],
305373
["keyword", "WORK"],
306374
["keyword", "XOR"]
307375
]
308376

309377
----------------------------------------------------
310378

311-
Checks for all keywords.
379+
Checks for all keywords.

0 commit comments

Comments
 (0)