@@ -203,8 +203,6 @@ pub enum Token<'input> {
203
203
Plus ,
204
204
#[ token( "*" ) ]
205
205
Star ,
206
- #[ token( "?" ) ]
207
- SqlParameter ,
208
206
#[ token( "%" ) ]
209
207
Percent ,
210
208
#[ token( "/" ) ]
@@ -213,10 +211,64 @@ pub enum Token<'input> {
213
211
Caret ,
214
212
#[ token( "." ) ]
215
213
Period ,
216
- #[ token( "~" ) ]
217
- Tilde ,
218
214
#[ token( "||" ) ]
219
215
DblPipe ,
216
+ #[ token( "|" ) ]
217
+ Pipe ,
218
+ #[ token( "&" ) ]
219
+ Ampersand ,
220
+ #[ token( "!" ) ]
221
+ Bang ,
222
+ #[ token( "?" ) ]
223
+ QuestionMark ,
224
+
225
+ // Graph Symbols
226
+ #[ token( "|+|" ) ]
227
+ PipePlusPipe ,
228
+ #[ token( "<-" ) ]
229
+ LeftArrow ,
230
+ #[ token( "~" ) ]
231
+ Tilde ,
232
+ #[ token( "->" ) ]
233
+ RightArrow ,
234
+ #[ token( "<~" ) ]
235
+ LeftArrowTilde ,
236
+ #[ token( "~>" ) ]
237
+ TildeRightArrow ,
238
+ #[ token( "<-[" ) ]
239
+ LeftArrowBracket ,
240
+ #[ token( "]-" ) ]
241
+ RightBracketMinus ,
242
+ #[ token( "~[" ) ]
243
+ TildeLeftBracket ,
244
+ #[ token( "]~" ) ]
245
+ RightBracketTilde ,
246
+ #[ token( "-[" ) ]
247
+ MinusLeftBracket ,
248
+ #[ token( "]->" ) ]
249
+ BracketRightArrow ,
250
+ #[ token( "<~[" ) ]
251
+ LeftArrowTildeBracket ,
252
+ #[ token( "]~>" ) ]
253
+ BracketTildeRightArrow ,
254
+ #[ token( "<->" ) ]
255
+ LeftMinusRight ,
256
+ #[ token( "<-/" ) ]
257
+ LeftArrowSlash ,
258
+ #[ token( "/-" ) ]
259
+ RightSlashMinus ,
260
+ #[ token( "~/" ) ]
261
+ TildeLeftSlash ,
262
+ #[ token( "/~" ) ]
263
+ RightSlashTilde ,
264
+ #[ token( "-/" ) ]
265
+ MinusLeftSlash ,
266
+ #[ token( "/->" ) ]
267
+ SlashRightArrow ,
268
+ #[ token( "<~/" ) ]
269
+ LeftArrowTildeSlash ,
270
+ #[ token( "/~>" ) ]
271
+ SlashTildeRightArrow ,
220
272
221
273
// unquoted identifiers
222
274
#[ regex( "[a-zA-Z_$][a-zA-Z0-9_$]*" , |lex| lex. slice( ) ) ]
@@ -292,6 +344,8 @@ pub enum Token<'input> {
292
344
Desc ,
293
345
#[ regex( "(?i:Distinct)" ) ]
294
346
Distinct ,
347
+ #[ regex( "(?i:Element)" ) ]
348
+ Element ,
295
349
#[ regex( "(?i:Else)" ) ]
296
350
Else ,
297
351
#[ regex( "(?i:End)" ) ]
@@ -316,6 +370,8 @@ pub enum Token<'input> {
316
370
From ,
317
371
#[ regex( "(?i:Group)" ) ]
318
372
Group ,
373
+ #[ regex( "(?i:Groups)" ) ]
374
+ Groups ,
319
375
#[ regex( "(?i:Having)" ) ]
320
376
Having ,
321
377
#[ regex( "(?i:In)" ) ]
@@ -328,6 +384,8 @@ pub enum Token<'input> {
328
384
Intersect ,
329
385
#[ regex( "(?i:Join)" ) ]
330
386
Join ,
387
+ #[ regex( "(?i:Keep)" ) ]
388
+ Keep ,
331
389
#[ regex( "(?i:Last)" ) ]
332
390
Last ,
333
391
#[ regex( "(?i:Lateral)" ) ]
@@ -364,6 +422,8 @@ pub enum Token<'input> {
364
422
Order ,
365
423
#[ regex( "(?i:Outer)" ) ]
366
424
Outer ,
425
+ #[ regex( "(?i:Path)" ) ]
426
+ Path ,
367
427
#[ regex( "(?i:Partial)" ) ]
368
428
Partial ,
369
429
#[ regex( "(?i:Per)" ) ]
@@ -374,6 +434,8 @@ pub enum Token<'input> {
374
434
Preserve ,
375
435
#[ regex( "(?i:Recursive)" ) ]
376
436
Recursive ,
437
+ #[ regex( "(?i:REPEATABLE)" ) ]
438
+ Repeatable ,
377
439
#[ regex( "(?i:Right)" ) ]
378
440
Right ,
379
441
#[ regex( "(?i:Row)" ) ]
@@ -577,19 +639,22 @@ impl Token<'_> {
577
639
| Token :: Date
578
640
| Token :: Desc
579
641
| Token :: Distinct
642
+ | Token :: Element
580
643
| Token :: Escape
581
644
| Token :: Except
582
645
| Token :: First
583
646
| Token :: For
584
647
| Token :: Full
585
648
| Token :: From
586
649
| Token :: Group
650
+ | Token :: Groups
587
651
| Token :: Having
588
652
| Token :: In
589
653
| Token :: Inner
590
654
| Token :: Is
591
655
| Token :: Intersect
592
656
| Token :: Join
657
+ | Token :: Keep
593
658
| Token :: Last
594
659
| Token :: Lateral
595
660
| Token :: Left
@@ -606,11 +671,13 @@ impl Token<'_> {
606
671
| Token :: Or
607
672
| Token :: Order
608
673
| Token :: Outer
674
+ | Token :: Path
609
675
| Token :: Partial
610
676
| Token :: Pivot
611
677
| Token :: Preserve
612
678
| Token :: Right
613
679
| Token :: Recursive
680
+ | Token :: Repeatable
614
681
| Token :: Search
615
682
| Token :: Select
616
683
| Token :: Table
@@ -661,13 +728,41 @@ impl fmt::Display for Token<'_> {
661
728
Token :: Minus => write ! ( f, "-" ) ,
662
729
Token :: Plus => write ! ( f, "+" ) ,
663
730
Token :: Star => write ! ( f, "*" ) ,
664
- Token :: SqlParameter => write ! ( f, "?" ) ,
665
731
Token :: Percent => write ! ( f, "%" ) ,
666
732
Token :: Slash => write ! ( f, "/" ) ,
667
733
Token :: Caret => write ! ( f, "^" ) ,
668
734
Token :: Period => write ! ( f, "." ) ,
669
- Token :: Tilde => write ! ( f, "~" ) ,
670
735
Token :: DblPipe => write ! ( f, "||" ) ,
736
+ Token :: Pipe => write ! ( f, "|" ) ,
737
+ Token :: Ampersand => write ! ( f, "&" ) ,
738
+ Token :: Bang => write ! ( f, "!" ) ,
739
+ Token :: QuestionMark => write ! ( f, "?" ) ,
740
+ // graph symbols
741
+ Token :: PipePlusPipe => write ! ( f, "|+|" ) ,
742
+ Token :: LeftArrow => write ! ( f, "<-" ) ,
743
+ Token :: Tilde => write ! ( f, "~" ) ,
744
+ Token :: RightArrow => write ! ( f, "->" ) ,
745
+ Token :: LeftArrowTilde => write ! ( f, "<~" ) ,
746
+ Token :: TildeRightArrow => write ! ( f, "~>" ) ,
747
+ Token :: LeftArrowBracket => write ! ( f, "<-[" ) ,
748
+ Token :: RightBracketMinus => write ! ( f, "]-" ) ,
749
+ Token :: TildeLeftBracket => write ! ( f, "~[" ) ,
750
+ Token :: RightBracketTilde => write ! ( f, "]~" ) ,
751
+ Token :: MinusLeftBracket => write ! ( f, "-[" ) ,
752
+ Token :: BracketRightArrow => write ! ( f, "]->" ) ,
753
+ Token :: LeftArrowTildeBracket => write ! ( f, "<~[" ) ,
754
+ Token :: BracketTildeRightArrow => write ! ( f, "]~>" ) ,
755
+ Token :: LeftMinusRight => write ! ( f, "<->" ) ,
756
+ Token :: LeftArrowSlash => write ! ( f, "<-/" ) ,
757
+ Token :: RightSlashMinus => write ! ( f, "/-" ) ,
758
+ Token :: TildeLeftSlash => write ! ( f, "~/" ) ,
759
+ Token :: RightSlashTilde => write ! ( f, "/~" ) ,
760
+ Token :: MinusLeftSlash => write ! ( f, "-/" ) ,
761
+ Token :: SlashRightArrow => write ! ( f, "/->" ) ,
762
+ Token :: LeftArrowTildeSlash => write ! ( f, "<~/" ) ,
763
+ Token :: SlashTildeRightArrow => write ! ( f, "/~>" ) ,
764
+
765
+ // other
671
766
Token :: UnquotedIdent ( id) => write ! ( f, "<{id}:UNQUOTED_IDENT>" ) ,
672
767
Token :: QuotedIdent ( id) => write ! ( f, "<{id}:QUOTED_IDENT>" ) ,
673
768
Token :: UnquotedAtIdentifier ( id) => write ! ( f, "<{id}:UNQUOTED_ATIDENT>" ) ,
@@ -679,7 +774,7 @@ impl fmt::Display for Token<'_> {
679
774
Token :: EmbeddedDocQuote => write ! ( f, "<DOC>" ) ,
680
775
Token :: EmbeddedDoc ( txt) => write ! ( f, "<```{txt}```:DOC>" ) ,
681
776
Token :: EmptyEmbeddedDocQuote => write ! ( f, "<``:DOC>" ) ,
682
-
777
+ // keywords
683
778
_ => {
684
779
write ! ( f, "{}" , format!( "{self:?}" ) . to_uppercase( ) )
685
780
}
0 commit comments