Eagle Legacy Modernization, LLC

SQL Grammar

Main program: SQL_Program

SQL syntax:

 Count  Terminals:
30 SQL_Comment: /* comment */ or -- comment to end of line
3 SQL_Declare_Definition: An identifier
552 SQL_Field_Definition: An identifier
  SQL_HexString: hex string
50 SQL_Identifier: An identifier
349,948 SQL_Identifier_Reference: An identifier
10 SQL_Index_Definition: An identifier
29 SQL_Key_Definition: An identifier
  SQL_Label_Definition: An identifier
1,779,883 SQL_Literal: quotes:'`" escape:\ doubled:yes multiline:no
1,998,200 SQL_Number: exponent_chars:Ee suffix_chars:none trailing_period:yes ignore_char:none
  SQL_Parameter_Definition: An identifier
  SQL_Procedure_Definition: An identifier
16 SQL_Role_Definition: An identifier
67 SQL_Synonym_Definition: An identifier
67 SQL_Table_Definition: An identifier
8 SQL_View_Definition: An identifier
 Count  Statistics(*) Tokens:
4 all all all SQL_AdditiveExpression: SQL_Expression ("+"|"-") SQL_Expression
29 all SQL_Builtin: ("FALSE"|"NULL"|"SYSTIMESTAMP"|"TRUE")
    SQL_CastExpression: "CAST" '(' SQL_Expression "AS" SQL_Type ')'
10 all 50% SQL_CurrentTimeStamp: "CURRENT_TIMESTAMP" [SQL_CurrentTimeStampFunction]
5 all all |   SQL_CurrentTimeStampFunction: '(' ')'
    SQL_DollarVariable: '$' SQL_Number
    SQL_InnerSelect: '(' SQL_SelectStatement ')'
    SQL_InnerValues: '(' SQL_ValuesStatement ')'
    SQL_InnerWith: '(' SQL_WithStatement ')'
6 all all all SQL_LogicalAndExpression: SQL_Expression SQL_AndOperator SQL_Expression
6 (none | all) |   SQL_AndOperator: ("&&" | "AND")
    SQL_LogicalNotExpression: '!' SQL_Expression
    SQL_LogicalOrExpression: SQL_Expression SQL_OrOperator SQL_Expression
    |   SQL_OrOperator: ("||" | "OR")
    SQL_MultiplicativeExpression: SQL_Expression SQL_MultOperator SQL_Expression
    |   SQL_MultOperator: (("*"|"/"|"%") | "DIV")
    SQL_NegativeExpression: ("-"|"+") SQL_Expression
    SQL_Parentheses: '(' SQL_Expression* ')'
44 all all all SQL_RelationalExpression: SQL_Expression SQL_RelationalOperator SQL_Expression
44 (7% | 93%) |   SQL_RelationalOperator: (("LIKE"|"IN"|"IS") | ("="|"!="|"<"|">"|"<="|">="))
2 all SQL_Star: '*'
154 all SQL_VariableExpression: SQL_Variable
16 all all 2.64(69%) all SQL_BuiltinFunction: SQL_FunctionName '(' [SQL_FunctionArg]* ')'
20 (5% | 35% | 60%) |   SQL_FunctionArg: (SQL_FunctionColonParam | SQL_FunctionNamedArg | SQL_Expression)
1 all all |   |   SQL_FunctionColonParam: ':' SQL_Expression
7 all all all |   |   SQL_FunctionNamedArg: SQL_Identifier_Reference "=>" SQL_Expression
16 (6% | 19% | 13% | 6% | 56%) |   SQL_FunctionName: (SQL_FunctionJOB | SQL_FunctionLOB | SQL_FunctionSCHEDULER | SQL_Variable | ("COALESCE"|"COUNT"|"CURRENT_TIMESTAMP"|"MIN"|"RUN_METRIC"|"SYS_EXTRACT_UTC"|"SYS_GUID"))
1 all all all |   |   SQL_FunctionJOB: "DBMS_JOB" '.' "REMOVE"
3 all all all |   |   SQL_FunctionLOB: "DBMS_LOB" '.' "GETLENGTH"
2 all all all |   |   SQL_FunctionSCHEDULER: "DBMS_SCHEDULER" '.' ("CREATE_JOB"|"DROP_JOB")
    SQL_ConcatFunction: "CONCAT" '(' SQL_Expression* ')'
    SQL_LeftFunction: "LEFT" '(' SQL_Expression ',' SQL_Expression ')'
4 all all all all SQL_LengthFunction: "LENGTH" '(' SQL_Expression ')'
    SQL_SubstringFunction: "SUBSTRING" '(' SQL_Expression ',' SQL_Expression ',' SQL_Expression ')'
