Skip to content

Commit fc27700

Browse files
author
Michael Lyons
committed
Scope clauses in QUERY
1 parent ea81d08 commit fc27700

File tree

2 files changed

+42
-1
lines changed

2 files changed

+42
-1
lines changed

Google Sheets Query Language.sublime-syntax

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ contexts:
4444
push: select-body
4545

4646
select-body:
47+
- meta_scope: meta.block.clause.select.google
4748
- include: pop-next-clause
4849
- match: \*(?=\s*(?:$|,|{{clause_words}}))
4950
scope: constant.other.wildcard.asterisk.google
@@ -56,6 +57,7 @@ contexts:
5657
push: where-body
5758

5859
where-body:
60+
- meta_scope: meta.block.clause.where.google
5961
- include: pop-next-clause
6062
- include: where-expressions
6163
- match: \(
@@ -127,21 +129,29 @@ contexts:
127129
push: group-by-body
128130

129131
group-by-body:
132+
- meta_scope: meta.block.clause.group-by.google
130133
- include: pop-next-clause
131134
- include: comma-separators
132135
- include: identifiers
133136

134137
pivot:
135138
- match: \b(?i)pivot\b
136139
scope: keyword.other.dml.google
137-
push: group-by-body
140+
push: pivot-body
141+
142+
pivot-body:
143+
- meta_scope: meta.block.clause.pivot.google
144+
- include: pop-next-clause
145+
- include: comma-separators
146+
- include: identifiers
138147

139148
order-by:
140149
- match: \b(?i)order\s+by\b
141150
scope: keyword.other.dml.google
142151
push: order-by-body
143152

144153
order-by-body:
154+
- meta_scope: meta.block.clause.order-by.google
145155
- include: pop-next-clause
146156
- include: comma-separators
147157
- include: operators-arithmetic
@@ -154,6 +164,7 @@ contexts:
154164
- match: \b(?i)limit\b
155165
scope: keyword.other.dml.google
156166
push:
167+
- meta_scope: meta.block.clause.limit.google
157168
- include: pop-next-clause
158169
- include: numbers
159170
- include: operators-arithmetic
@@ -162,6 +173,7 @@ contexts:
162173
- match: \b(?i)offset\b
163174
scope: keyword.other.dml.google
164175
push:
176+
- meta_scope: meta.block.clause.offset.google
165177
- include: pop-next-clause
166178
- include: numbers
167179
- include: operators-arithmetic
@@ -170,6 +182,7 @@ contexts:
170182
- match: \b(?i)label\b
171183
scope: keyword.other.dml.google
172184
push:
185+
- meta_scope: meta.block.clause.label.google
173186
- include: pop-next-clause
174187
- include: comma-separators
175188
- include: strings
@@ -179,6 +192,7 @@ contexts:
179192
- match: \b(?i)format\b
180193
scope: keyword.other.dml.google
181194
push:
195+
- meta_scope: meta.block.clause.format.google
182196
- include: pop-next-clause
183197
- include: comma-separators
184198
- include: strings
@@ -188,6 +202,7 @@ contexts:
188202
- match: \b(?i)options\b
189203
scope: keyword.other.dml.google
190204
push:
205+
- meta_scope: meta.block.clause.options.google
191206
- include: pop-next-clause
192207
- match: \bno_(?:format|values)\b
193208
scope: storage.modifier.google

tests/syntax_test_google_query.google.sql

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,8 @@ select name where salary > 700
138138
-- ^^^ meta.number.integer.decimal.google constant.numeric.value.google
139139

140140
select dept, max(salary) group by dept
141+
--^^^^^^^^^^^^^^^^^^^^^^^ meta.block.clause.select.google - meta.block.clause meta.block.clause
142+
-- ^^^^^^^^^^^^^ meta.block.clause.group-by.google - meta.block.clause meta.block.clause
141143
--^^^^ keyword.other.dml.google
142144
-- ^^^^ meta.column-name.google
143145
-- ^ punctuation.separator.sequence.google
@@ -150,6 +152,8 @@ select dept, max(salary) group by dept
150152
-- ^^^^ meta.column-name.google
151153

152154
select lunchTime, avg(salary), count(age) group by isSenior,lunchTime
155+
--^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.block.clause.select.google - meta.block.clause meta.block.clause
156+
-- ^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.block.clause.group-by.google - meta.block.clause meta.block.clause
153157
--^^^^ keyword.other.dml.google
154158
-- ^^^^^^^^^ meta.column-name.google
155159
-- ^ punctuation.separator.sequence.google
@@ -170,6 +174,8 @@ select lunchTime, avg(salary), count(age) group by isSenior,lunchTime
170174
-- ^^^^^^^^^ meta.column-name.google
171175

172176
select sum(salary) pivot dept
177+
--^^^^^^^^^^^^^^^^^ meta.block.clause.select.google - meta.block.clause meta.block.clause
178+
-- ^^^^^^^^^^ meta.block.clause.pivot.google - meta.block.clause meta.block.clause
173179
--^^^^ keyword.other.dml.google
174180
-- ^^^ meta.function-call.google support.function.aggregate.google
175181
-- ^^^^^^^^ meta.function-call.arguments.google
@@ -180,6 +186,7 @@ select sum(salary) pivot dept
180186
-- ^^^^ meta.column-name.google
181187

182188
select dept, sum(salary)
189+
--^^^^^^^^^^^^^^^^^^^^^^ meta.block.clause.select.google - meta.block.clause meta.block.clause
183190
--^^^^ keyword.other.dml.google
184191
-- ^^^^ meta.column-name.google
185192
-- ^ punctuation.separator.sequence.google
@@ -189,14 +196,17 @@ select dept, sum(salary)
189196
-- ^^^^^^ meta.column-name.google
190197
-- ^ punctuation.section.arguments.end.google
191198
group by dept
199+
--^^^^^^^^^^^^^ meta.block.clause.group-by.google - meta.block.clause meta.block.clause
192200
--^^^^^^^^ keyword.other.dml.google
193201
-- ^^^^ meta.column-name.google
194202
pivot lunchTime
203+
--^^^^^^^^^^^^^^^ meta.block.clause.pivot.google - meta.block.clause meta.block.clause
195204
--^^^^^ keyword.other.dml.google
196205
-- ^^^^^^^^^ meta.column-name.google
197206

198207

199208
select sum(salary), max(lunchTime)
209+
--^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.block.clause.select.google - meta.block.clause meta.block.clause
200210
--^^^^ keyword.other.dml.google
201211
-- ^^^ meta.function-call.google support.function.aggregate.google
202212
-- ^^^^^^^^ meta.function-call.arguments.google
@@ -210,17 +220,22 @@ select sum(salary), max(lunchTime)
210220
-- ^^^^^^^^^ meta.column-name.google
211221
-- ^ punctuation.section.arguments.end.google
212222
pivot dept
223+
--^^^^^^^^^^ meta.block.clause.pivot.google - meta.block.clause meta.block.clause
213224
--^^^^^ keyword.other.dml.google
214225
-- ^^^^ meta.column-name.google
215226

216227
order by dept, salary desc
228+
--^^^^^^^^^^^^^^^^^^^^^^^^ meta.block.clause.order-by.google - meta.block.clause meta.block.clause
217229
--^^^^^^ keyword.other.dml.google
218230
-- ^^^^ meta.column-name.google
219231
-- ^ punctuation.separator.sequence.google
220232
-- ^^^^^^ meta.column-name.google
221233
-- ^^^^ keyword.other.google
222234

223235
select dept, max(salary) group by dept order by max(salary)
236+
--^^^^^^^^^^^^^^^^^^^^^^^ meta.block.clause.select.google - meta.block.clause meta.block.clause
237+
-- ^^^^^^^^^^^^^^ meta.block.clause.group-by.google - meta.block.clause meta.block.clause
238+
-- ^^^^^^^^^^^^^^ meta.block.clause.order-by.google - meta.block.clause meta.block.clause
224239
--^^^^ keyword.other.dml.google
225240
-- ^^^^ meta.column-name.google
226241
-- ^ punctuation.separator.sequence.google
@@ -239,19 +254,24 @@ select dept, max(salary) group by dept order by max(salary)
239254
-- ^ punctuation.section.arguments.end.google
240255

241256
limit 100
257+
--^^^^^^^ meta.block.clause.limit.google - meta.block.clause meta.block.clause
242258
--^^^ keyword.other.dml.google
243259
-- ^^^ meta.number.integer.decimal.google constant.numeric.value.google
244260

245261
offset 10
262+
--^^^^^^^ meta.block.clause.offset.google - meta.block.clause meta.block.clause
246263
--^^^^ keyword.other.dml.google
247264
-- ^^ meta.number.integer.decimal.google constant.numeric.value.google
248265
limit 30 offset 210
266+
--^^^^^^^ meta.block.clause.limit.google - meta.block.clause meta.block.clause
267+
-- ^^^^^^^^^^ meta.block.clause.offset.google - meta.block.clause meta.block.clause
249268
--^^^ keyword.other.dml.google
250269
-- ^^ meta.number.integer.decimal.google constant.numeric.value.google
251270
-- ^^^^^^ keyword.other.dml.google
252271
-- ^^^ meta.number.integer.decimal.google constant.numeric.value.google
253272

254273
label dept 'Department', name "Employee Name", location 'Employee Location'
274+
--^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.block.clause.label.google - meta.block.clause meta.block.clause
255275
--^^^ keyword.other.dml.google
256276
-- ^^^^ meta.column-name.google
257277
-- ^^^^^^^^^^^^ meta.string.google string.quoted.single.google
@@ -269,6 +289,7 @@ label dept 'Department', name "Employee Name", location 'Employee Location'
269289
-- ^ punctuation.definition.string.end.google
270290

271291
format salary '#,##0.00', hireDate 'dd-MMM-yyyy', isSenior 'Yes!:Not yet'
292+
--^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.block.clause.format.google - meta.block.clause meta.block.clause
272293
--^^^^ keyword.other.dml.google
273294
-- ^^^^^^ meta.column-name.google
274295
-- ^^^^^^^^^^ meta.string.google string.quoted.single.google
@@ -286,12 +307,14 @@ format salary '#,##0.00', hireDate 'dd-MMM-yyyy', isSenior 'Yes!:Not yet'
286307
-- ^ punctuation.definition.string.end.google
287308

288309
select empSalary - empTax
310+
--^^^^^^^^^^^^^^^^^^^^^^^ meta.block.clause.select.google - meta.block.clause meta.block.clause
289311
--^^^^ keyword.other.dml.google
290312
-- ^^^^^^^^^ meta.column-name.google
291313
-- ^ keyword.operator.arithmetic.google
292314
-- ^^^^^^ meta.column-name.google
293315

294316
select 2 * (max(empSalary) / max(empTax))
317+
--^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.block.clause.select.google - meta.block.clause meta.block.clause
295318
--^^^^ keyword.other.dml.google
296319
-- ^ meta.number.integer.decimal.google constant.numeric.value.google
297320
-- ^ keyword.operator.arithmetic.google
@@ -312,6 +335,7 @@ select 2 * (max(empSalary) / max(empTax))
312335

313336
-- date "2008-03-18" is a date literal
314337
where startDate < date "2008-03-18"
338+
--^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.block.clause.where.google - meta.block.clause meta.block.clause
315339
--^^^ keyword.other.dml.google
316340
-- ^^^^^^^^^ meta.column-name.google
317341
-- ^ keyword.operator.comparison.google
@@ -323,11 +347,13 @@ where startDate < date "2008-03-18"
323347

324348
-- 30 is a numeric literal
325349
limit 30
350+
--^^^^^^ meta.block.clause.limit.google - meta.block.clause meta.block.clause
326351
--^^^ keyword.other.dml.google
327352
-- ^^ meta.number.integer.decimal.google constant.numeric.value.google
328353

329354
-- '#,##0.00' and 'not yet:of course!' are both string literals
330355
format salary '#,##0.00', isSenior 'not yet:of course!'
356+
--^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.block.clause.format.google - meta.block.clause meta.block.clause
331357
--^^^^ keyword.other.dml.google
332358
-- ^^^^^^ meta.column-name.google
333359
-- ^^^^^^^^^^ meta.string.google string.quoted.single.google

0 commit comments

Comments
 (0)