1use std::iter::FromIterator;
2
3#[derive(
4 Debug,
5 PartialEq,
6 Eq,
7 Clone,
8 Copy,
9 strum_macros::IntoStaticStr,
10 strum_macros::EnumString,
11 Hash,
12 PartialOrd,
13 Ord,
14 Default,
15)]
16#[strum(serialize_all = "snake_case")]
17pub enum SyntaxKind {
18 Unparsable,
19 File,
20 ColumnReference,
21 ObjectReference,
22 Expression,
23 WildcardIdentifier,
24 Function,
25 FunctionContents,
26 HavingClause,
27 PathSegment,
28 LimitClause,
29 CubeRollupClause,
30 GroupingSetsClause,
31 GroupingExpressionList,
32 SetClause,
33 FetchClause,
34 FunctionDefinition,
35 AlterSequenceOptionsSegment,
36 RoleReference,
37 TablespaceReference,
38 ExtensionReference,
39 TagReference,
40 ColumnDefinition,
41 ColumnConstraintSegment,
42 CommentClause,
43 TableEndClause,
44 MergeMatch,
45 MergeWhenNotMatchedClause,
46 MergeInsertClause,
47 MergeUpdateClause,
48 MergeDeleteClause,
49 MergeTreeOrderByClause,
50 SetClauseList,
51 TableReference,
52 GroupbyClause,
53 FrameClause,
54 WithCompoundStatement,
55 CommonTableExpression,
56 CTEColumnList,
57 ReferencedColumnList,
58 TriggerReference,
59 TableConstraint,
60 JoinOnCondition,
61 DatabaseReference,
62 CollationReference,
63 OverClause,
64 NamedWindow,
65 WindowSpecification,
66 PartitionbyClause,
67 JoinClause,
68 DropTriggerStatement,
69 SampleExpression,
70 TableExpression,
71 CreateTriggerStatement,
72 DropModelStatement,
73 DescribeStatement,
74 UseStatement,
75 ExplainStatement,
76 CreateSequenceStatement,
77 CreateSequenceOptionsSegment,
78 AlterSequenceStatement,
79 DropSequenceStatement,
80 DropCastStatement,
81 CreateFunctionStatement,
82 DropFunctionStatement,
83 CreateModelStatement,
84 CreateViewStatement,
85 DeleteStatement,
86 UpdateStatement,
87 CreateCastStatement,
88 CreateRoleStatement,
89 DropRoleStatement,
90 AlterTableStatement,
91 CreateSchemaStatement,
92 SetSchemaStatement,
93 DropSchemaStatement,
94 DropTypeStatement,
95 CreateDatabaseStatement,
96 DropDatabaseStatement,
97 FunctionParameterList,
98 CreateIndexStatement,
99 DropIndexStatement,
100 CreateTableStatement,
101 AccessStatement,
102 InsertStatement,
103 TransactionStatement,
104 DropTableStatement,
105 DropViewStatement,
106 CreateUserStatement,
107 DropUserStatement,
108 ArrayExpression,
109 LocalAlias,
110 MergeStatement,
111 IndexColumnDefinition,
112 AggregateOrderByClause,
113 FunctionName,
114 CaseExpression,
115 WhenClause,
116 ElseClause,
117 PreWhereClause,
118 WhereClause,
119 SetOperator,
120 ValuesClause,
121 EmptyStructLiteral,
122 ObjectLiteral,
123 ObjectLiteralElement,
124 TimeZoneGrammar,
125 BracketedArguments,
126 DataType,
127 AliasExpression,
128 ArrayAccessor,
129 ArrayLiteral,
130 TypedArrayLiteral,
131 StructType,
132 StructLiteral,
133 TypedStructLiteral,
134 IntervalExpression,
135 ArrayType,
136 SizedArrayType,
137 SelectStatement,
138 OverlapsClause,
139 SelectClause,
140 Statement,
141 WithNoSchemaBindingClause,
142 WithDataClause,
143 SetExpression,
144 FromClause,
145 EmptyStructLiteralBrackets,
146 WildcardExpression,
147 OrderbyClause,
148 TruncateStatement,
149 FromExpression,
150 FromExpressionElement,
151 SelectClauseModifier,
152 NamedWindowExpression,
153 SelectClauseElement,
154 QualifyClause,
155 MultiStatementSegment,
156 AssertStatement,
157 ForInStatements,
158 ForInStatement,
159 RepeatStatements,
160 RepeatStatement,
161 IfStatements,
162 IfStatement,
163 LoopStatements,
164 LoopStatement,
165 WhileStatements,
166 WhileStatement,
167 DatePartWeek,
168 SelectExceptClause,
169 SelectReplaceClause,
170 StructTypeSchema,
171 Tuple,
172 NamedArgument,
173 DeclareSegment,
174 SetSegment,
175 PartitionBySegment,
176 ClusterBySegment,
177 OptionsSegment,
178 CreateExternalTableStatement,
179 AlterViewStatement,
180 CreateMaterializedViewStatement,
181 AlterMaterializedViewSetOptionsStatement,
182 DropMaterializedViewStatement,
183 ParameterizedExpression,
184 PivotForClause,
185 FromPivotExpression,
186 UnpivotClause,
187 FromUnpivotExpression,
188 NotMatchedByTargetClause,
189 MergeWhenMatchedClause,
190 ProcedureName,
191 ExportStatement,
192 ProcedureParameterList,
193 ProcedureStatements,
194 CallStatement,
195 ReturnStatement,
196 BreakStatement,
197 LeaveStatement,
198 ContinueStatement,
199 RaiseStatement,
200 PsqlVariable,
201 ComparisonOperator,
202 DatetimeTypeIdentifier,
203 DatetimeLiteral,
204 IndexAccessMethod,
205 OperatorClassReference,
206 DefinitionParameter,
207 DefinitionParameters,
208 RelationOption,
209 RelationOptions,
210 AlterFunctionActionSegment,
211 AlterProcedureActionSegment,
212 AlterProcedureStatement,
213 DropProcedureStatement,
214 WktGeometryType,
215 IntoClause,
216 ForClause,
217 AlterRoleStatement,
218 ExplainOption,
219 CreateTableAsStatement,
220 AlterPublicationStatement,
221 CreatePublicationStatement,
222 PublicationObjects,
223 PublicationTable,
224 PublicationReference,
225 DropExtensionStatement,
226 CreateExtensionStatement,
227 VersionIdentifier,
228 AlterTableActionSegment,
229 DropPublicationStatement,
230 AlterMaterializedViewStatement,
231 AlterMaterializedViewActionSegment,
232 RefreshMaterializedViewStatement,
233 WithCheckOption,
234 AlterPolicyStatement,
235 AlterDatabaseStatement,
236 VacuumStatement,
237 LikeOptionSegment,
238 PartitionBoundSpec,
239 IndexParameters,
240 ReferentialActionSegment,
241 IndexElement,
242 ExclusionConstraintElement,
243 AlterDefaultPrivilegesStatement,
244 AlterDefaultPrivilegesObjectPrivilege,
245 AlterDefaultPrivilegesSchemaObject,
246 AlterDefaultPrivilegesToFromRoles,
247 AlterDefaultPrivilegesGrant,
248 DropOwnedStatement,
249 ReassignOwnedStatement,
250 IndexElementOptions,
251 AlterDefaultPrivilegesRevoke,
252 AlterIndexStatement,
253 ReindexStatementSegment,
254 AnalyzeStatement,
255 AlterTrigger,
256 OperationClassReference,
257 ConflictAction,
258 ConflictTarget,
259 SetStatement,
260 CreatePolicyStatement,
261 CreateDomainStatement,
262 AlterDomainStatement,
263 DropDomainStatement,
264 DropPolicyStatement,
265 LoadStatement,
266 ResetStatement,
267 ListenStatement,
268 NotifyStatement,
269 UnlistenStatement,
270 ClusterStatement,
271 LanguageClause,
272 DoStatement,
273 CreateUserMappingStatement,
274 ImportForeignSchemaStatement,
275 CreateServerStatement,
276 CreateCollationStatement,
277 AlterTypeStatement,
278 CreateTypeStatement,
279 LockTableStatement,
280 CopyStatement,
281 DiscardStatement,
282 AlterSchemaStatement,
283 ServerReference,
284 ArrayJoinClause,
285 TableEngineFunction,
286 OnClusterClause,
287 Engine,
288 EngineFunction,
289 DatabaseEngine,
290 ColumnTtlSegment,
291 TableTtlSegment,
292 DropDictionaryStatement,
293 DropQuotaStatement,
294 DropSettingProfileStatement,
295 SystemMergesSegment,
296 SystemTtlMergesSegment,
297 SystemMovesSegment,
298 SystemReplicaSegment,
299 SystemFilesystemSegment,
300 SystemReplicatedSegment,
301 SystemReplicationSegment,
302 SystemFetchesSegment,
303 SystemDistributedSegment,
304 SystemModelSegment,
305 SystemFileSegment,
306 SystemUnfreezeSegment,
307 SystemStatement,
308 ConnectbyClause,
309 CallSegment,
310 WithingroupClause,
311 PatternExpression,
312 MatchRecognizeClause,
313 ChangesClause,
314 MatchConditionClause,
315 FromAtExpression,
316 FromBeforeExpression,
317 SnowflakeKeywordExpression,
318 SemiStructuredExpression,
319 SelectExcludeClause,
320 SelectRenameClause,
321 AlterTableTableColumnAction,
322 AlterTableClusteringAction,
323 AlterTableConstraintAction,
324 AlterWarehouseStatement,
325 AlterShareStatement,
326 AlterStorageIntegrationStatement,
327 AlterExternalTableStatement,
328 CommentEqualsClause,
329 TagBracketedEquals,
330 TagEquals,
331 CreateCloneStatement,
332 CreateDatabaseFromShareStatement,
333 CreateProcedureStatement,
334 ScriptingBlockStatement,
335 ScriptingLetStatement,
336 AlterFunctionStatement,
337 CreateExternalFunctionStatement,
338 WarehouseObjectProperties,
339 ConstraintPropertiesSegment,
340 CopyOptions,
341 SchemaObjectProperties,
342 CreateTaskStatement,
343 SnowflakeTaskExpressionSegment,
344 CreateStatement,
345 CreateFileFormatSegment,
346 AlterFileFormatSegment,
347 CsvFileFormatTypeParameters,
348 JsonFileFormatTypeParameters,
349 AvroFileFormatTypeParameters,
350 OrcFileFormatTypeParameters,
351 ParquetFileFormatTypeParameters,
352 XmlFileFormatTypeParameters,
353 AlterPipeSegment,
354 FileFormatSegment,
355 FormatTypeOptions,
356 CopyIntoLocationStatement,
357 CopyIntoTableStatement,
358 StorageLocation,
359 StageParameters,
360 S3ExternalStageParameters,
361 GcsExternalStageParameters,
362 AzureBlobStorageExternalStageParameters,
363 CreateStageStatement,
364 AlterStageStatement,
365 CreateStreamStatement,
366 AlterStreamStatement,
367 ShowStatement,
368 AlterUserStatement,
369 AlterSessionStatement,
370 AlterSessionSetStatement,
371 AlterSessionUnsetClause,
372 AlterTaskStatement,
373 AlterTaskSpecialSetClause,
374 AlterTaskSetClause,
375 AlterTaskUnsetClause,
376 ExecuteTaskClause,
377 UndropStatement,
378 CommentStatement,
379 DropExternalTableStatement,
380 ListStatement,
381 GetStatement,
382 PutStatement,
383 RemoveStatement,
384 CastExpression,
385 DropObjectStatement,
386 UnsetStatement,
387 SqlConfOption,
388 BinaryOperator,
389 PrimitiveType,
390 CreateWidgetStatement,
391 ReplaceTableStatement,
392 RemoveWidgetStatement,
393 UseDatabaseStatement,
394 InsertOverwriteDirectoryStatement,
395 InsertOverwriteDirectoryHiveFmtStatement,
396 LoadDataStatement,
397 ClusterByClause,
398 DistributeByClause,
399 HintFunction,
400 SelectHint,
401 WithCubeRollupClause,
402 SortByClause,
403 LateralViewClause,
404 PivotClause,
405 TransformClause,
406 AddFileStatement,
407 AddJarStatement,
408 AnalyzeTableStatement,
409 CacheTable,
410 ClearCache,
411 ListFileStatement,
412 ListJarStatement,
413 RefreshStatement,
414 UncacheTable,
415 FileReference,
416 PropertyNameIdentifier,
417 GeneratedColumnDefinition,
418 IntervalLiteral,
419 DescribeHistoryStatement,
420 DescribeDetailStatement,
421 GenerateManifestFileStatement,
422 ConvertToDeltaStatement,
423 RestoreTableStatement,
424 ConstraintStatement,
425 ApplyChangesIntoStatement,
426 UsingClause,
427 DataSourceFormat,
428 IcebergTransformation,
429 MsckRepairTableStatement,
430 RowFormatClause,
431 SkewedByClause,
432 Bracketed,
433 NumericLiteral,
434 Keyword,
435 EndOfFile,
436 Whitespace,
437 Newline,
438 NakedIdentifier,
439 Unlexable,
440 StartBracket,
441 EndBracket,
442 InlineComment,
443 Identifier,
444 Raw,
445 QuotedIdentifier,
446 Star,
447 Dot,
448 Comma,
449 Comment,
450 EmitsSegment,
451 Literal,
452 BareFunction,
453 NullLiteral,
454 BooleanLiteral,
455 BlockComment,
456 QuotedLiteral,
457 DoubleDivide,
458 Meta,
459 #[default]
460 Colon,
461 StatementTerminator,
462 StartSquareBracket,
463 EndSquareBracket,
464 StartCurlyBracket,
465 Tilde,
466 CastingOperator,
467 RawComparisonOperator,
468 DatePart,
469 Pipe,
470 SignIndicator,
471 LikeOperator,
472 Word,
473 DoubleQuote,
474 SingleQuote,
475 Dash,
476 Semicolon,
477 BackQuote,
478 DollarQuote,
479 Not,
480 Ampersand,
481 Question,
482 Percent,
483 Divide,
484 Minus,
485 Plus,
486 Caret,
487 VerticalBar,
488 EndCurlyBracket,
489 FunctionNameIdentifier,
490 Dedent,
491 Indent,
492 Implicit,
493 AtSignLiteral,
494 TsqlVariable,
495 QuestionMark,
496 RightArrow,
497 UdfBody,
498 StartAngleBracket,
499 EndAngleBracket,
500 Lambda,
501 NakedIdentifierAll,
502 ProcedureNameIdentifier,
503 Parameter,
504 DateConstructorLiteral,
505 ProcedureOption,
506 ExportOption,
507 PropertiesNakedIdentifier,
508 Symbol,
509 DataTypeIdentifier,
510 Placeholder,
511 ExecuteScriptStatement,
512 AssignmentOperator,
513 Batch,
514 PivotColumnReference,
515 IntoTableClause,
516 PasswordAuth,
517 ExecuteAsClause,
518 ExecuteImmediateClause,
519 UnicodeSingleQuote,
520 EscapedSingleQuote,
521 UnicodeDoubleQuote,
522 JsonOperator,
523 At,
524 BitStringLiteral,
525 DollarNumericLiteral,
526 WidgetNameIdentifier,
527 FileKeyword,
528 SemiStructuredElement,
529 BytesDoubleQuote,
530 BytesSingleQuote,
531 FileFormat,
532 FileType,
533 StartHint,
534 EndHint,
535 FunctionAssigner,
536 UnquotedFilePath,
537 Dollar,
538 SystemFunctionName,
539 IntegerLiteral,
540 StageEncryptionOption,
541 BucketPath,
542 QuotedStar,
543 StagePath,
544 FileLiteral,
545 BytesQuotedLiteral,
546 SignedQuotedLiteral,
547 ParameterAssigner,
548 ColumnSelector,
549 DollarLiteral,
550 ExcludeBracketClose,
551 WalrusOperator,
552 WarehouseSize,
553 Variable,
554 ExcludeBracketOpen,
555 SymlinkFormatManifest,
556 StartExcludeBracket,
557 CompressionType,
558 CopyOnErrorOption,
559 ColumnIndexIdentifierSegment,
560 ScalingPolicy,
561 ValidationModeOption,
562 EndExcludeBracket,
563 IdentifierList,
564 TemplateLoop,
565 ColonDelimiter,
566 SqlcmdOperator,
567 Slice,
568 TableEndClauseSegment,
569 PragmaStatement,
570 PragmaReference,
571 Slash,
572 DataFormatSegment,
573 AuthorizationSegment,
574 ColumnAttributeSegment,
575 ShowModelStatement,
576 CreateExternalSchemaStatement,
577 CreateLibraryStatement,
578 UnloadStatement,
579 DeclareStatement,
580 FetchStatement,
581 CloseStatement,
582 CreateDatashareStatement,
583 DescDatashareStatement,
584 DropDatashareStatement,
585 ShowDatasharesStatement,
586 GrantDatashareStatement,
587 CreateRlsPolicyStatement,
588 ManageRlsPolicyStatement,
589 DropRlsPolicyStatement,
590 AnalyzeCompressionStatement,
591 PartitionedBySegment,
592 RowFormatDelimitedSegment,
593 ObjectUnpivoting,
594 ArrayUnnesting,
595 AlterGroup,
596 CreateGroup,
597 ListaggOverflowClauseSegment,
598 UnorderedSelectStatementSegment,
599 MapType,
600 MapTypeSchema,
601 PrepareStatement,
602 ExecuteStatement,
603 RenameTableStatement,
604 ActionParameter,
605 AggregateClause,
606 AggregateOrderBy,
607 AliasOperator,
608 AllowConnections,
609 AlterAccountStatement,
610 AlterAggregateStatement,
611 AlterBiCapacityStatement,
612 AlterCapacityStatement,
613 AlterCatalogStatement,
614 AlterDynamicTableStatement,
615 AlterEventStatement,
616 AlterExtensionStatement,
617 AlterExternalVolumeStatement,
618 AlterForeignTableActionSegment,
619 AlterForeignTableStatement,
620 AlterMaskingPolicy,
621 AlterMasterKeyStatement,
622 AlterNetworkPolicyStatement,
623 AlterOptionSegment,
624 AlterOrganizationStatement,
625 AlterPartitionFunctionStatement,
626 AlterPartitionSchemeStatement,
627 AlterPasswordPolicyStatement,
628 AlterProjectStatement,
629 AlterReservationStatement,
630 AlterResourceMonitorStatement,
631 AlterRowAccessPolicyStatement,
632 AlterSecurityPolicyStatement,
633 AlterStatisticsStatement,
634 AlterStreamlitStatement,
635 AlterSubscription,
636 AlterTableSwitchStatement,
637 AlterTagStatement,
638 AlterTextSearchConfigurationStatement,
639 AlterVolumeStatement,
640 ArnCatalogSchemaSegment,
641 ArrayTypeSchema,
642 AtSign,
643 AtomicBeginEndBlock,
644 Atsign,
645 AutoOption,
646 BackupStorageRedundancy,
647 BeginEndBlock,
648 BeginStatement,
649 BinaryLiteral,
650 BindVariable,
651 BitValueLiteral,
652 BracketedIndexColumnListGrammar,
653 BulkInsertStatement,
654 BulkInsertWithSegment,
655 ByteLengthLiteral,
656 CallOperator,
657 CatalogReference,
658 CharacteristicStatement,
659 CheckConstraintGrammar,
660 CheckTableStatement,
661 ChecksumTableStatement,
662 CloseCursorStatement,
663 ClusterbyClause,
664 Code,
665 CollationClause,
666 ColonLiteral,
667 ColonPrefix,
668 ColumnPathOperator,
669 ColumnPropertiesSegment,
670 ColumnTypeReference,
671 ColumnsExpression,
672 Command,
673 CompatibilityLevel,
674 CompositeValueExpansion,
675 ComputedColumnDefinition,
676 ConflictClause,
677 ConnectionConstraintGrammar,
678 ConnectionLimitSegment,
679 CopyFilesIntoLocationStatement,
680 CreateAggregateStatement,
681 CreateAssignmentStatement,
682 CreateAuthenticationPolicySegment,
683 CreateCapacityStatement,
684 CreateCatalogStatement,
685 CreateColumnstoreIndexStatement,
686 CreateCortexSearchServiceStatement,
687 CreateDatabaseRoleStatement,
688 CreateDatabaseScopedCredentialStatement,
689 CreateDatabaseWithOptions,
690 CreateEventStatement,
691 CreateEventTableStatement,
692 CreateExternalDataSourceStatement,
693 CreateExternalFileFormat,
694 CreateExternalVolumeStatement,
695 CreateForeignDataWrapper,
696 CreateForeignTableStatement,
697 CreateFulltextCatalogStatement,
698 CreateFulltextIndexStatement,
699 CreateLoginStatement,
700 CreateMasterKeyStatement,
701 CreateMaterializedViewAsReplicaOfStatement,
702 CreateOperatorStatement,
703 CreateOptionSegment,
704 CreatePartitionFunctionStatement,
705 CreatePartitionSchemeStatement,
706 CreatePasswordPolicyStatement,
707 CreateReservationStatement,
708 CreateResourceMonitorStatement,
709 CreateRowAccessPolicyStatement,
710 CreateSearchIndexStatement,
711 CreateSecurityPolicyStatement,
712 CreateServerRoleStatement,
713 CreateSnapshotTableStatement,
714 CreateSqlFunctionStatement,
715 CreateStatisticsStatement,
716 CreateStreamlitStatement,
717 CreateSubscription,
718 CreateSynonymStatement,
719 CreateTableAsSelectStatement,
720 CreateTableFunctionStatement,
721 CreateTableGraphStatement,
722 CreateTableUsingStatement,
723 CreateTextSearchConfigurationStatement,
724 CreateTrigger,
725 CreateVectorIndexStatement,
726 CreateVirtualTableStatement,
727 CreateVolumeStatement,
728 CursorDefinition,
729 CursorFetchSegment,
730 CursorOpenCloseSegment,
731 DataGovernancePolicyTagActionSegment,
732 DatabaseRoleReference,
733 DateFormat,
734 DeallocateCursorStatement,
735 DeallocateSegment,
736 DeallocateStatement,
737 DeclareOrReplaceVariableStatement,
738 DefaultCollate,
739 DefinerSegment,
740 DeleteTargetTable,
741 DelimiterStatement,
742 DisableTrigger,
743 DistributebyClause,
744 DoubleAmpersand,
745 DoubleAtSignLiteral,
746 DoubleVerticalBar,
747 DropAggregateStatement,
748 DropAssignmentStatement,
749 DropCapacityStatement,
750 DropCatalogStatement,
751 DropCollationStatement,
752 DropColumnClause,
753 DropDynamicTableSegment,
754 DropEventStatement,
755 DropExternalVolumeStatement,
756 DropForeignTableStatement,
757 DropIcebergTableStatement,
758 DropMasterKeyStatement,
759 DropModelstatement,
760 DropPasswordPolicyStatement,
761 DropReservationStatement,
762 DropResourceMonitorStatement,
763 DropRowAccessPolicyStatement,
764 DropSearchIndexStatement,
765 DropSecurityPolicy,
766 DropStatement,
767 DropStatisticsStatement,
768 DropSubscription,
769 DropSynonymStatement,
770 DropTableFunctionStatement,
771 DropTextSearchConfigurationStatement,
772 DropTrigger,
773 DropVectorIndexStatement,
774 DropVolumeStatement,
775 DynamicTableLagIntervalSegment,
776 DynamicTableOptions,
777 Edition,
778 EncryptedWithGrammar,
779 ExceptionBlockStatement,
780 ExceptionCode,
781 ExecuteArrow,
782 ExecuteImmediate,
783 ExecuteOption,
784 ExecuteSegment,
785 ExtendClause,
786 ExternalAccessIntegrationEquals,
787 ExternalFileDelimitedTextClause,
788 ExternalFileDelimitedTextFormatOptionsClause,
789 ExternalFileDeltaClause,
790 ExternalFileJsonClause,
791 ExternalFileOrcClause,
792 ExternalFileParquetClause,
793 ExternalFileRcClause,
794 ExternalLocation,
795 ExternalVolumeReference,
796 FatRightArrow,
797 FetchCursorStatement,
798 FileCompression,
799 FileEncoding,
800 FileSpec,
801 FileSpecFileGrowth,
802 FileSpecFileName,
803 FileSpecMaxSize,
804 FileSpecNewName,
805 FileSpecSize,
806 FileSpecWithoutBracket,
807 FilegroupClause,
808 FilegroupName,
809 FilestreamOnOptionStatement,
810 FlushStatement,
811 ForSystemTimeAsOfSegment,
812 FormatClause,
813 FromDatashareClause,
814 FromIntegrationClause,
815 FullTextSearchOperator,
816 FunctionOptionSegment,
817 FunctionParameterListWithComments,
818 GetDiagnosticsSegment,
819 GlobOperator,
820 GoStatement,
821 GotoStatement,
822 GrantToSegment,
823 GraphTableConstraint,
824 GroupAndOrderbyClause,
825 HashIdentifier,
826 HashPrefix,
827 HelpStatement,
828 HexadecimalLiteral,
829 IamRoleClause,
830 IcebergTableOptions,
831 IdentifierClauseSegment,
832 IdentityGrammar,
833 IfClause,
834 IfThenStatement,
835 IndexHintClause,
836 IndexOption,
837 IndexReference,
838 IndexType,
839 InitializeType,
840 InlineDollarSign,
841 InlinePathOperator,
842 InsertRowAlias,
843 IntoOutfileClause,
844 IsolationLevelClause,
845 IterateStatement,
846 JsonPath,
847 LabelSegment,
848 LambdaArrow,
849 LambdaFunction,
850 LeadingDot,
851 LimitClauseComponent,
852 ListComprehension,
853 ListaggOverflowClause,
854 LocalAliasSegment,
855 LogLevelEquals,
856 LogicalFileName,
857 LoginUserSegment,
858 MagicCellSegment,
859 MagicLine,
860 MagicSingleLine,
861 MagicStart,
862 MaskStatement,
863 MasterKeyEncryptionOption,
864 MatchCondition,
865 MaxDuration,
866 MaxLiteral,
867 MetaCommand,
868 MetaCommandQueryBuffer,
869 MetaCommandStatement,
870 MlTableExpression,
871 MsckTableStatement,
872 NotOperator,
873 NotebookStart,
874 ObevoAnnotation,
875 OffsetClause,
876 OnPartitionOrFilegroupStatement,
877 OnPartitionsClause,
878 OpenCursorStatement,
879 OpenSymmetricKeyStatement,
880 OpenjsonSegment,
881 OpenjsonWithClause,
882 OpenquerySegment,
883 OpenrowsetSegment,
884 OpenrowsetWithClause,
885 OpenxmlSegment,
886 Operator,
887 OptimizeTableStatement,
888 Option,
889 OptionClause,
890 OptionIndicator,
891 OutputClause,
892 ParameterDirection,
893 PartitionClause,
894 PartitionSchemeClause,
895 PartitionSchemeName,
896 PasswordPolicyOptions,
897 PasswordPolicyReference,
898 PeriodSegment,
899 PgTrgmOperator,
900 PgvectorOperator,
901 PipeOperator,
902 PipeOperatorClause,
903 PipeStatement,
904 PivotOperator,
905 PostTableExpression,
906 PostgisOperator,
907 PrepareSegment,
908 PrewhereClause,
909 PrintStatement,
910 ProcedureStatement,
911 PurgeBinaryLogsStatement,
912 QualifiedOperator,
913 QueryHintSegment,
914 QuestionLiteral,
915 RaiserrorStatement,
916 RawDoubleQuote,
917 RawQuotedLiteral,
918 RawSingleQuote,
919 ReconfigureStatement,
920 ReferencesConstraintGrammar,
921 RelationalIndexOptions,
922 RenameColumnClause,
923 RenameStatement,
924 RepairTableStatement,
925 ReplaceStatement,
926 ResetMasterStatement,
927 ResetSessionAuthorizationStatement,
928 ResignalSegment,
929 ResourceConstraint,
930 ResourceMonitorOptions,
931 ReturnSegment,
932 ReturningClause,
933 SchemaReference,
934 ScriptingDeclareStatement,
935 ScriptingIfStatement,
936 ScriptingRaiseStatement,
937 SearchOptimizationAction,
938 SecurityLabelStatement,
939 SelectVariableAssignment,
940 SequenceNextValue,
941 SequenceReference,
942 SerdeMethod,
943 ServiceObjective,
944 SetConstraintStatement,
945 SetContextInfoStatement,
946 SetLanguageStatement,
947 SetLocalVariableSegment,
948 SetNamesStatement,
949 SetOperatorClause,
950 SetSessionAuthorizationStatement,
951 SetSessionStatement,
952 SetTimezoneStatement,
953 SetTransactionStatement,
954 SetVariableStatement,
955 SettingsClause,
956 SimplifiedPivot,
957 SimplifiedUnpivot,
958 SingleQuoteWithN,
959 SizeLiteral,
960 SortbyClause,
961 SqlcmdCommandSegment,
962 SquareQuote,
963 StatisticsReference,
964 StoringSegment,
965 SubscriptionReference,
966 SynonymReference,
967 SystemVariable,
968 TableClausesSegment,
969 TableClusterByClause,
970 TableColumnCommentAction,
971 TableDistributionClause,
972 TableDistributionIndexClause,
973 TableIndexClause,
974 TableIndexSegment,
975 TableLocationClause,
976 TableOptionStatement,
977 TableSpecificationSegment,
978 TagStatement,
979 TemporalQuery,
980 TextimageOnOptionStatement,
981 ThrowStatement,
982 TraceLevelEquals,
983 TruncateTable,
984 TryCatch,
985 TupleTypeSchema,
986 UndropSchemaStatement,
987 UnpivotMultiColumn,
988 UnpivotOperator,
989 UnpivotSingleColumn,
990 UnquotedRelativeSqlFilePath,
991 UpdateStatisticsStatement,
992 UpsertClause,
993 UpsertClauseList,
994 UseCatalogStatement,
995 VolumeReference,
996 WaitforStatement,
997 WildcardExclude,
998 WildcardPatternMatching,
999 WildcardRename,
1000 WildcardReplace,
1001 WithCheckOptions,
1002 WithFill,
1003 WithRollupClause,
1004 WithinGroupClause,
1005 WithordinalityClause,
1006 OracleAtSign,
1008 OraclePowerOperator,
1009 OracleAssignmentOperator,
1010 HierarchicalQueryClause,
1011 PivotSegment,
1012 UnpivotSegment,
1013 TriggerCorrelationName,
1014 OracleBindVariable,
1015 AlterTableProperties,
1016 AlterTableColumnClauses,
1017 AlterTableConstraintClauses,
1018 IndexTypeReference,
1019 ExecuteFileStatement,
1020 SlashBufferExecutor,
1021 OracleBatch,
1022 OracleCommentStatement,
1023 OracleCreateProcedureStatement,
1024 OracleDropProcedureStatement,
1025 OracleDeclareSegment,
1026 OracleColumnTypeReference,
1027 OracleRowTypeReference,
1028 CollectionType,
1029 RecordType,
1030 RefCursorType,
1031 DeclareCursorVariable,
1032 OracleExecuteImmediateStatement,
1033 OracleBeginEndBlock,
1034 OracleCreateFunctionStatement,
1035 OracleAlterFunctionStatement,
1036 OracleCreateTypeStatement,
1037 OracleTypeReference,
1038 OracleCreateTypeBodyStatement,
1039 OracleCreatePackageStatement,
1040 OraclePackageReference,
1041 OracleAlterPackageStatement,
1042 OracleDropPackageStatement,
1043 OracleCreateTriggerStatement,
1044 DmlEventClause,
1045 OracleReferencingClause,
1046 CompoundTriggerStatement,
1047 TimingPointSection,
1048 OracleAlterTriggerStatement,
1049 AssignmentSegmentStatement,
1050 OracleIfThenStatement,
1051 OracleIfClause,
1052 OracleCaseExpression,
1053 OracleWhenClause,
1054 OracleElseClause,
1055 OracleNullStatement,
1056 ForLoopStatement,
1057 WhileLoopStatement,
1058 OracleLoopStatement,
1059 ForallStatement,
1060 OracleOpenStatement,
1061 OracleOpenForStatement,
1062 OracleFetchStatement,
1063 OracleIntoClause,
1064 BulkCollectIntoClause,
1065 OracleExitStatement,
1066 OracleReturnStatement,
1067 OracleCreateUserStatement,
1068 OracleReturningClause,
1069 DatabaseLinkReference,
1070 OracleCreateDatabaseLinkStatement,
1071 OracleDropDatabaseLinkStatement,
1072 OracleAlterDatabaseLinkStatement,
1073 OracleCreateSynonymStatement,
1074 OracleDropSynonymStatement,
1075 OracleAlterSynonymStatement,
1076 OracleWithinGroupClause,
1077 OracleListaggOverflowClause,
1078 OracleNamedArgument,
1079 OracleCreateTableStatement,
1080 OracleColumnDefinition,
1081 OracleSqlplusVariable,
1082 StartwithClause,
1083 OracleTableReference,
1084 OracleCreateViewStatement,
1085 OracleAlterIndexStatement,
1086 OracleAlterTableStatement,
1087 OracleAlterSessionStatement,
1088 JsonTableColumnDefinition,
1089 JsonTableColumnsClause,
1090 JsonTableFunctionContents,
1091 OracleMergeUpdateClause,
1092 OracleInsertStatement,
1093 OracleUpdateStatement,
1094 OracleDeleteStatement,
1095 OracleTransactionStatement,
1096 OracleValuesClause,
1097 OracleTableConstraint,
1098 OracleFunctionName,
1099 OracleOrderByClause,
1100}
1101
1102impl SyntaxKind {
1103 pub fn indent_val(self) -> i8 {
1104 match self {
1105 SyntaxKind::Indent | SyntaxKind::Implicit => 1,
1106 SyntaxKind::Dedent => -1,
1107 _ => 0,
1108 }
1109 }
1110}
1111
1112impl SyntaxKind {
1113 pub fn as_str(&self) -> &'static str {
1114 self.into()
1115 }
1116}
1117
1118#[derive(Clone, PartialEq, Eq, Default)]
1119pub struct SyntaxSet([u64; 18]);
1120
1121impl std::fmt::Debug for SyntaxSet {
1122 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1123 f.debug_list().entries(self.iter()).finish()
1124 }
1125}
1126
1127impl SyntaxSet {
1128 pub const EMPTY: SyntaxSet = Self([0; 18]);
1129 const SLICE_BITS: u16 = u64::BITS as u16;
1130
1131 pub const fn new(kinds: &[SyntaxKind]) -> Self {
1132 let mut set = SyntaxSet::EMPTY;
1133
1134 let mut index = 0;
1135 while index < kinds.len() {
1136 set = set.union(&Self::single(kinds[index]));
1137 index += 1;
1138 }
1139
1140 set
1141 }
1142
1143 pub const fn single(kind: SyntaxKind) -> Self {
1144 let kind = kind as u16;
1145
1146 let index = (kind / Self::SLICE_BITS) as usize;
1147
1148 debug_assert!(
1149 index < Self::EMPTY.0.len(),
1150 "Index out of bounds. Increase the size of the bitset array."
1151 );
1152
1153 let shift = kind % Self::SLICE_BITS;
1154 let mask = 1 << shift;
1155
1156 let mut bits = Self::EMPTY.0;
1157 bits[index] = mask;
1158
1159 Self(bits)
1160 }
1161
1162 pub fn is_empty(&self) -> bool {
1163 self == &SyntaxSet::EMPTY
1164 }
1165
1166 pub fn insert(&mut self, value: SyntaxKind) {
1167 let set = std::mem::take(self);
1168 *self = set.union(&SyntaxSet::single(value));
1169 }
1170
1171 pub const fn intersection(mut self, other: &Self) -> Self {
1172 let mut index = 0;
1173
1174 while index < self.0.len() {
1175 self.0[index] &= other.0[index];
1176 index += 1;
1177 }
1178
1179 self
1180 }
1181
1182 pub const fn union(mut self, other: &Self) -> Self {
1183 let mut i = 0;
1184
1185 while i < self.0.len() {
1186 self.0[i] |= other.0[i];
1187 i += 1;
1188 }
1189
1190 self
1191 }
1192
1193 pub const fn intersects(&self, other: &Self) -> bool {
1194 let mut i = 0;
1195
1196 while i < self.0.len() {
1197 if self.0[i] & other.0[i] != 0 {
1198 return true;
1199 }
1200 i += 1;
1201 }
1202
1203 false
1204 }
1205
1206 pub const fn contains(&self, kind: SyntaxKind) -> bool {
1207 let kind = kind as u16;
1208 let index = kind as usize / Self::SLICE_BITS as usize;
1209 let shift = kind % Self::SLICE_BITS;
1210 let mask = 1 << shift;
1211
1212 self.0[index] & mask != 0
1213 }
1214
1215 pub const fn len(&self) -> usize {
1216 let mut len: u32 = 0;
1217
1218 let mut index = 0;
1219 while index < self.0.len() {
1220 len += self.0[index].count_ones();
1221 index += 1;
1222 }
1223
1224 len as usize
1225 }
1226
1227 pub fn iter(&self) -> SyntaxSetIter {
1228 SyntaxSetIter {
1229 set: self.clone(),
1230 index: 0,
1231 }
1232 }
1233}
1234
1235impl Extend<SyntaxKind> for SyntaxSet {
1236 fn extend<T: IntoIterator<Item = SyntaxKind>>(&mut self, iter: T) {
1237 let set = std::mem::take(self);
1238 *self = set.union(&SyntaxSet::from_iter(iter));
1239 }
1240}
1241
1242impl IntoIterator for SyntaxSet {
1243 type Item = SyntaxKind;
1244 type IntoIter = SyntaxSetIter;
1245
1246 fn into_iter(self) -> Self::IntoIter {
1247 self.iter()
1248 }
1249}
1250
1251impl IntoIterator for &SyntaxSet {
1252 type Item = SyntaxKind;
1253 type IntoIter = SyntaxSetIter;
1254
1255 fn into_iter(self) -> Self::IntoIter {
1256 self.iter()
1257 }
1258}
1259
1260impl FromIterator<SyntaxKind> for SyntaxSet {
1261 fn from_iter<T: IntoIterator<Item = SyntaxKind>>(iter: T) -> Self {
1262 let mut set = SyntaxSet::EMPTY;
1263
1264 for kind in iter {
1265 set.insert(kind);
1266 }
1267
1268 set
1269 }
1270}
1271
1272pub struct SyntaxSetIter {
1273 set: SyntaxSet,
1274 index: u16,
1275}
1276
1277impl Iterator for SyntaxSetIter {
1278 type Item = SyntaxKind;
1279
1280 fn next(&mut self) -> Option<Self::Item> {
1281 loop {
1282 let slice = self.set.0.get_mut(self.index as usize)?;
1283 let bit = slice.trailing_zeros() as u16;
1284
1285 if bit < SyntaxSet::SLICE_BITS {
1286 *slice ^= 1 << bit;
1287 let value = self.index * SyntaxSet::SLICE_BITS + bit;
1288 return Some(unsafe { std::mem::transmute::<u16, SyntaxKind>(value) });
1289 }
1290
1291 self.index += 1;
1292 }
1293 }
1294
1295 fn size_hint(&self) -> (usize, Option<usize>) {
1296 let len = self.set.len();
1297
1298 (len, Some(len))
1299 }
1300}