14 all all all all all 1.29 all 86% SQL_Constraint: "CONSTRAINT" SQL_Key_Definition ("FOREIGN"|"PRIMARY") "KEY" '(' SQL_Identifier_Reference* ')' [SQL_ConstraintReference]
12 all all all 1.00 all |   SQL_ConstraintReference: "REFERENCES" SQL_Identifier_Reference '(' SQL_Identifier_Reference* ')'
3,777,789 (53% | 47% | none | 0% | none | none | 0% | none | none | 0% | none | 0% | none | none | 0% | 0% | none | none | none | none | none | 0% | 0% | 0% | none) SQL_Expression: (SQL_Number | SQL_Literal | SQL_HexString | SQL_CurrentTimeStamp | SQL_NegativeExpression | SQL_LogicalNotExpression | SQL_Builtin | SQL_ConcatFunction | SQL_LeftFunction | SQL_LengthFunction | SQL_SubstringFunction | SQL_BuiltinFunction | SQL_CastExpression | SQL_DollarVariable | SQL_VariableExpression | SQL_Star | SQL_InnerSelect | SQL_InnerValues | SQL_InnerWith | SQL_Parentheses | SQL_MultiplicativeExpression | SQL_AdditiveExpression | SQL_RelationalExpression | SQL_LogicalAndExpression | SQL_LogicalOrExpression)
25 all all all SQL_Filename: SQL_Identifier '.' SQL_Identifier
65 5347.05 SQL_Program: SQL_StatementOrComment*
347,569 (100% | 0%) |   SQL_StatementOrComment: (SQL_Statement | SQL_Comment)
347,539 (0% | 0% | 0% | 0% | none | 0% | 0% | none | 0% | 0% | 0% | 0% | 0% | 0% | none | 0% | 0% | 0% | none | none | none | 100% | none | 0% | 0% | 0% | 0% | none | 0% | none | none | 0%) SQL_Statement: (SQL_Semicolon | SQL_AlterStatement | SQL_AtAtStatement | SQL_BeginStatement | SQL_CallStatement | SQL_ColumnStatement | SQL_CreateIndexStatement | SQL_CreateProcedureStatement | SQL_CreateRoleStatement | SQL_CreateSynonymStatement | SQL_CreateTableStatement | SQL_CreateViewStatement | SQL_DeclareStatement | SQL_DeleteStatement | SQL_DelimiterStatement | SQL_DropStatement | SQL_ForStatement | SQL_GrantStatement | SQL_IfStatement | SQL_LeaveStatement | SQL_LoadStatement | SQL_InsertStatement | SQL_PragmaStatement | SQL_SelectStatement | SQL_SetStatement | SQL_SlashStatement | SQL_UpdateStatement | SQL_ValuesStatement | SQL_VariableStatement | SQL_WhileStatement | SQL_WithStatement | SQL_BuiltinFunction)
80 all |   SQL_Semicolon: ';'
555 (96% | 3% | 1% | none | none) SQL_Type: (SQL_BaseType | SQL_TypeEnum | SQL_TypeSet | SQL_TypeSize | SQL_TypeUnisgnedLong)
535 all 84% |   SQL_BaseType: ("BIGINT"|"BLOB"|"BOOL"|"BOOLEAN"|"CHAR"|"DATE"|"DATETIME"|"DECIMAL"|"DOUBLE"|"FLOAT"|"INT"|"INTEGER"|"INTEGER_NOT_NULL"|"LONGVARCHAR"|"NCLOB"|"NUMBER"|"NUMERIC"|"NVARCHAR2"|"RAW"|"SMALLINT"|"TEXT"|"TIME"|"TIMESTAMP"|"TINYINT"|"UNSIGNED"|"VARCHAR"|"VARCHAR2") [SQL_TypeSize]
14 all all 3.43 all |   SQL_TypeEnum: "ENUM" '(' SQL_Expression* ')'
6 all all 8.00 all |   SQL_TypeSet: "SET" '(' SQL_Expression* ')'
451 all all 3% 3% all |   SQL_TypeSize: '(' SQL_Number [','] [SQL_Number] ')'
    |   SQL_TypeUnisgnedLong: ("UNSIGNED") ("LONG")
