Skip to content

Commit 1b3a265

Browse files
Make sure syntax is current (#201)
* Make sure syntax is current * Fix issues in merge for highlights.scm --------- Co-authored-by: George Stagg <george.stagg@posit.co>
1 parent bd4b509 commit 1b3a265

12 files changed

Lines changed: 103 additions & 251 deletions

File tree

CLAUDE.md

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,7 @@ For detailed API documentation, see [`src/doc/API.md`](src/doc/API.md).
258258

259259
- Uses `tree-sitter-ggsql` grammar (507 lines, simplified approach)
260260
- Parses **full query** (SQL + VISUALISE) into concrete syntax tree (CST)
261-
- Grammar supports: PLOT/TABLE/MAP types, DRAW/SCALE/FACET/PROJECT/LABEL/THEME clauses
261+
- Grammar supports: PLOT/TABLE/MAP types, DRAW/SCALE/FACET/PROJECT/LABEL clauses
262262
- British and American spellings: `VISUALISE` / `VISUALIZE`
263263
- **SQL portion parsing**: Basic SQL structure (SELECT, WITH, CREATE, INSERT, subqueries)
264264
- **Recursive subquery support**: Fully recursive grammar for complex SQL
@@ -306,7 +306,6 @@ pub struct Plot {
306306
pub facet: Option<Facet>, // FACET clause
307307
pub project: Option<Project>, // PROJECT clause
308308
pub labels: Option<Labels>, // LABEL clause
309-
pub theme: Option<Theme>, // THEME clause
310309
}
311310

312311
/// Global mapping specification from VISUALISE clause
@@ -1063,7 +1062,6 @@ Where `<global_mapping>` can be:
10631062
| `FACET` | ❌ No | Small multiples | `FACET region` |
10641063
| `PROJECT` | ❌ No | Coordinate system | `PROJECT TO cartesian` |
10651064
| `LABEL` | ❌ No | Text labels | `LABEL title => 'My Chart', x => 'Date'` |
1066-
| `THEME` | ❌ No | Visual styling | `THEME minimal` |
10671065

10681066
### DRAW Clause (Layers)
10691067

@@ -1516,8 +1514,7 @@ Plot {
15161514
Scale { aesthetic: "x", scale_type: Some(ScaleType::Date) }
15171515
],
15181516
facet: Some(Facet::Wrap { variables: ["region"], scales: "fixed" }),
1519-
labels: Some(Labels { labels: {"title": "...", "x": "Date", "y": "Total Quantity"} }),
1520-
theme: Some(Theme::Minimal)
1517+
labels: Some(Labels { labels: {"title": "...", "x": "Date", "y": "Total Quantity"} })
15211518
}
15221519
```
15231520

doc/ggsql.xml

Lines changed: 28 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,6 @@
9595
<item>PROJECT</item>
9696
<item>FACET</item>
9797
<item>LABEL</item>
98-
<item>THEME</item>
9998
<item>VISUALISE</item>
10099
<item>VISUALIZE</item>
101100
</list>
@@ -128,7 +127,6 @@
128127
<item>line</item>
129128
<item>path</item>
130129
<item>bar</item>
131-
<item>col</item>
132130
<item>area</item>
133131
<item>rect</item>
134132
<item>polygon</item>
@@ -148,6 +146,7 @@
148146

149147
<!-- Aesthetics -->
150148
<list name="aesthetics">
149+
<!-- Position aesthetics (cartesian) -->
151150
<item>x</item>
152151
<item>y</item>
153152
<item>xmin</item>
@@ -156,24 +155,48 @@
156155
<item>ymax</item>
157156
<item>xend</item>
158157
<item>yend</item>
158+
<!-- Position aesthetics (polar) -->
159+
<item>theta</item>
160+
<item>radius</item>
161+
<item>thetamin</item>
162+
<item>thetamax</item>
163+
<item>radiusmin</item>
164+
<item>radiusmax</item>
165+
<item>thetaend</item>
166+
<item>radiusend</item>
167+
<!-- Aggregation aesthetic -->
159168
<item>weight</item>
169+
<!-- Color aesthetics -->
160170
<item>color</item>
161171
<item>colour</item>
162172
<item>fill</item>
163173
<item>stroke</item>
164174
<item>opacity</item>
175+
<!-- Size and shape -->
165176
<item>size</item>
166177
<item>shape</item>
167178
<item>linetype</item>
168179
<item>linewidth</item>
169180
<item>width</item>
170181
<item>height</item>
171-
<item>typeface</item>
172-
<item>fontweight</item>
173-
<item>italic</item>
182+
<!-- Text aesthetics -->
183+
<item>label</item>
184+
<item>family</item>
185+
<item>fontface</item>
174186
<item>hjust</item>
175187
<item>vjust</item>
188+
<!-- Specialty aesthetics -->
176189
<item>slope</item>
190+
<item>intercept</item>
191+
<!-- Facet aesthetics -->
192+
<item>panel</item>
193+
<item>row</item>
194+
<item>column</item>
195+
<!-- Computed variables -->
196+
<item>offset</item>
197+
<item>density</item>
198+
<item>count</item>
199+
<item>intensity</item>
177200
</list>
178201

179202
<!-- Scale Types (only in SCALE context) -->
@@ -204,23 +227,6 @@
204227
<list name="project_types">
205228
<item>cartesian</item>
206229
<item>polar</item>
207-
<item>flip</item>
208-
<item>fixed</item>
209-
<item>trans</item>
210-
<item>map</item>
211-
<item>quickmap</item>
212-
</list>
213-
214-
<!-- Theme Names (only in THEME context) -->
215-
<list name="theme_names">
216-
<item>minimal</item>
217-
<item>classic</item>
218-
<item>gray</item>
219-
<item>grey</item>
220-
<item>bw</item>
221-
<item>dark</item>
222-
<item>light</item>
223-
<item>void</item>
224230
</list>
225231

226232
<!-- Scale Properties -->
@@ -254,27 +260,6 @@
254260
<item>tag</item>
255261
</list>
256262

257-
<!-- Theme Properties -->
258-
<list name="theme_properties">
259-
<item>background</item>
260-
<item>panel_background</item>
261-
<item>panel_grid</item>
262-
<item>panel_grid_major</item>
263-
<item>panel_grid_minor</item>
264-
<item>text_size</item>
265-
<item>text_family</item>
266-
<item>title_size</item>
267-
<item>axis_text_size</item>
268-
<item>axis_line</item>
269-
<item>axis_line_width</item>
270-
<item>panel_border</item>
271-
<item>plot_margin</item>
272-
<item>panel_spacing</item>
273-
<item>legend_background</item>
274-
<item>legend_position</item>
275-
<item>legend_direction</item>
276-
</list>
277-
278263
<!-- SQL Functions -->
279264
<list name="sql_functions">
280265
<item>count</item>
@@ -410,7 +395,6 @@
410395
<WordDetect attribute="Keyword" context="ProjectClause" String="PROJECT" insensitive="true"/>
411396
<WordDetect attribute="Keyword" context="FacetClause" String="FACET" insensitive="true"/>
412397
<WordDetect attribute="Keyword" context="LabelClause" String="LABEL" insensitive="true"/>
413-
<WordDetect attribute="Keyword" context="ThemeClause" String="THEME" insensitive="true"/>
414398

415399
<!-- Fat arrow operator -->
416400
<StringDetect attribute="Operator" context="#stay" String="=&gt;"/>
@@ -458,7 +442,6 @@
458442
<WordDetect attribute="Keyword" context="ProjectClause" String="PROJECT" insensitive="true"/>
459443
<WordDetect attribute="Keyword" context="FacetClause" String="FACET" insensitive="true"/>
460444
<WordDetect attribute="Keyword" context="LabelClause" String="LABEL" insensitive="true"/>
461-
<WordDetect attribute="Keyword" context="ThemeClause" String="THEME" insensitive="true"/>
462445
<WordDetect attribute="Keyword" context="Normal" String="VISUALISE" insensitive="true"/>
463446
<WordDetect attribute="Keyword" context="Normal" String="VISUALIZE" insensitive="true"/>
464447
<WordDetect attribute="Keyword" context="Normal" String="SELECT" insensitive="true"/>
@@ -499,7 +482,6 @@
499482
<WordDetect attribute="Keyword" context="ProjectClause" String="PROJECT" insensitive="true"/>
500483
<WordDetect attribute="Keyword" context="FacetClause" String="FACET" insensitive="true"/>
501484
<WordDetect attribute="Keyword" context="LabelClause" String="LABEL" insensitive="true"/>
502-
<WordDetect attribute="Keyword" context="ThemeClause" String="THEME" insensitive="true"/>
503485
<WordDetect attribute="Keyword" context="Normal" String="VISUALISE" insensitive="true"/>
504486
<WordDetect attribute="Keyword" context="Normal" String="VISUALIZE" insensitive="true"/>
505487
<WordDetect attribute="Keyword" context="Normal" String="SELECT" insensitive="true"/>
@@ -539,7 +521,6 @@
539521
<WordDetect attribute="Keyword" context="ProjectClause" String="PROJECT" insensitive="true"/>
540522
<WordDetect attribute="Keyword" context="FacetClause" String="FACET" insensitive="true"/>
541523
<WordDetect attribute="Keyword" context="LabelClause" String="LABEL" insensitive="true"/>
542-
<WordDetect attribute="Keyword" context="ThemeClause" String="THEME" insensitive="true"/>
543524
<WordDetect attribute="Keyword" context="Normal" String="VISUALISE" insensitive="true"/>
544525
<WordDetect attribute="Keyword" context="Normal" String="VISUALIZE" insensitive="true"/>
545526
<WordDetect attribute="Keyword" context="Normal" String="SELECT" insensitive="true"/>
@@ -586,7 +567,6 @@
586567
<WordDetect attribute="Keyword" context="ProjectClause" String="PROJECT" insensitive="true"/>
587568
<WordDetect attribute="Keyword" context="FacetClause" String="FACET" insensitive="true"/>
588569
<WordDetect attribute="Keyword" context="LabelClause" String="LABEL" insensitive="true"/>
589-
<WordDetect attribute="Keyword" context="ThemeClause" String="THEME" insensitive="true"/>
590570
<WordDetect attribute="Keyword" context="Normal" String="VISUALISE" insensitive="true"/>
591571
<WordDetect attribute="Keyword" context="Normal" String="VISUALIZE" insensitive="true"/>
592572
<WordDetect attribute="Keyword" context="Normal" String="SELECT" insensitive="true"/>
@@ -630,7 +610,6 @@
630610
<WordDetect attribute="Keyword" context="ProjectClause" String="PROJECT" insensitive="true"/>
631611
<WordDetect attribute="Keyword" context="FacetClause" String="FACET" insensitive="true"/>
632612
<WordDetect attribute="Keyword" context="LabelClause" String="LABEL" insensitive="true"/>
633-
<WordDetect attribute="Keyword" context="ThemeClause" String="THEME" insensitive="true"/>
634613
<WordDetect attribute="Keyword" context="Normal" String="VISUALISE" insensitive="true"/>
635614
<WordDetect attribute="Keyword" context="Normal" String="VISUALIZE" insensitive="true"/>
636615
<WordDetect attribute="Keyword" context="Normal" String="SELECT" insensitive="true"/>
@@ -673,7 +652,6 @@
673652
<WordDetect attribute="Keyword" context="ProjectClause" String="PROJECT" insensitive="true"/>
674653
<WordDetect attribute="Keyword" context="FacetClause" String="FACET" insensitive="true"/>
675654
<WordDetect attribute="Keyword" context="LabelClause" String="LABEL" insensitive="true"/>
676-
<WordDetect attribute="Keyword" context="ThemeClause" String="THEME" insensitive="true"/>
677655
<WordDetect attribute="Keyword" context="Normal" String="VISUALISE" insensitive="true"/>
678656
<WordDetect attribute="Keyword" context="Normal" String="VISUALIZE" insensitive="true"/>
679657
<WordDetect attribute="Keyword" context="Normal" String="SELECT" insensitive="true"/>
@@ -696,47 +674,6 @@
696674
<DetectChar char="," attribute="Symbol" context="#stay"/>
697675
</context>
698676

699-
<!-- THEME clause context -->
700-
<context name="ThemeClause" attribute="Normal Text" lineEndContext="#stay">
701-
<Detect2Chars char="-" char1="-" attribute="Comment" context="Comment"/>
702-
<Detect2Chars char="/" char1="*" attribute="Comment" context="CommentMulti" beginRegion="comment"/>
703-
<DetectChar char="'" attribute="String" context="StringSingle"/>
704-
<DetectChar char="&quot;" attribute="String" context="StringDouble"/>
705-
<RegExpr attribute="Number" context="#stay" String="-?[0-9]+\.?[0-9]*([eE][+-]?[0-9]+)?"/>
706-
707-
<!-- Exit to other clause contexts -->
708-
<WordDetect attribute="Keyword" context="DrawClause" String="DRAW" insensitive="true"/>
709-
<WordDetect attribute="Keyword" context="PlaceClause" String="PLACE" insensitive="true"/>
710-
<WordDetect attribute="Keyword" context="ScaleClause" String="SCALE" insensitive="true"/>
711-
<WordDetect attribute="Keyword" context="ProjectClause" String="PROJECT" insensitive="true"/>
712-
<WordDetect attribute="Keyword" context="FacetClause" String="FACET" insensitive="true"/>
713-
<WordDetect attribute="Keyword" context="LabelClause" String="LABEL" insensitive="true"/>
714-
<WordDetect attribute="Keyword" context="ThemeClause" String="THEME" insensitive="true"/>
715-
<WordDetect attribute="Keyword" context="Normal" String="VISUALISE" insensitive="true"/>
716-
<WordDetect attribute="Keyword" context="Normal" String="VISUALIZE" insensitive="true"/>
717-
<WordDetect attribute="Keyword" context="Normal" String="SELECT" insensitive="true"/>
718-
<WordDetect attribute="Keyword" context="#stay" String="FROM" insensitive="true"/>
719-
<WordDetect attribute="Keyword" context="Normal" String="WHERE" insensitive="true"/>
720-
<WordDetect attribute="Keyword" context="Normal" String="WITH" insensitive="true"/>
721-
722-
<!-- Theme names - only highlighted here -->
723-
<keyword attribute="Data Type" context="#stay" String="theme_names"/>
724-
725-
<!-- Theme properties -->
726-
<keyword attribute="Attribute" context="#stay" String="theme_properties"/>
727-
728-
<!-- Sub-keywords -->
729-
<keyword attribute="Keyword" context="#stay" String="viz_subkeywords"/>
730-
731-
<StringDetect attribute="Operator" context="#stay" String="=&gt;"/>
732-
<AnyChar attribute="Operator" context="#stay" String="=!&lt;&gt;+-*/%"/>
733-
<DetectChar char="(" attribute="Symbol" context="#stay"/>
734-
<DetectChar char=")" attribute="Symbol" context="#stay"/>
735-
<DetectChar char="[" attribute="Symbol" context="#stay"/>
736-
<DetectChar char="]" attribute="Symbol" context="#stay"/>
737-
<DetectChar char="," attribute="Symbol" context="#stay"/>
738-
</context>
739-
740677
<!-- VISUALISE clause context -->
741678
<context name="VisualiseClause" attribute="Normal Text" lineEndContext="#stay">
742679
<Detect2Chars char="-" char1="-" attribute="Comment" context="Comment"/>
@@ -752,7 +689,6 @@
752689
<WordDetect attribute="Keyword" context="ProjectClause" String="PROJECT" insensitive="true"/>
753690
<WordDetect attribute="Keyword" context="FacetClause" String="FACET" insensitive="true"/>
754691
<WordDetect attribute="Keyword" context="LabelClause" String="LABEL" insensitive="true"/>
755-
<WordDetect attribute="Keyword" context="ThemeClause" String="THEME" insensitive="true"/>
756692
<WordDetect attribute="Keyword" context="VisualiseClause" String="VISUALISE" insensitive="true"/>
757693
<WordDetect attribute="Keyword" context="VisualiseClause" String="VISUALIZE" insensitive="true"/>
758694
<WordDetect attribute="Keyword" context="Normal" String="SELECT" insensitive="true"/>

ggsql-vscode/examples/sample.gsql

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ DRAW point
99
LABEL title => 'Horsepower vs Fuel Efficiency',
1010
x => 'Horsepower',
1111
y => 'Miles per Gallon'
12-
THEME minimal
1312

1413
-- ============================================================================
1514
-- Example 2: Multi-Layer Visualization with CTE
@@ -34,7 +33,6 @@ LABEL title => 'Sales Trends by Region',
3433
x => 'Month',
3534
y => 'Total Quantity',
3635
caption => 'Data from 2024'
37-
THEME classic
3836

3937
-- ============================================================================
4038
-- Example 3: Bar Chart with Projection
@@ -51,7 +49,6 @@ PROJECT y, x TO cartesian
5149
LABEL title => 'Top 10 Product Categories',
5250
x => 'Category',
5351
y => 'Total Sales'
54-
THEME dark
5552

5653
-- ============================================================================
5754
-- Example 4: Polar Projection (Pie Chart)
@@ -107,7 +104,6 @@ LABEL title => 'Temperature Range (Last 30 Days)',
107104
x => 'Date',
108105
y => 'Temperature (°C)',
109106
caption => 'Source: Weather Station Alpha'
110-
THEME minimal
111107

112108
-- ============================================================================
113109
-- Example 7: Complex Join with Multiple Aesthetics
@@ -134,7 +130,6 @@ LABEL title => 'Sales Performance Analysis',
134130
y => 'Revenue (log scale)',
135131
color => 'Product Category',
136132
size => 'Quantity Sold'
137-
THEME grey
138133

139134
-- ============================================================================
140135
-- Example 8: Area Chart with Stacking
@@ -170,7 +165,6 @@ SCALE y FROM [0, 500]
170165
LABEL title => 'Price Distribution by Category',
171166
x => 'Product Category',
172167
y => 'Price ($)'
173-
THEME bw
174168

175169
-- ============================================================================
176170
-- Example 10: Annotated Scatter Plot

0 commit comments

Comments
 (0)