Skip to content

Commit

Permalink
Scope clauses in QUERY
Browse files Browse the repository at this point in the history
  • Loading branch information
Michael Lyons committed Jan 28, 2025
1 parent ea81d08 commit fc27700
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 1 deletion.
17 changes: 16 additions & 1 deletion Google Sheets Query Language.sublime-syntax
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ contexts:
push: select-body

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

where-body:
- meta_scope: meta.block.clause.where.google
- include: pop-next-clause
- include: where-expressions
- match: \(
Expand Down Expand Up @@ -127,21 +129,29 @@ contexts:
push: group-by-body

group-by-body:
- meta_scope: meta.block.clause.group-by.google
- include: pop-next-clause
- include: comma-separators
- include: identifiers

pivot:
- match: \b(?i)pivot\b
scope: keyword.other.dml.google
push: group-by-body
push: pivot-body

pivot-body:
- meta_scope: meta.block.clause.pivot.google
- include: pop-next-clause
- include: comma-separators
- include: identifiers

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

order-by-body:
- meta_scope: meta.block.clause.order-by.google
- include: pop-next-clause
- include: comma-separators
- include: operators-arithmetic
Expand All @@ -154,6 +164,7 @@ contexts:
- match: \b(?i)limit\b
scope: keyword.other.dml.google
push:
- meta_scope: meta.block.clause.limit.google
- include: pop-next-clause
- include: numbers
- include: operators-arithmetic
Expand All @@ -162,6 +173,7 @@ contexts:
- match: \b(?i)offset\b
scope: keyword.other.dml.google
push:
- meta_scope: meta.block.clause.offset.google
- include: pop-next-clause
- include: numbers
- include: operators-arithmetic
Expand All @@ -170,6 +182,7 @@ contexts:
- match: \b(?i)label\b
scope: keyword.other.dml.google
push:
- meta_scope: meta.block.clause.label.google
- include: pop-next-clause
- include: comma-separators
- include: strings
Expand All @@ -179,6 +192,7 @@ contexts:
- match: \b(?i)format\b
scope: keyword.other.dml.google
push:
- meta_scope: meta.block.clause.format.google
- include: pop-next-clause
- include: comma-separators
- include: strings
Expand All @@ -188,6 +202,7 @@ contexts:
- match: \b(?i)options\b
scope: keyword.other.dml.google
push:
- meta_scope: meta.block.clause.options.google
- include: pop-next-clause
- match: \bno_(?:format|values)\b
scope: storage.modifier.google
Expand Down
26 changes: 26 additions & 0 deletions tests/syntax_test_google_query.google.sql
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,8 @@ select name where salary > 700
-- ^^^ meta.number.integer.decimal.google constant.numeric.value.google

select dept, max(salary) group by dept
--^^^^^^^^^^^^^^^^^^^^^^^ meta.block.clause.select.google - meta.block.clause meta.block.clause
-- ^^^^^^^^^^^^^ meta.block.clause.group-by.google - meta.block.clause meta.block.clause
--^^^^ keyword.other.dml.google
-- ^^^^ meta.column-name.google
-- ^ punctuation.separator.sequence.google
Expand All @@ -150,6 +152,8 @@ select dept, max(salary) group by dept
-- ^^^^ meta.column-name.google

select lunchTime, avg(salary), count(age) group by isSenior,lunchTime
--^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.block.clause.select.google - meta.block.clause meta.block.clause
-- ^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.block.clause.group-by.google - meta.block.clause meta.block.clause
--^^^^ keyword.other.dml.google
-- ^^^^^^^^^ meta.column-name.google
-- ^ punctuation.separator.sequence.google
Expand All @@ -170,6 +174,8 @@ select lunchTime, avg(salary), count(age) group by isSenior,lunchTime
-- ^^^^^^^^^ meta.column-name.google

select sum(salary) pivot dept
--^^^^^^^^^^^^^^^^^ meta.block.clause.select.google - meta.block.clause meta.block.clause
-- ^^^^^^^^^^ meta.block.clause.pivot.google - meta.block.clause meta.block.clause
--^^^^ keyword.other.dml.google
-- ^^^ meta.function-call.google support.function.aggregate.google
-- ^^^^^^^^ meta.function-call.arguments.google
Expand All @@ -180,6 +186,7 @@ select sum(salary) pivot dept
-- ^^^^ meta.column-name.google

select dept, sum(salary)
--^^^^^^^^^^^^^^^^^^^^^^ meta.block.clause.select.google - meta.block.clause meta.block.clause
--^^^^ keyword.other.dml.google
-- ^^^^ meta.column-name.google
-- ^ punctuation.separator.sequence.google
Expand All @@ -189,14 +196,17 @@ select dept, sum(salary)
-- ^^^^^^ meta.column-name.google
-- ^ punctuation.section.arguments.end.google
group by dept
--^^^^^^^^^^^^^ meta.block.clause.group-by.google - meta.block.clause meta.block.clause
--^^^^^^^^ keyword.other.dml.google
-- ^^^^ meta.column-name.google
pivot lunchTime
--^^^^^^^^^^^^^^^ meta.block.clause.pivot.google - meta.block.clause meta.block.clause
--^^^^^ keyword.other.dml.google
-- ^^^^^^^^^ meta.column-name.google


select sum(salary), max(lunchTime)
--^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.block.clause.select.google - meta.block.clause meta.block.clause
--^^^^ keyword.other.dml.google
-- ^^^ meta.function-call.google support.function.aggregate.google
-- ^^^^^^^^ meta.function-call.arguments.google
Expand All @@ -210,17 +220,22 @@ select sum(salary), max(lunchTime)
-- ^^^^^^^^^ meta.column-name.google
-- ^ punctuation.section.arguments.end.google
pivot dept
--^^^^^^^^^^ meta.block.clause.pivot.google - meta.block.clause meta.block.clause
--^^^^^ keyword.other.dml.google
-- ^^^^ meta.column-name.google

order by dept, salary desc
--^^^^^^^^^^^^^^^^^^^^^^^^ meta.block.clause.order-by.google - meta.block.clause meta.block.clause
--^^^^^^ keyword.other.dml.google
-- ^^^^ meta.column-name.google
-- ^ punctuation.separator.sequence.google
-- ^^^^^^ meta.column-name.google
-- ^^^^ keyword.other.google

select dept, max(salary) group by dept order by max(salary)
--^^^^^^^^^^^^^^^^^^^^^^^ meta.block.clause.select.google - meta.block.clause meta.block.clause
-- ^^^^^^^^^^^^^^ meta.block.clause.group-by.google - meta.block.clause meta.block.clause
-- ^^^^^^^^^^^^^^ meta.block.clause.order-by.google - meta.block.clause meta.block.clause
--^^^^ keyword.other.dml.google
-- ^^^^ meta.column-name.google
-- ^ punctuation.separator.sequence.google
Expand All @@ -239,19 +254,24 @@ select dept, max(salary) group by dept order by max(salary)
-- ^ punctuation.section.arguments.end.google

limit 100
--^^^^^^^ meta.block.clause.limit.google - meta.block.clause meta.block.clause
--^^^ keyword.other.dml.google
-- ^^^ meta.number.integer.decimal.google constant.numeric.value.google

offset 10
--^^^^^^^ meta.block.clause.offset.google - meta.block.clause meta.block.clause
--^^^^ keyword.other.dml.google
-- ^^ meta.number.integer.decimal.google constant.numeric.value.google
limit 30 offset 210
--^^^^^^^ meta.block.clause.limit.google - meta.block.clause meta.block.clause
-- ^^^^^^^^^^ meta.block.clause.offset.google - meta.block.clause meta.block.clause
--^^^ keyword.other.dml.google
-- ^^ meta.number.integer.decimal.google constant.numeric.value.google
-- ^^^^^^ keyword.other.dml.google
-- ^^^ meta.number.integer.decimal.google constant.numeric.value.google

label dept 'Department', name "Employee Name", location 'Employee Location'
--^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.block.clause.label.google - meta.block.clause meta.block.clause
--^^^ keyword.other.dml.google
-- ^^^^ meta.column-name.google
-- ^^^^^^^^^^^^ meta.string.google string.quoted.single.google
Expand All @@ -269,6 +289,7 @@ label dept 'Department', name "Employee Name", location 'Employee Location'
-- ^ punctuation.definition.string.end.google

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

select empSalary - empTax
--^^^^^^^^^^^^^^^^^^^^^^^ meta.block.clause.select.google - meta.block.clause meta.block.clause
--^^^^ keyword.other.dml.google
-- ^^^^^^^^^ meta.column-name.google
-- ^ keyword.operator.arithmetic.google
-- ^^^^^^ meta.column-name.google

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

-- date "2008-03-18" is a date literal
where startDate < date "2008-03-18"
--^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.block.clause.where.google - meta.block.clause meta.block.clause
--^^^ keyword.other.dml.google
-- ^^^^^^^^^ meta.column-name.google
-- ^ keyword.operator.comparison.google
Expand All @@ -323,11 +347,13 @@ where startDate < date "2008-03-18"

-- 30 is a numeric literal
limit 30
--^^^^^^ meta.block.clause.limit.google - meta.block.clause meta.block.clause
--^^^ keyword.other.dml.google
-- ^^ meta.number.integer.decimal.google constant.numeric.value.google

-- '#,##0.00' and 'not yet:of course!' are both string literals
format salary '#,##0.00', isSenior 'not yet:of course!'
--^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.block.clause.format.google - meta.block.clause meta.block.clause
--^^^^ keyword.other.dml.google
-- ^^^^^^ meta.column-name.google
-- ^^^^^^^^^^ meta.string.google string.quoted.single.google
Expand Down

0 comments on commit fc27700

Please sign in to comment.