156 all 1.38 SQL_Variable: ['@'] SQL_Identifier_Reference*
9 all all all SQL_AlterStatement: "ALTER" SQL_AlterWhat ';'
9 (all) |   SQL_AlterWhat: (SQL_AlterTable)
9 all all all all 22% |   |   SQL_AlterTable: "TABLE" SQL_Identifier_Reference ("ADD") SQL_Constraint [SQL_OnDelete]
2 all all all |   |   |   SQL_OnDelete: "ON" "DELETE" "CASCADE"
25 all all 12% SQL_AtAtStatement: "@@" SQL_Filename [';']
4 all all all SQL_BeginStatement: "BEGIN" SQL_BeginWhat ';'
4 (all | none) |   SQL_BeginWhat: (SQL_BeginEnd | SQL_BeginTransaction)
4 2.00 25% all |   |   SQL_BeginEnd: SQL_StatementOrComment* [SQL_CommitStatement] "END"
    |   |   SQL_BeginTransaction: "TRANSACTION" ';' SQL_StatementOrComment* "COMMIT"
    SQL_CallStatement: "CALL" SQL_BuiltinFunction
8 all all all all all SQL_ColumnStatement: ("COLUMN"|"COL") SQL_Identifier_Reference "NEW_VALUE" SQL_Expression ';'
1 all all SQL_CommitStatement: "COMMIT" ';'
10 all all all none all all all all 2.00 all none all SQL_CreateIndexStatement: "CREATE" ["UNIQUE"] "INDEX" [SQL_IfIndexNotExists] SQL_Index_Definition "ON" SQL_Identifier_Reference '(' SQL_Identifier_Reference* ')' [SQL_CreateIndexWhere] ';'
    |   SQL_CreateIndexWhere: "WHERE" SQL_Expression
    |   SQL_IfIndexNotExists: "IF" "NOT" "EXISTS"
    SQL_CreateProcedureStatement: "CREATE" [SQL_OrReplaceProcedure] "PROCEDURE" SQL_Procedure_Definition '(' [SQL_ProcedureParameter]* ')' "BEGIN" SQL_StatementOrComment* "END" (";"|"//")
    |   SQL_OrReplaceProcedure: "OR" "REPLACE"
    |   SQL_ProcedureParameter: [("IN"|"OUT")] SQL_Parameter_Definition SQL_Type
16 all all all all SQL_CreateRoleStatement: "CREATE" "ROLE" SQL_Role_Definition ';'
67 all all all all all all all SQL_CreateSynonymStatement: "CREATE" "PUBLIC" "SYNONYM" SQL_Synonym_Definition "FOR" [SQL_CreateSynonymForWhom] ';'
67 all all all all |   SQL_CreateSynonymForWhom: '&' SQL_Identifier_Reference ".." SQL_Identifier_Reference
552 all all 1.54(94%) SQL_CreateTableField: SQL_Field_Definition SQL_Type [SQL_FieldOption]*
45 (11% | 27% | 53% | 7% | 2%) |   SQL_CreateFieldKey: (SQL_CreateFieldConstraint | SQL_CreateFieldPlainKey | SQL_CreateFieldPrimaryKey | SQL_CreateFieldUniqueKey | SQL_CreateUsing)
5 all all |   |   SQL_CreateFieldConstraint: ',' SQL_Constraint
12 all all all all 1.67 all |   |   SQL_CreateFieldPlainKey: ',' "KEY" SQL_Key_Definition '(' SQL_Identifier_Reference* ')'
24 all all all all 3.67 all |   |   SQL_CreateFieldPrimaryKey: ',' "PRIMARY" "KEY" '(' SQL_Identifier_Reference* ')'
3 all all all all 2.33 all |   |   SQL_CreateFieldUniqueKey: ',' "UNIQUE" [SQL_CreateFieldUniqueKeyName] '(' SQL_Identifier_Reference* ')'
3 all all |   |   |   SQL_CreateFieldUniqueKeyName: "KEY" SQL_Key_Definition
1 all all |   |   SQL_CreateUsing: "USING" "BTREE"
801 (3% | 0% | 4% | 29% | none | 1% | 62% | 0% | none | 0%) |   SQL_FieldOption: (SQL_FieldCharSet | SQL_FieldCollate | SQL_FieldComment | SQL_FieldDefault | SQL_FieldDeferrable | SQL_FieldKey | SQL_FieldNotNull | SQL_FieldOnAction | SQL_FieldOnDelete | ("UNIQUE"|"AUTOINCREMENT"))
21 all all all |   |   SQL_FieldCharSet: "CHARACTER" "SET" ("utf8")
1 all all |   |   SQL_FieldCollate: "COLLATE" ("utf8_unicode_ci")
36 all all |   |   SQL_FieldComment: "COMMENT" SQL_Literal
230 all all |   |   SQL_FieldDefault: "DEFAULT" SQL_Expression
    |   |   SQL_FieldDeferrable: "DEFERRABLE" "INITIALLY" ("IMMEDIATE"|"DEFERRED")
