@@ -262,8 +262,6 @@ pub enum Token<'input> {
262
262
EmbeddedDoc ( & ' input str ) ,
263
263
264
264
// Keywords
265
- #[ regex( "(?i:Acyclic)" ) ]
266
- Acyclic ,
267
265
#[ regex( "(?i:All)" ) ]
268
266
All ,
269
267
#[ regex( "(?i:Asc)" ) ]
@@ -282,6 +280,8 @@ pub enum Token<'input> {
282
280
By ,
283
281
#[ regex( "(?i:Case)" ) ]
284
282
Case ,
283
+ #[ regex( "(?i:Columns)" ) ]
284
+ Columns ,
285
285
#[ regex( "(?i:Cross)" ) ]
286
286
Cross ,
287
287
#[ regex( "(?i:Cycle)" ) ]
@@ -302,6 +302,8 @@ pub enum Token<'input> {
302
302
Except ,
303
303
#[ regex( "(?i:Exclude)" ) ]
304
304
Exclude ,
305
+ #[ regex( "(?i:Export)" ) ]
306
+ Export ,
305
307
#[ regex( "(?i:False)" ) ]
306
308
False ,
307
309
#[ regex( "(?i:First)" ) ]
@@ -342,6 +344,8 @@ pub enum Token<'input> {
342
344
Missing ,
343
345
#[ regex( "(?i:Natural)" ) ]
344
346
Natural ,
347
+ #[ regex( "(?i:No)" ) ]
348
+ No ,
345
349
#[ regex( "(?i:Not)" ) ]
346
350
Not ,
347
351
#[ regex( "(?i:Null)" ) ]
@@ -352,6 +356,8 @@ pub enum Token<'input> {
352
356
Offset ,
353
357
#[ regex( "(?i:On)" ) ]
354
358
On ,
359
+ #[ regex( "(?i:One)" ) ]
360
+ One ,
355
361
#[ regex( "(?i:Or)" ) ]
356
362
Or ,
357
363
#[ regex( "(?i:Order)" ) ]
@@ -360,14 +366,18 @@ pub enum Token<'input> {
360
366
Outer ,
361
367
#[ regex( "(?i:Partial)" ) ]
362
368
Partial ,
369
+ #[ regex( "(?i:Per)" ) ]
370
+ Per ,
363
371
#[ regex( "(?i:Pivot)" ) ]
364
372
Pivot ,
365
373
#[ regex( "(?i:Preserve)" ) ]
366
374
Preserve ,
367
- #[ regex( "(?i:Right)" ) ]
368
- Right ,
369
375
#[ regex( "(?i:Recursive)" ) ]
370
376
Recursive ,
377
+ #[ regex( "(?i:Right)" ) ]
378
+ Right ,
379
+ #[ regex( "(?i:Row)" ) ]
380
+ Row ,
371
381
#[ regex( "(?i:Select)" ) ]
372
382
Select ,
373
383
#[ regex( "(?i:Search)" ) ]
@@ -380,12 +390,8 @@ pub enum Token<'input> {
380
390
Timestamp ,
381
391
#[ regex( "(?i:Simple)" ) ]
382
392
Simple ,
383
- #[ regex( "(?i:Shortest)" ) ]
384
- Shortest ,
385
393
#[ regex( "(?i:Then)" ) ]
386
394
Then ,
387
- #[ regex( "(?i:Trail)" ) ]
388
- Trail ,
389
395
#[ regex( "(?i:True)" ) ]
390
396
True ,
391
397
#[ regex( "(?i:Union)" ) ]
@@ -408,21 +414,151 @@ pub enum Token<'input> {
408
414
Without ,
409
415
#[ regex( "(?i:Zone)" ) ]
410
416
Zone ,
417
+
418
+ // Graph Keywords; reserved
419
+ #[ regex( "(?i:ALL_DIFFERENT)" ) ]
420
+ AllDifferent ,
421
+ #[ regex( "(?i:BINDING_COUNT)" ) ]
422
+ BindingCount ,
423
+ #[ regex( "(?i:ELEMENT_ID)" ) ]
424
+ ElementId ,
425
+ #[ regex( "(?i:ELEMENT_NUMBER)" ) ]
426
+ ElementNumber ,
427
+ #[ regex( "(?i:GRAPH)" ) ]
428
+ Graph ,
429
+ #[ regex( "(?i:GRAPH_TABLE)" ) ]
430
+ GraphTable ,
431
+ #[ regex( "(?i:MATCHNUM)" ) ]
432
+ MatchNum ,
433
+ #[ regex( "(?i:PATH_LENGTH)" ) ]
434
+ PathLength ,
435
+ #[ regex( "(?i:PATH_NAME)" ) ]
436
+ PathName ,
437
+ #[ regex( "(?i:PROPERTY_EXISTS)" ) ]
438
+ PropertyExists ,
439
+ #[ regex( "(?i:SAME)" ) ]
440
+ Same ,
441
+
442
+ // Graph Keywords; non-reserved
443
+ #[ regex( "(?i:ACYCLIC)" ) ]
444
+ Acyclic ,
445
+ #[ regex( "(?i:BINDINGS)" ) ]
446
+ Bindings ,
447
+ #[ regex( "(?i:BOUND)" ) ]
448
+ Bound ,
449
+ #[ regex( "(?i:DESTINATION)" ) ]
450
+ Destination ,
451
+ #[ regex( "(?i:DIFFERENT)" ) ]
452
+ Different ,
453
+ #[ regex( "(?i:DIRECTED)" ) ]
454
+ Directed ,
455
+ #[ regex( "(?i:EDGE)" ) ]
456
+ Edge ,
457
+ #[ regex( "(?i:EDGES)" ) ]
458
+ Edges ,
459
+ #[ regex( "(?i:ELEMENTS)" ) ]
460
+ Elements ,
461
+ #[ regex( "(?i:LABEL)" ) ]
462
+ Label ,
463
+ #[ regex( "(?i:LABELED)" ) ]
464
+ Labeled ,
465
+ #[ regex( "(?i:NODE)" ) ]
466
+ Node ,
467
+ #[ regex( "(?i:PATHS)" ) ]
468
+ Paths ,
469
+ #[ regex( "(?i:PROPERTIES)" ) ]
470
+ Properties ,
471
+ #[ regex( "(?i:PROPERTY)" ) ]
472
+ Property ,
473
+ #[ regex( "(?i:PROPERTY_GRAPH_CATALOG)" ) ]
474
+ PropertyGraphCatalog ,
475
+ #[ regex( "(?i:PROPERTY_GRAPH_NAME)" ) ]
476
+ PropertyGraphName ,
477
+ #[ regex( "(?i:PROPERTY_GRAPH_SCHEMA)" ) ]
478
+ PropertyGraphSchema ,
479
+ #[ regex( "(?i:RELATIONSHIP)" ) ]
480
+ Relationship ,
481
+ #[ regex( "(?i:RELATIONSHIPS)" ) ]
482
+ Relationships ,
483
+ #[ regex( "(?i:SHORTEST)" ) ]
484
+ Shortest ,
485
+ #[ regex( "(?i:SINGLETONS)" ) ]
486
+ Singletons ,
487
+ #[ regex( "(?i:STEP)" ) ]
488
+ Step ,
489
+ #[ regex( "(?i:TABLES)" ) ]
490
+ Tables ,
491
+ #[ regex( "(?i:TRAIL)" ) ]
492
+ Trail ,
493
+ #[ regex( "(?i:VERTEX)" ) ]
494
+ Vertex ,
495
+ #[ regex( "(?i:WALK)" ) ]
496
+ Walk ,
411
497
}
412
498
413
499
impl Token < ' _ > {
500
+ #[ inline]
414
501
pub fn is_var_non_reserved ( & self ) -> bool {
502
+ matches ! ( self , Token :: Any | Token :: Simple ) || self . is_graph_non_reserved ( )
503
+ }
504
+
505
+ #[ inline]
506
+ pub fn is_fn_non_reserved ( & self ) -> bool {
507
+ matches ! ( self , Token :: Any | Token :: Simple ) || self . is_graph_non_reserved ( )
508
+ }
509
+
510
+ #[ inline]
511
+ pub fn is_graph_reserved ( & self ) -> bool {
415
512
matches ! (
416
513
self ,
417
- Token :: Acyclic | Token :: Any | Token :: Simple | Token :: Shortest | Token :: Trail
514
+ Token :: AllDifferent
515
+ | Token :: BindingCount
516
+ | Token :: ElementId
517
+ | Token :: ElementNumber
518
+ | Token :: Graph
519
+ | Token :: GraphTable
520
+ | Token :: MatchNum
521
+ | Token :: PathLength
522
+ | Token :: PathName
523
+ | Token :: PropertyExists
524
+ | Token :: Same
418
525
)
419
526
}
420
- pub fn is_fn_non_reserved ( & self ) -> bool {
527
+
528
+ #[ inline]
529
+ pub fn is_graph_non_reserved ( & self ) -> bool {
421
530
matches ! (
422
531
self ,
423
- Token :: Acyclic | Token :: Any | Token :: Simple | Token :: Shortest | Token :: Trail
532
+ Token :: Acyclic
533
+ | Token :: Bindings
534
+ | Token :: Bound
535
+ | Token :: Destination
536
+ | Token :: Different
537
+ | Token :: Directed
538
+ | Token :: Edge
539
+ | Token :: Edges
540
+ | Token :: Elements
541
+ | Token :: Label
542
+ | Token :: Labeled
543
+ | Token :: Node
544
+ | Token :: Paths
545
+ | Token :: Properties
546
+ | Token :: Property
547
+ | Token :: PropertyGraphCatalog
548
+ | Token :: PropertyGraphName
549
+ | Token :: PropertyGraphSchema
550
+ | Token :: Relationship
551
+ | Token :: Relationships
552
+ | Token :: Shortest
553
+ | Token :: Singletons
554
+ | Token :: Step
555
+ | Token :: Tables
556
+ | Token :: Trail
557
+ | Token :: Vertex
558
+ | Token :: Walk
424
559
)
425
560
}
561
+
426
562
pub fn is_keyword ( & self ) -> bool {
427
563
matches ! (
428
564
self ,
@@ -491,7 +627,8 @@ impl Token<'_> {
491
627
| Token :: Values
492
628
| Token :: Where
493
629
| Token :: With
494
- )
630
+ ) || self . is_graph_reserved ( )
631
+ || self . is_graph_non_reserved ( )
495
632
}
496
633
}
497
634
@@ -543,79 +680,7 @@ impl fmt::Display for Token<'_> {
543
680
Token :: EmbeddedDoc ( txt) => write ! ( f, "<```{txt}```:DOC>" ) ,
544
681
Token :: EmptyEmbeddedDocQuote => write ! ( f, "<``:DOC>" ) ,
545
682
546
- Token :: Acyclic
547
- | Token :: All
548
- | Token :: Asc
549
- | Token :: And
550
- | Token :: Any
551
- | Token :: As
552
- | Token :: At
553
- | Token :: Between
554
- | Token :: By
555
- | Token :: Case
556
- | Token :: Cross
557
- | Token :: Cycle
558
- | Token :: Date
559
- | Token :: Desc
560
- | Token :: Distinct
561
- | Token :: Else
562
- | Token :: End
563
- | Token :: Escape
564
- | Token :: Except
565
- | Token :: Exclude
566
- | Token :: False
567
- | Token :: First
568
- | Token :: For
569
- | Token :: Full
570
- | Token :: From
571
- | Token :: Group
572
- | Token :: Having
573
- | Token :: In
574
- | Token :: Inner
575
- | Token :: Is
576
- | Token :: Intersect
577
- | Token :: Join
578
- | Token :: Last
579
- | Token :: Lateral
580
- | Token :: Left
581
- | Token :: Like
582
- | Token :: Limit
583
- | Token :: Match
584
- | Token :: Missing
585
- | Token :: Natural
586
- | Token :: Not
587
- | Token :: Null
588
- | Token :: Nulls
589
- | Token :: Offset
590
- | Token :: On
591
- | Token :: Or
592
- | Token :: Order
593
- | Token :: Outer
594
- | Token :: Partial
595
- | Token :: Pivot
596
- | Token :: Preserve
597
- | Token :: Right
598
- | Token :: Recursive
599
- | Token :: Search
600
- | Token :: Select
601
- | Token :: Table
602
- | Token :: Time
603
- | Token :: Timestamp
604
- | Token :: Simple
605
- | Token :: Shortest
606
- | Token :: Then
607
- | Token :: Trail
608
- | Token :: True
609
- | Token :: Union
610
- | Token :: Unpivot
611
- | Token :: Using
612
- | Token :: Value
613
- | Token :: Values
614
- | Token :: When
615
- | Token :: Where
616
- | Token :: With
617
- | Token :: Without
618
- | Token :: Zone => {
683
+ _ => {
619
684
write ! ( f, "{}" , format!( "{self:?}" ) . to_uppercase( ) )
620
685
}
621
686
}
0 commit comments