mrs_plugin/grammar/MRSParser.g4 (970 lines of code) (raw):

/* * Copyright (c) 2023, 2025, Oracle and/or its affiliates. * * This program is free software; you can redistribute it and/or modify it under the terms of the * GNU General Public License, version 2.0, as published by the Free Software Foundation. * * This program is designed to work with certain software (including but not limited to OpenSSL) * that is licensed under separate terms, as designated in a particular file or component or in * included license documentation. The authors of MySQL hereby grant you an additional permission to * link the program and your derivative works with the separately licensed software that they have * included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License, version 2.0, for more details. * * You should have received a copy of the GNU General Public License along with this program; if * not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA */ /* // TODO: = errors should include an error code = add show create rest user, role */ // $antlr-format alignTrailingComments on, columnLimit 100, minEmptyLines 1, maxEmptyLinesToKeep 1, reflowComments off // $antlr-format useTab off, allowShortRulesOnASingleLine off, allowShortBlocksOnASingleLine on, alignSemicolons ownLine // MySQL REST Service (MRS) Grammar Definition (parser). parser grammar MRSParser; options { tokenVocab = MRSLexer; } // Used for auto merging this grammar and the standard MySQL grammar. /* START OF MERGE PART */ mrsScript: (mrsStatement (SEMICOLON_SYMBOL+ mrsStatement)*)? SEMICOLON_SYMBOL? EOF ; mrsStatement: configureRestMetadataStatement | createRestServiceStatement | createRestSchemaStatement | createRestViewStatement | createRestProcedureStatement | createRestFunctionStatement | createRestContentSetStatement | createRestContentFileStatement | createRestAuthAppStatement | createRestRoleStatement | createRestUserStatement | cloneRestServiceStatement | alterRestServiceStatement | alterRestSchemaStatement | alterRestViewStatement | alterRestProcedureStatement | alterRestFunctionStatement | alterRestContentSetStatement | alterRestAuthAppStatement | alterRestUserStatement | dropRestServiceStatement | dropRestSchemaStatement | dropRestViewStatement | dropRestProcedureStatement | dropRestFunctionStatement | dropRestContentSetStatement | dropRestContentFileStatement | dropRestAuthAppStatement | dropRestUserStatement | dropRestRoleStatement | dumpRestServiceStatement | grantRestRoleStatement | grantRestPrivilegeStatement | revokeRestPrivilegeStatement | revokeRestRoleStatement | useStatement | showRestMetadataStatusStatement | showRestServicesStatement | showRestSchemasStatement | showRestViewsStatement | showRestProceduresStatement | showRestFunctionsStatement | showRestContentSetsStatement | showRestContentFilesStatement | showRestAuthAppsStatement | showRestRolesStatement | showRestGrantsStatement | showCreateRestServiceStatement | showCreateRestSchemaStatement | showCreateRestViewStatement | showCreateRestProcedureStatement | showCreateRestFunctionStatement | showCreateRestContentSetStatement | showCreateRestContentFileStatement | showCreateRestAuthAppStatement ; // Common Definitions ======================================================= enabledDisabled: ENABLED_SYMBOL | DISABLED_SYMBOL ; enabledDisabledPrivate: ENABLED_SYMBOL | DISABLED_SYMBOL | PRIVATE_SYMBOL ; quotedTextOrDefault: (textStringLiteral | DEFAULT_SYMBOL) ; jsonOptions: MERGE_SYMBOL? OPTIONS_SYMBOL jsonValue ; metadata: METADATA_SYMBOL jsonValue ; comments: COMMENT_SYMBOL textStringLiteral ; authenticationRequired: AUTHENTICATION_SYMBOL NOT_SYMBOL? REQUIRED_SYMBOL ; itemsPerPage: ITEMS_SYMBOL PER_SYMBOL PAGE_SYMBOL itemsPerPageNumber ; itemsPerPageNumber: INT_NUMBER ; serviceSchemaSelector: (SERVICE_SYMBOL serviceRequestPath)? DATABASE_SYMBOL schemaRequestPath ; serviceSchemaSelectorWildcard: (SERVICE_SYMBOL serviceRequestPathWildcard)? DATABASE_SYMBOL schemaRequestPathWildcard ; // CONFIGURE statements ===================================================== // - CONFIGURE REST METADATA ------------------------------------------------ configureRestMetadataStatement: CONFIGURE_SYMBOL REST_SYMBOL METADATA_SYMBOL restMetadataOptions? ; restMetadataOptions: ( enabledDisabled | jsonOptions | updateIfAvailable )+ ; updateIfAvailable: UPDATE_SYMBOL (IF_SYMBOL AVAILABLE_SYMBOL)? ; // CREATE statements ======================================================== // - CREATE REST SERVICE ---------------------------------------------------- createRestServiceStatement: CREATE_SYMBOL (OR_SYMBOL REPLACE_SYMBOL)? REST_SYMBOL SERVICE_SYMBOL serviceRequestPath restServiceOptions? ; restServiceOptions: ( enabledDisabled | publishedUnpublished | restProtocol | restAuthentication // | userManagementSchema -- not enabled yet | jsonOptions | comments | metadata | addAuthApp | removeAuthApp )+ ; publishedUnpublished: PUBLISHED_SYMBOL | UNPUBLISHED_SYMBOL ; restProtocol: PROTOCOL_SYMBOL (HTTP_SYMBOL | HTTPS_SYMBOL) ; restAuthentication: AUTHENTICATION_SYMBOL ( authPath | authRedirection | authValidation | authPageContent )* ; authPath: PATH_SYMBOL quotedTextOrDefault ; authRedirection: REDIRECTION_SYMBOL quotedTextOrDefault ; authValidation: VALIDATION_SYMBOL quotedTextOrDefault ; authPageContent: PAGE_SYMBOL CONTENT_SYMBOL quotedTextOrDefault ; userManagementSchema: USER_SYMBOL MANAGEMENT_SYMBOL DATABASE_SYMBOL ( schemaName | DEFAULT_SYMBOL ) ; addAuthApp: ADD_SYMBOL AUTH_SYMBOL APP_SYMBOL authAppName ; removeAuthApp: REMOVE_SYMBOL AUTH_SYMBOL APP_SYMBOL authAppName ; // - CREATE REST SCHEMA ----------------------------------------------------- createRestSchemaStatement: CREATE_SYMBOL (OR_SYMBOL REPLACE_SYMBOL)? REST_SYMBOL DATABASE_SYMBOL schemaRequestPath? ( ON_SYMBOL SERVICE_SYMBOL? serviceRequestPath )? FROM_SYMBOL schemaName restSchemaOptions? ; restSchemaOptions: ( enabledDisabledPrivate | authenticationRequired | itemsPerPage | jsonOptions | comments | metadata )+ ; // - CREATE REST VIEW ------------------------------------------------------- createRestViewStatement: CREATE_SYMBOL (OR_SYMBOL REPLACE_SYMBOL)? REST_SYMBOL DATA_SYMBOL? MAPPING_SYMBOL? VIEW_SYMBOL viewRequestPath (ON_SYMBOL serviceSchemaSelector)? AS_SYMBOL qualifiedIdentifier ( CLASS_SYMBOL restObjectName )? graphQlCrudOptions? graphQlObj? restObjectOptions? ; restObjectOptions: ( enabledDisabledPrivate | authenticationRequired | itemsPerPage | jsonOptions | comments | metadata | restViewMediaType | restViewFormat | restViewAuthenticationProcedure )+ ; restViewMediaType: MEDIA_SYMBOL TYPE_SYMBOL ( textStringLiteral | AUTODETECT_SYMBOL ) ; restViewFormat: FORMAT_SYMBOL (FEED_SYMBOL | ITEM_SYMBOL | MEDIA_SYMBOL) ; restViewAuthenticationProcedure: AUTHENTICATION_SYMBOL PROCEDURE_SYMBOL qualifiedIdentifier ; // - CREATE REST PROCEDURE -------------------------------------------------- createRestProcedureStatement: CREATE_SYMBOL (OR_SYMBOL REPLACE_SYMBOL)? REST_SYMBOL PROCEDURE_SYMBOL procedureRequestPath ( ON_SYMBOL serviceSchemaSelector )? AS_SYMBOL qualifiedIdentifier FORCE_SYMBOL? ( PARAMETERS_SYMBOL restObjectName? graphQlObj )? restProcedureResult* restObjectOptions? ; restProcedureResult: RESULT_SYMBOL restResultName? graphQlObj ; // - CREATE REST FUNCTION --------------------------------------------------- createRestFunctionStatement: CREATE_SYMBOL (OR_SYMBOL REPLACE_SYMBOL)? REST_SYMBOL FUNCTION_SYMBOL functionRequestPath ( ON_SYMBOL serviceSchemaSelector )? AS_SYMBOL qualifiedIdentifier FORCE_SYMBOL? ( PARAMETERS_SYMBOL restObjectName? graphQlObj )? restFunctionResult? restObjectOptions? ; restFunctionResult: RESULT_SYMBOL restResultName? graphQlObj ; // - CREATE REST CONTENT SET ------------------------------------------------ createRestContentSetStatement: CREATE_SYMBOL (OR_SYMBOL REPLACE_SYMBOL)? REST_SYMBOL CONTENT_SYMBOL SET_SYMBOL contentSetRequestPath ( ON_SYMBOL SERVICE_SYMBOL? serviceRequestPath )? (FROM_SYMBOL directoryFilePath)? restContentSetOptions? ; directoryFilePath: textStringLiteral ; restContentSetOptions: ( enabledDisabledPrivate | authenticationRequired | jsonOptions | comments | fileIgnoreList | loadScripts )+ ; fileIgnoreList: IGNORE_SYMBOL textStringLiteral ; loadScripts: LOAD_SYMBOL TYPESCRIPT_SYMBOL? SCRIPTS_SYMBOL ; // - CREATE REST CONTENT FILE ----------------------------------------------- createRestContentFileStatement: CREATE_SYMBOL (OR_SYMBOL REPLACE_SYMBOL)? REST_SYMBOL CONTENT_SYMBOL FILE_SYMBOL contentFileRequestPath ON_SYMBOL ( SERVICE_SYMBOL? serviceRequestPath )? CONTENT_SYMBOL SET_SYMBOL contentSetRequestPath ( (FROM_SYMBOL directoryFilePath) | (BINARY_SYMBOL? CONTENT_SYMBOL textStringLiteral) ) restContentFileOptions? ; restContentFileOptions: ( enabledDisabledPrivate | authenticationRequired | jsonOptions )+ ; // - CREATE REST AUTH APP --------------------------------------------------- createRestAuthAppStatement: CREATE_SYMBOL (OR_SYMBOL REPLACE_SYMBOL)? REST_SYMBOL ( AUTH_SYMBOL | AUTHENTICATION_SYMBOL ) APP_SYMBOL authAppName VENDOR_SYMBOL ( MRS_SYMBOL | MYSQL_SYMBOL | vendorName ) restAuthAppOptions? ; authAppName: textOrIdentifier ; vendorName: textOrIdentifier ; restAuthAppOptions: ( enabledDisabled | comments | allowNewUsersToRegister | defaultRole | appId | appSecret | url )+ ; allowNewUsersToRegister: (DO_SYMBOL NOT_SYMBOL)? ALLOW_SYMBOL NEW_SYMBOL USERS_SYMBOL ( TO_SYMBOL REGISTER_SYMBOL )? ; defaultRole: DEFAULT_SYMBOL ROLE_SYMBOL textOrIdentifier ; appId: (APP_SYMBOL | CLIENT_SYMBOL) ID_SYMBOL textStringLiteral ; appSecret: (APP_SYMBOL | CLIENT_SYMBOL) SECRET_SYMBOL textStringLiteral ; url: URL_SYMBOL textStringLiteral ; // - CREATE REST USER ------------------------------------------------------- createRestUserStatement: CREATE_SYMBOL (OR_SYMBOL REPLACE_SYMBOL)? REST_SYMBOL USER_SYMBOL userName AT_SIGN_SYMBOL authAppName (IDENTIFIED_SYMBOL BY_SYMBOL userPassword)? userOptions? ; userName: textOrIdentifier ; userPassword: textStringLiteral ; userOptions: (accountLock | appOptions | jsonOptions)+ ; appOptions: APP_SYMBOL OPTIONS_SYMBOL jsonValue ; accountLock: ACCOUNT_SYMBOL (LOCK_SYMBOL | UNLOCK_SYMBOL) ; // - CREATE REST ROLE ------------------------------------------------------- createRestRoleStatement: CREATE_SYMBOL (OR_SYMBOL REPLACE_SYMBOL)? REST_SYMBOL ROLE_SYMBOL roleName ( EXTENDS_SYMBOL parentRoleName )? ( ON_SYMBOL ( ANY_SYMBOL SERVICE_SYMBOL | SERVICE_SYMBOL? serviceRequestPath ) )? restRoleOptions? ; restRoleOptions: (jsonOptions | comments)+ ; parentRoleName: textOrIdentifier ; roleName: textOrIdentifier ; // CLONE statements ========================================================= // - CLONE REST SERVICE ----------------------------------------------------- cloneRestServiceStatement: CLONE_SYMBOL REST_SYMBOL SERVICE_SYMBOL serviceRequestPath NEW_SYMBOL REQUEST_SYMBOL PATH_SYMBOL newServiceRequestPath ; // ALTER statements ========================================================= // - ALTER REST SERVICE ----------------------------------------------------- alterRestServiceStatement: ALTER_SYMBOL REST_SYMBOL SERVICE_SYMBOL serviceRequestPath ( NEW_SYMBOL REQUEST_SYMBOL PATH_SYMBOL newServiceRequestPath )? restServiceOptions? ; // - ALTER REST SERVICE ----------------------------------------------------- alterRestSchemaStatement: ALTER_SYMBOL REST_SYMBOL DATABASE_SYMBOL schemaRequestPath? ( ON_SYMBOL SERVICE_SYMBOL? serviceRequestPath )? ( NEW_SYMBOL REQUEST_SYMBOL PATH_SYMBOL newSchemaRequestPath )? (FROM_SYMBOL schemaName)? restSchemaOptions? ; // - ALTER REST VIEW -------------------------------------------------------- alterRestViewStatement: ALTER_SYMBOL REST_SYMBOL DATA_SYMBOL? MAPPING_SYMBOL? VIEW_SYMBOL viewRequestPath ( ON_SYMBOL serviceSchemaSelector )? (NEW_SYMBOL REQUEST_SYMBOL PATH_SYMBOL newViewRequestPath)? ( CLASS_SYMBOL restObjectName graphQlCrudOptions? graphQlObj? )? restObjectOptions? ; // - ALTER REST PROCEDURE --------------------------------------------------- alterRestProcedureStatement: ALTER_SYMBOL REST_SYMBOL PROCEDURE_SYMBOL procedureRequestPath ( ON_SYMBOL serviceSchemaSelector )? ( NEW_SYMBOL REQUEST_SYMBOL PATH_SYMBOL newProcedureRequestPath )? (PARAMETERS_SYMBOL restObjectName? graphQlObj)? restProcedureResult* restObjectOptions? ; // - ALTER REST FUNCTION --------------------------------------------------- alterRestFunctionStatement: ALTER_SYMBOL REST_SYMBOL FUNCTION_SYMBOL functionRequestPath ( ON_SYMBOL serviceSchemaSelector )? ( NEW_SYMBOL REQUEST_SYMBOL PATH_SYMBOL newFunctionRequestPath )? (PARAMETERS_SYMBOL restObjectName? graphQlObj)? restFunctionResult* restObjectOptions? ; // - ALTER REST CONTENT SET ------------------------------------------------- alterRestContentSetStatement: ALTER_SYMBOL REST_SYMBOL CONTENT_SYMBOL SET_SYMBOL contentSetRequestPath ( ON_SYMBOL SERVICE_SYMBOL? serviceRequestPath )? ( NEW_SYMBOL REQUEST_SYMBOL PATH_SYMBOL newContentSetRequestPath )? restContentSetOptions? ; // - ALTER REST AUTH APP ---------------------------------------------------- alterRestAuthAppStatement: ALTER_SYMBOL REST_SYMBOL ( AUTH_SYMBOL | AUTHENTICATION_SYMBOL ) APP_SYMBOL authAppName ( NEW_SYMBOL NAME_SYMBOL newAuthAppName )? restAuthAppOptions? ; newAuthAppName: textOrIdentifier ; // - ALTER REST USER ------------------------------------------------------- alterRestUserStatement: ALTER_SYMBOL REST_SYMBOL USER_SYMBOL userName AT_SIGN_SYMBOL authAppName ( IDENTIFIED_SYMBOL BY_SYMBOL userPassword )? userOptions? ; // DROP statements ========================================================== dropRestServiceStatement: DROP_SYMBOL REST_SYMBOL SERVICE_SYMBOL serviceRequestPath ; dropRestSchemaStatement: DROP_SYMBOL REST_SYMBOL DATABASE_SYMBOL schemaRequestPath ( FROM_SYMBOL SERVICE_SYMBOL? serviceRequestPath )? ; dropRestViewStatement: DROP_SYMBOL REST_SYMBOL DATA_SYMBOL? MAPPING_SYMBOL? VIEW_SYMBOL viewRequestPath ( FROM_SYMBOL serviceSchemaSelector )? ; dropRestProcedureStatement: DROP_SYMBOL REST_SYMBOL PROCEDURE_SYMBOL procedureRequestPath ( FROM_SYMBOL serviceSchemaSelector )? ; dropRestFunctionStatement: DROP_SYMBOL REST_SYMBOL FUNCTION_SYMBOL functionRequestPath ( FROM_SYMBOL serviceSchemaSelector )? ; dropRestContentSetStatement: DROP_SYMBOL REST_SYMBOL CONTENT_SYMBOL SET_SYMBOL contentSetRequestPath ( FROM_SYMBOL SERVICE_SYMBOL? serviceRequestPath )? ; dropRestContentFileStatement: DROP_SYMBOL REST_SYMBOL CONTENT_SYMBOL FILE_SYMBOL contentFileRequestPath FROM_SYMBOL ( SERVICE_SYMBOL? serviceRequestPath )? CONTENT_SYMBOL SET_SYMBOL contentSetRequestPath ; dropRestAuthAppStatement: DROP_SYMBOL REST_SYMBOL (AUTH_SYMBOL | AUTHENTICATION_SYMBOL) APP_SYMBOL authAppName ; dropRestUserStatement: DROP_SYMBOL REST_SYMBOL USER_SYMBOL userName AT_SIGN_SYMBOL authAppName ; dropRestRoleStatement: DROP_SYMBOL REST_SYMBOL ROLE_SYMBOL roleName ; // GRANT statements =========================================================== grantRestPrivilegeStatement: GRANT_SYMBOL REST_SYMBOL privilegeList ( (ON_SYMBOL SERVICE_SYMBOL? serviceRequestPathWildcard) | ( ON_SYMBOL serviceSchemaSelectorWildcard ( OBJECT_SYMBOL objectRequestPathWildcard )? ) )? TO_SYMBOL roleName ; privilegeList: privilegeName | privilegeName COMMA_SYMBOL privilegeList ; privilegeName: CREATE_SYMBOL | READ_SYMBOL | UPDATE_SYMBOL | DELETE_SYMBOL ; grantRestRoleStatement: GRANT_SYMBOL REST_SYMBOL ROLE_SYMBOL roleName TO_SYMBOL userName AT_SIGN_SYMBOL authAppName comments? ; // REVOKE statements =========================================================== revokeRestPrivilegeStatement: REVOKE_SYMBOL REST_SYMBOL privilegeList ( (ON_SYMBOL SERVICE_SYMBOL? serviceRequestPathWildcard) | ( ON_SYMBOL serviceSchemaSelectorWildcard ( OBJECT_SYMBOL objectRequestPathWildcard )? ) )? FROM_SYMBOL roleName ; revokeRestRoleStatement: REVOKE_SYMBOL REST_SYMBOL ROLE_SYMBOL roleName FROM_SYMBOL userName AT_SIGN_SYMBOL authAppName ; // USE statements =========================================================== useStatement: USE_SYMBOL REST_SYMBOL serviceAndSchemaRequestPaths ; serviceAndSchemaRequestPaths: SERVICE_SYMBOL serviceRequestPath | serviceSchemaSelector ; // SHOW statements ========================================================== showRestMetadataStatusStatement: SHOW_SYMBOL REST_SYMBOL METADATA_SYMBOL? STATUS_SYMBOL ; showRestServicesStatement: SHOW_SYMBOL REST_SYMBOL SERVICES_SYMBOL ; showRestSchemasStatement: SHOW_SYMBOL REST_SYMBOL DATABASES_SYMBOL ( (ON_SYMBOL | FROM_SYMBOL) SERVICE_SYMBOL? serviceRequestPath )? ; showRestViewsStatement: SHOW_SYMBOL REST_SYMBOL DATA_SYMBOL? MAPPING_SYMBOL? VIEWS_SYMBOL ( (ON_SYMBOL | FROM_SYMBOL) serviceSchemaSelector )? ; showRestProceduresStatement: SHOW_SYMBOL REST_SYMBOL PROCEDURES_SYMBOL ( (ON_SYMBOL | FROM_SYMBOL) serviceSchemaSelector )? ; showRestFunctionsStatement: SHOW_SYMBOL REST_SYMBOL FUNCTIONS_SYMBOL ( (ON_SYMBOL | FROM_SYMBOL) serviceSchemaSelector )? ; showRestContentSetsStatement: SHOW_SYMBOL REST_SYMBOL CONTENT_SYMBOL SETS_SYMBOL ( (ON_SYMBOL | FROM_SYMBOL) SERVICE_SYMBOL? serviceRequestPath )? ; showRestContentFilesStatement: SHOW_SYMBOL REST_SYMBOL CONTENT_SYMBOL FILES_SYMBOL ( ON_SYMBOL | FROM_SYMBOL ) (SERVICE_SYMBOL? serviceRequestPath)? CONTENT_SYMBOL SET_SYMBOL contentSetRequestPath ; showRestAuthAppsStatement: SHOW_SYMBOL REST_SYMBOL AUTH_SYMBOL APPS_SYMBOL ( (ON_SYMBOL | FROM_SYMBOL) SERVICE_SYMBOL? serviceRequestPath )? ; showRestRolesStatement: SHOW_SYMBOL REST_SYMBOL ROLES_SYMBOL ( (ON_SYMBOL | FROM_SYMBOL) ( ANY_SYMBOL SERVICE_SYMBOL | SERVICE_SYMBOL? serviceRequestPath ) )? (FOR_SYMBOL userName? AT_SIGN_SYMBOL authAppName)? ; showRestGrantsStatement: SHOW_SYMBOL REST_SYMBOL GRANTS_SYMBOL FOR_SYMBOL roleName ; showCreateRestServiceStatement: SHOW_SYMBOL CREATE_SYMBOL REST_SYMBOL SERVICE_SYMBOL serviceRequestPath? ( INCLUDING_SYMBOL DATABASE_SYMBOL ENDPOINTS_SYMBOL )? ; showCreateRestSchemaStatement: SHOW_SYMBOL CREATE_SYMBOL REST_SYMBOL DATABASE_SYMBOL schemaRequestPath? ( (ON_SYMBOL | FROM_SYMBOL) SERVICE_SYMBOL? serviceRequestPath )? ; showCreateRestViewStatement: SHOW_SYMBOL CREATE_SYMBOL REST_SYMBOL DATA_SYMBOL? MAPPING_SYMBOL? VIEW_SYMBOL viewRequestPath ( (ON_SYMBOL | FROM_SYMBOL) serviceSchemaSelector )? ; showCreateRestProcedureStatement: SHOW_SYMBOL CREATE_SYMBOL REST_SYMBOL PROCEDURE_SYMBOL procedureRequestPath ( (ON_SYMBOL | FROM_SYMBOL) serviceSchemaSelector )? ; showCreateRestFunctionStatement: SHOW_SYMBOL CREATE_SYMBOL REST_SYMBOL FUNCTION_SYMBOL functionRequestPath ( (ON_SYMBOL | FROM_SYMBOL) serviceSchemaSelector )? ; showCreateRestContentSetStatement: SHOW_SYMBOL CREATE_SYMBOL REST_SYMBOL CONTENT_SYMBOL SET_SYMBOL contentSetRequestPath ( (ON_SYMBOL | FROM_SYMBOL) SERVICE_SYMBOL? serviceRequestPath )? ; showCreateRestContentFileStatement: SHOW_SYMBOL CREATE_SYMBOL REST_SYMBOL CONTENT_SYMBOL FILE_SYMBOL contentFileRequestPath ( ON_SYMBOL | FROM_SYMBOL ) (SERVICE_SYMBOL? serviceRequestPath)? CONTENT_SYMBOL SET_SYMBOL contentSetRequestPath ; showCreateRestAuthAppStatement: SHOW_SYMBOL CREATE_SYMBOL REST_SYMBOL AUTH_SYMBOL APP_SYMBOL authAppName ; dumpRestServiceStatement: DUMP_SYMBOL REST_SYMBOL SERVICE_SYMBOL serviceRequestPath AS_SYMBOL (SQL_SYMBOL)? SCRIPT_SYMBOL INCLUDING_SYMBOL ((DATABASE_SYMBOL (AND_SYMBOL STATIC_SYMBOL (AND_SYMBOL DYNAMIC_SYMBOL)?)?) | ALL_SYMBOL) ENDPOINTS_SYMBOL TO_SYMBOL (ZIP_SYMBOL)? directoryFilePath ; // Named identifiers ======================================================== serviceRequestPath: serviceDevelopersIdentifier? requestPathIdentifier ; newServiceRequestPath: serviceDevelopersIdentifier? requestPathIdentifier ; serviceRequestPathWildcard: serviceDevelopersIdentifier? requestPathIdentifierWithWildcard ; schemaRequestPath: requestPathIdentifier ; newSchemaRequestPath: requestPathIdentifier ; schemaRequestPathWildcard: requestPathIdentifierWithWildcard ; viewRequestPath: requestPathIdentifier ; newViewRequestPath: requestPathIdentifier ; restObjectName: identifier ; restResultName: identifier ; objectRequestPath: requestPathIdentifier ; objectRequestPathWildcard: requestPathIdentifierWithWildcard ; procedureRequestPath: requestPathIdentifier ; functionRequestPath: requestPathIdentifier ; newProcedureRequestPath: requestPathIdentifier ; newFunctionRequestPath: requestPathIdentifier ; contentSetRequestPath: requestPathIdentifier ; newContentSetRequestPath: requestPathIdentifier ; contentFileRequestPath: requestPathIdentifier ; //----------------- Common basic rules --------------------------------------------------------------------------------- serviceDeveloperIdentifier: textOrIdentifier ; serviceDevelopersIdentifier: serviceDeveloperIdentifier ( COMMA_SYMBOL serviceDeveloperIdentifier )* AT_SIGN_SYMBOL ; requestPathIdentifier: REST_REQUEST_PATH | BACK_TICK_QUOTED_ID | {this.isSqlModeActive(SqlMode.AnsiQuotes)}? DOUBLE_QUOTED_TEXT ; requestPathIdentifierWithWildcard: REST_REQUEST_PATH | BACK_TICK_QUOTED_ID | {this.isSqlModeActive(SqlMode.AnsiQuotes)}? DOUBLE_QUOTED_TEXT ; //----------------- Json ----------------------------------------------------------------------------------------------- jsonObj: OPEN_CURLY_SYMBOL jsonPair (COMMA_SYMBOL jsonPair)* CLOSE_CURLY_SYMBOL | OPEN_CURLY_SYMBOL CLOSE_CURLY_SYMBOL ; jsonPair: DOUBLE_QUOTED_TEXT COLON_SYMBOL jsonValue ; jsonArr: OPEN_SQUARE_SYMBOL (jsonValue (COMMA_SYMBOL jsonValue)*)? CLOSE_SQUARE_SYMBOL ; jsonValue: DOUBLE_QUOTED_TEXT | (MINUS_OPERATOR | PLUS_OPERATOR)? FLOAT_NUMBER | INT_NUMBER | jsonObj | jsonArr | TRUE_SYMBOL | FALSE_SYMBOL | NULL_SYMBOL ; //----------------- GraphQL -------------------------------------------------------------------------------------------- graphQlObj: OPEN_CURLY_SYMBOL graphQlPair (COMMA_SYMBOL graphQlPair)* CLOSE_CURLY_SYMBOL | OPEN_CURLY_SYMBOL CLOSE_CURLY_SYMBOL ; graphQlCrudOptions: ( AT_INSERT_SYMBOL | AT_NOINSERT_SYMBOL | AT_UPDATE_SYMBOL | AT_NOUPDATE_SYMBOL | AT_DELETE_SYMBOL | AT_NODELETE_SYMBOL | AT_CHECK_SYMBOL | AT_NOCHECK_SYMBOL )+ ; graphQlPair: graphQlPairKey COLON_SYMBOL graphQlPairValue ( AT_IN_SYMBOL | AT_OUT_SYMBOL | AT_INOUT_SYMBOL )? graphQlValueOptions? ( AT_DATATYPE_SYMBOL OPEN_PAR_SYMBOL graphQlDatatypeValue CLOSE_PAR_SYMBOL )? graphQlCrudOptions? graphQlValueJsonSchema? graphQlObj? ; graphQlValueOptions: ( AT_NOCHECK_SYMBOL | AT_SORTABLE_SYMBOL | AT_NOFILTERING_SYMBOL | AT_ROWOWNERSHIP_SYMBOL | AT_UNNEST_SYMBOL | AT_KEY_SYMBOL )+ ; graphQlValueJsonSchema: JSON_SYMBOL DATABASE_SYMBOL jsonValue ; graphQlAllowedKeyword: CREATE_SYMBOL | OR_SYMBOL | REPLACE_SYMBOL | ALTER_SYMBOL | SHOW_SYMBOL | STATUS_SYMBOL | NEW_SYMBOL | ON_SYMBOL | FROM_SYMBOL | IN_SYMBOL | DATABASES_SYMBOL | DATABASE_SYMBOL | JSON_SYMBOL | VIEW_SYMBOL | PROCEDURE_SYMBOL | FUNCTION_SYMBOL | DROP_SYMBOL | USE_SYMBOL | AS_SYMBOL | FILTER_SYMBOL | AUTHENTICATION_SYMBOL | PATH_SYMBOL | VALIDATION_SYMBOL | DEFAULT_SYMBOL | USER_SYMBOL | OPTIONS_SYMBOL | IF_SYMBOL | NOT_SYMBOL | EXISTS_SYMBOL | PAGE_SYMBOL | HOST_SYMBOL | TYPE_SYMBOL | FORMAT_SYMBOL | UPDATE_SYMBOL | NULL_SYMBOL | TRUE_SYMBOL | FALSE_SYMBOL | SET_SYMBOL | IDENTIFIED_SYMBOL | BY_SYMBOL | ROLE_SYMBOL | TO_SYMBOL | IGNORE_SYMBOL | CLONE_SYMBOL | FILE_SYMBOL | BINARY_SYMBOL | DATA_SYMBOL | LOAD_SYMBOL | GRANT_SYMBOL | READ_SYMBOL | DELETE_SYMBOL | GROUP_SYMBOL | REVOKE_SYMBOL | ACCOUNT_SYMBOL | LOCK_SYMBOL | UNLOCK_SYMBOL | GRANTS_SYMBOL | FOR_SYMBOL | LEVEL_SYMBOL | ANY_SYMBOL | CLIENT_SYMBOL | URL_SYMBOL | NAME_SYMBOL | DO_SYMBOL | CONFIGURE_SYMBOL | REST_SYMBOL | METADATA_SYMBOL | SERVICES_SYMBOL | SERVICE_SYMBOL | VIEWS_SYMBOL | PROCEDURES_SYMBOL | PARAMETERS_SYMBOL | FUNCTIONS_SYMBOL | RESULT_SYMBOL | ENABLED_SYMBOL | PUBLISHED_SYMBOL | DISABLED_SYMBOL | PRIVATE_SYMBOL | UNPUBLISHED_SYMBOL | PROTOCOL_SYMBOL | HTTP_SYMBOL | HTTPS_SYMBOL | COMMENT_SYMBOL | REQUEST_SYMBOL | REDIRECTION_SYMBOL | MANAGEMENT_SYMBOL | AVAILABLE_SYMBOL | REQUIRED_SYMBOL | ITEMS_SYMBOL | PER_SYMBOL | CONTENT_SYMBOL | MEDIA_SYMBOL | AUTODETECT_SYMBOL | FEED_SYMBOL | ITEM_SYMBOL | SETS_SYMBOL | FILES_SYMBOL | AUTH_SYMBOL | APPS_SYMBOL | APP_SYMBOL | ID_SYMBOL | SECRET_SYMBOL | VENDOR_SYMBOL | MRS_SYMBOL | MYSQL_SYMBOL | USERS_SYMBOL | ALLOW_SYMBOL | REGISTER_SYMBOL | CLASS_SYMBOL | DEVELOPMENT_SYMBOL | SCRIPTS_SYMBOL | MAPPING_SYMBOL | TYPESCRIPT_SYMBOL | ROLES_SYMBOL | EXTENDS_SYMBOL | OBJECT_SYMBOL | HIERARCHY_SYMBOL ; graphQlPairKey: DOUBLE_QUOTED_TEXT | identifier | graphQlAllowedKeyword ; graphQlPairValue: qualifiedIdentifier | graphQlAllowedKeyword ; graphQlReduceToValue: DOUBLE_QUOTED_TEXT | identifier ; graphQlDatatypeValue: DOUBLE_QUOTED_TEXT | identifier ; graphQlValue: qualifiedIdentifier | graphQlObj ; /* END OF MERGE PART */ schemaName: identifier ; viewName: identifier ; procedureName: identifier ; // Identifiers excluding keywords (except if they are quoted). IDENT_sys in sql_yacc.yy. pureIdentifier: (IDENTIFIER | BACK_TICK_QUOTED_ID) | {this.isSqlModeActive(SqlMode.AnsiQuotes)}? DOUBLE_QUOTED_TEXT ; // Identifiers including a certain set of keywords, which are allowed also if not quoted. ident in // sql_yacc.yy identifier: pureIdentifier ; identifierList: // ident_string_list in sql_yacc.yy. identifier (COMMA_SYMBOL identifier)* ; identifierListWithParentheses: OPEN_PAR_SYMBOL identifierList CLOSE_PAR_SYMBOL ; qualifiedIdentifier: identifier dotIdentifier? ; simpleIdentifier: // simple_ident + simple_ident_q identifier (dotIdentifier dotIdentifier?)? ; // This rule encapsulates the frequently used dot + identifier sequence, which also requires a // special treatment in the lexer. See there in the DOT_IDENTIFIER rule. dotIdentifier: DOT_SYMBOL identifier ; textStringLiteral: value = SINGLE_QUOTED_TEXT | {!this.isSqlModeActive(SqlMode.AnsiQuotes)}? value = DOUBLE_QUOTED_TEXT ; textOrIdentifier: identifier | textStringLiteral ;