11 all all |   |   SQL_FieldKey: "PRIMARY" "KEY"
496 all all |   |   SQL_FieldNotNull: [("NON"|"NOT")] "NULL"
4 all all all |   |   SQL_FieldOnAction: "ON" ("UPDATE"|"DELETE") SQL_Expression
    |   |   SQL_FieldOnDelete: "REFERENCES" SQL_Expression
65 all all all none all all all SQL_CreateTableStatement: "CREATE" [("VIRTUAL"|"TEMPORARY")] "TABLE" [SQL_IfTableNotExists] SQL_Table_Definition SQL_TableType ';'
204 (25% | 8% | 19% | 25% | none | 25%) |   SQL_CreateOption: (SQL_CreateCharset | SQL_CreateCollate | SQL_CreateComment | SQL_CreateEngine | SQL_CreateWithoutRowId | "DEFAULT")
50 all all all |   |   SQL_CreateCharset: "CHARSET" '=' ("latin1"|"utf8"|"utf8mb4")
16 all all all |   |   SQL_CreateCollate: "COLLATE" '=' ("utf8_general_ci"|"utf8mb4_unicode_ci")
38 all all all |   |   SQL_CreateComment: "COMMENT" '=' SQL_Literal
50 all all all |   |   SQL_CreateEngine: "ENGINE" '=' ("MyISAM"|"InnoDB")
    |   |   SQL_CreateWithoutRowId: "WITHOUT" "ROWID"
    |   SQL_IfTableNotExists: "IF" "NOT" "EXISTS"
65 all 15.98 1.15(60%) all 4.08(77%) |   SQL_TableNormal: '(' SQL_CreateTableField* [SQL_CreateFieldKey]* ')' [SQL_CreateOption]*
65 (all | none) |   SQL_TableType: (SQL_TableNormal | SQL_TableUsing)
    |   SQL_TableUsing: "USING" "SPAN_JOIN" '(' SQL_Identifier_Reference* ')'
8 all all all all all all all SQL_CreateViewStatement: "CREATE" ["OR"] ["REPLACE"] "VIEW" SQL_View_Definition "AS" SQL_SelectStatement
1 all 2.00 SQL_DeclareStatement: "DECLARE" SQL_Declaration*
2 all all all all all |   SQL_Declaration: SQL_Declare_Definition SQL_Type [":="] [SQL_Expression] ';'
30 all all all all all SQL_DeleteStatement: "DELETE" "FROM" SQL_Identifier_Reference [SQL_DeleteWhere] ';'
30 all all |   SQL_DeleteWhere: "WHERE" SQL_Expression
    SQL_DelimiterStatement: "DELIMITER" (";"|"//")
181 all all all none all all SQL_DropStatement: "DROP" ["PUBLIC"] ("FUNCTION"|"PACKAGE"|"PROCEDURE"|"ROLE"|"SYNONYM"|"TABLE"|"VIEW") [SQL_DropCondition] SQL_Identifier_Reference ';'
    |   SQL_DropCondition: "IF" "EXISTS"
1 all all all all all all all 3.00 all all all SQL_ForStatement: "FOR" SQL_Declare_Definition "IN" SQL_Expression ".." SQL_Expression "LOOP" SQL_StatementOrComment* "END" "LOOP" ';'
90 all all all all all SQL_GrantStatement: "GRANT" SQL_GrantPermission "TO" SQL_Identifier_Reference ';'
90 (91% | 9%) |   SQL_GrantPermission: (SQL_GrantPermissionOn | SQL_Identifier_Reference)
82 all all all |   |   SQL_GrantPermissionOn: ("EXECUTE"|"SELECT") "ON" SQL_Identifier_Reference
    SQL_IfStatement: "IF" SQL_Expression "THEN" SQL_StatementOrComment* [SQL_IfElseClause] "END" "IF" ';'
    |   SQL_IfElseClause: "ELSE" SQL_StatementOrComment*
346,901 all none all all all all SQL_InsertStatement: "INSERT" [SQL_OrReplace] "INTO" SQL_Identifier_Reference SQL_InsertClause ';'
346,901 (0% | 100%) |   SQL_InsertClause: (SQL_InsertSet | SQL_InsertValues)
381 all 10.21 |   SQL_InsertSet: "SET" SQL_InsertAssignment*
2,136 all all all |   |   SQL_InsertAssignment: SQL_Identifier_Reference '=' SQL_Expression
346,520 none all all 20.79 all |   SQL_InsertValues: [SQL_InsertNames] "VALUES" '(' SQL_Expression* ')'
    |   |   SQL_InsertNames: '(' SQL_Identifier_Reference* ')'
    |   SQL_OrReplace: "OR" "REPLACE"
    SQL_LeaveStatement: "LEAVE" SQL_Identifier_Reference ';'
    SQL_LoadStatement: "LOAD" "DATA" "LOCAL" "INFILE" SQL_Literal "INTO" "TABLE" SQL_Identifier_Reference "FIELDS" "TERMINATED" "BY" SQL_Literal "ENCLOSED" "BY" SQL_Literal "ESCAPED" "BY" SQL_Literal "LINES" "TERMINATED" "BY" SQL_Literal
    SQL_PragmaStatement: "PRAGMA" SQL_PragmaClause* ';'
    |   SQL_PragmaClause: (SQL_Pragma_ForeignKeys | SQL_Pragma_JournalMode)
    |   |   SQL_Pragma_ForeignKeys: "FOREIGN_KEYS" '=' SQL_Pragma_ForeignKey
    |   |   |   SQL_Pragma_ForeignKey: (SQL_Number | "OFF")
    |   |   SQL_Pragma_JournalMode: "JOURNAL_MODE" '=' "OFF"
33 (58% | none | 6% | none | 24% | 12%) SQL_SelectClause: (SQL_SelectFrom | SQL_SelectGroup | SQL_SelectInto | SQL_SelectJoin | SQL_SelectReadOnly | SQL_SelectWhere)
19 all all 5% 1.00(11%) |   SQL_SelectFrom: "FROM" SQL_Identifier_Reference [SQL_Table_Definition] [SQL_SelectFromMore]*
2 all all 50% |   |   SQL_SelectFromMore: ',' SQL_Identifier_Reference [SQL_Table_Definition]
    |   SQL_SelectGroup: "GROUP" "BY" SQL_Identifier_Reference
2 all all |   SQL_SelectInto: "INTO" SQL_Identifier_Reference
    |   SQL_SelectJoin: ["INNER"] "JOIN" SQL_Identifier_Reference SQL_SelectJoinClause
    |   |   SQL_SelectJoinClause: (SQL_SelectJoinOn | SQL_SelectJoinUsing)
    |   |   |   SQL_SelectJoinOn: "ON" SQL_Expression
    |   |   |   SQL_SelectJoinUsing: "USING" '(' SQL_Identifier_Reference ')'
8 all all all |   SQL_SelectReadOnly: "WITH" "READ" "ONLY"
4 all all |   SQL_SelectWhere: "WHERE" SQL_Expression
19 all none SQL_SelectStatement: SQL_SelectStmt [SQL_SelectUnion]*
19 all 6.89 1.74(all) all |   SQL_SelectStmt: "SELECT" SQL_SelectWhat* [SQL_SelectClause]* [';']
    |   SQL_SelectUnion: "UNION" ["ALL"] SQL_SelectStmt
75 all 4% |   SQL_SelectWhat: SQL_Expression [SQL_SelectAs]
3 all all |   |   SQL_SelectAs: ["AS"] SQL_Identifier_Reference
19 all all all all all SQL_SetStatement: "SET" SQL_VariableExpression '=' SQL_Expression ';'
4 all SQL_SlashStatement: '/'
4 all all all 1.00 all all all SQL_UpdateStatement: "UPDATE" SQL_Identifier_Reference "SET" SQL_UpdateAssignment* "WHERE" SQL_Expression ';'
4 all all all |   SQL_UpdateAssignment: SQL_Identifier_Reference '=' SQL_Expression
    SQL_ValuesStatement: "VALUES" SQL_Expression* [';']
1 all all all all SQL_VariableStatement: "VARIABLE" SQL_Variable SQL_Type ';'
    SQL_WhileStatement: [SQL_WhileLabel] "WHILE" SQL_Expression "DO" SQL_StatementOrComment* "END" "WHILE" [SQL_Identifier_Reference] ';'
    |   SQL_WhileLabel: SQL_Label_Definition ':'
    SQL_WithStatement: "WITH" SQL_Identifier_Reference '(' SQL_Identifier_Reference* ')' "AS" SQL_Expression SQL_SelectStatement

Terminals = 17 (instances=4,128,863)
Tokens = 152 (instances=5,521,787)

(*) Statistics are shown in the same order as the Tokens.
Percentages are rounded; 'all' and 'none' mean 100% and 0% before rounding.
For lists, it shows the average number of occurrences, excluding empty lists.