All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.github.dingyi222666.monarch.languages.LanguageMysql.kt Maven / Gradle / Ivy

The newest version!
package io.github.dingyi222666.monarch.languages

import io.github.dingyi222666.monarch.common.*
 import io.github.dingyi222666.monarch.loader.dsl.*
import io.github.dingyi222666.monarch.types.IMonarchLanguage

public val MysqlLanguage: IMonarchLanguage by lazy {
  buildMonarchLanguage {
    tokenPostfix = ".sql"
    ignoreCase = true
    defaultToken = ""
    brackets {
      bracket("[","]","delimiter.square")
      bracket("(",")","delimiter.parenthesis")
    }
    keywords("ACCESSIBLE", "ADD", "ALL", "ALTER", "ANALYZE", "AND", "AS", "ASC", "ASENSITIVE",
        "BEFORE", "BETWEEN", "BIGINT", "BINARY", "BLOB", "BOTH", "BY", "CALL", "CASCADE", "CASE",
        "CHANGE", "CHAR", "CHARACTER", "CHECK", "COLLATE", "COLUMN", "CONDITION", "CONSTRAINT",
        "CONTINUE", "CONVERT", "CREATE", "CROSS", "CUBE", "CUME_DIST", "CURRENT_DATE",
        "CURRENT_TIME", "CURRENT_TIMESTAMP", "CURRENT_USER", "CURSOR", "DATABASE", "DATABASES",
        "DAY_HOUR", "DAY_MICROSECOND", "DAY_MINUTE", "DAY_SECOND", "DEC", "DECIMAL", "DECLARE",
        "DEFAULT", "DELAYED", "DELETE", "DENSE_RANK", "DESC", "DESCRIBE", "DETERMINISTIC",
        "DISTINCT", "DISTINCTROW", "DIV", "DOUBLE", "DROP", "DUAL", "EACH", "ELSE", "ELSEIF",
        "EMPTY", "ENCLOSED", "ESCAPED", "EXCEPT", "EXISTS", "EXIT", "EXPLAIN", "FALSE", "FETCH",
        "FIRST_VALUE", "FLOAT", "FLOAT4", "FLOAT8", "FOR", "FORCE", "FOREIGN", "FROM", "FULLTEXT",
        "FUNCTION", "GENERATED", "GET", "GRANT", "GROUP", "GROUPING", "GROUPS", "HAVING",
        "HIGH_PRIORITY", "HOUR_MICROSECOND", "HOUR_MINUTE", "HOUR_SECOND", "IF", "IGNORE", "IN",
        "INDEX", "INFILE", "INNER", "INOUT", "INSENSITIVE", "INSERT", "INT", "INT1", "INT2", "INT3",
        "INT4", "INT8", "INTEGER", "INTERVAL", "INTO", "IO_AFTER_GTIDS", "IO_BEFORE_GTIDS", "IS",
        "ITERATE", "JOIN", "JSON_TABLE", "KEY", "KEYS", "KILL", "LAG", "LAST_VALUE", "LATERAL",
        "LEAD", "LEADING", "LEAVE", "LEFT", "LIKE", "LIMIT", "LINEAR", "LINES", "LOAD", "LOCALTIME",
        "LOCALTIMESTAMP", "LOCK", "LONG", "LONGBLOB", "LONGTEXT", "LOOP", "LOW_PRIORITY",
        "MASTER_BIND", "MASTER_SSL_VERIFY_SERVER_CERT", "MATCH", "MAXVALUE", "MEDIUMBLOB",
        "MEDIUMINT", "MEDIUMTEXT", "MIDDLEINT", "MINUTE_MICROSECOND", "MINUTE_SECOND", "MOD",
        "MODIFIES", "NATURAL", "NOT", "NO_WRITE_TO_BINLOG", "NTH_VALUE", "NTILE", "NULL", "NUMERIC",
        "OF", "ON", "OPTIMIZE", "OPTIMIZER_COSTS", "OPTION", "OPTIONALLY", "OR", "ORDER", "OUT",
        "OUTER", "OUTFILE", "OVER", "PARTITION", "PERCENT_RANK", "PRECISION", "PRIMARY",
        "PROCEDURE", "PURGE", "RANGE", "RANK", "READ", "READS", "READ_WRITE", "REAL", "RECURSIVE",
        "REFERENCES", "REGEXP", "RELEASE", "RENAME", "REPEAT", "REPLACE", "REQUIRE", "RESIGNAL",
        "RESTRICT", "RETURN", "REVOKE", "RIGHT", "RLIKE", "ROW", "ROWS", "ROW_NUMBER", "SCHEMA",
        "SCHEMAS", "SECOND_MICROSECOND", "SELECT", "SENSITIVE", "SEPARATOR", "SET", "SHOW",
        "SIGNAL", "SMALLINT", "SPATIAL", "SPECIFIC", "SQL", "SQLEXCEPTION", "SQLSTATE",
        "SQLWARNING", "SQL_BIG_RESULT", "SQL_CALC_FOUND_ROWS", "SQL_SMALL_RESULT", "SSL",
        "STARTING", "STORED", "STRAIGHT_JOIN", "SYSTEM", "TABLE", "TERMINATED", "THEN", "TINYBLOB",
        "TINYINT", "TINYTEXT", "TO", "TRAILING", "TRIGGER", "TRUE", "UNDO", "UNION", "UNIQUE",
        "UNLOCK", "UNSIGNED", "UPDATE", "USAGE", "USE", "USING", "UTC_DATE", "UTC_TIME",
        "UTC_TIMESTAMP", "VALUES", "VARBINARY", "VARCHAR", "VARCHARACTER", "VARYING", "VIRTUAL",
        "WHEN", "WHERE", "WHILE", "WINDOW", "WITH", "WRITE", "XOR", "YEAR_MONTH", "ZEROFILL")
    operators("AND", "BETWEEN", "IN", "LIKE", "NOT", "OR", "IS", "NULL", "INTERSECT", "UNION",
        "INNER", "JOIN", "LEFT", "OUTER", "RIGHT")
    "builtinFunctions" and listOf("ABS", "ACOS", "ADDDATE", "ADDTIME", "AES_DECRYPT", "AES_ENCRYPT",
        "ANY_VALUE", "Area", "AsBinary", "AsWKB", "ASCII", "ASIN", "AsText", "AsWKT",
        "ASYMMETRIC_DECRYPT", "ASYMMETRIC_DERIVE", "ASYMMETRIC_ENCRYPT", "ASYMMETRIC_SIGN",
        "ASYMMETRIC_VERIFY", "ATAN", "ATAN2", "ATAN", "AVG", "BENCHMARK", "BIN", "BIT_AND",
        "BIT_COUNT", "BIT_LENGTH", "BIT_OR", "BIT_XOR", "Buffer", "CAST", "CEIL", "CEILING",
        "Centroid", "CHAR", "CHAR_LENGTH", "CHARACTER_LENGTH", "CHARSET", "COALESCE",
        "COERCIBILITY", "COLLATION", "COMPRESS", "CONCAT", "CONCAT_WS", "CONNECTION_ID", "Contains",
        "CONV", "CONVERT", "CONVERT_TZ", "ConvexHull", "COS", "COT", "COUNT", "CRC32",
        "CREATE_ASYMMETRIC_PRIV_KEY", "CREATE_ASYMMETRIC_PUB_KEY", "CREATE_DH_PARAMETERS",
        "CREATE_DIGEST", "Crosses", "CUME_DIST", "CURDATE", "CURRENT_DATE", "CURRENT_ROLE",
        "CURRENT_TIME", "CURRENT_TIMESTAMP", "CURRENT_USER", "CURTIME", "DATABASE", "DATE",
        "DATE_ADD", "DATE_FORMAT", "DATE_SUB", "DATEDIFF", "DAY", "DAYNAME", "DAYOFMONTH",
        "DAYOFWEEK", "DAYOFYEAR", "DECODE", "DEFAULT", "DEGREES", "DES_DECRYPT", "DES_ENCRYPT",
        "DENSE_RANK", "Dimension", "Disjoint", "Distance", "ELT", "ENCODE", "ENCRYPT", "EndPoint",
        "Envelope", "Equals", "EXP", "EXPORT_SET", "ExteriorRing", "EXTRACT", "ExtractValue",
        "FIELD", "FIND_IN_SET", "FIRST_VALUE", "FLOOR", "FORMAT", "FORMAT_BYTES",
        "FORMAT_PICO_TIME", "FOUND_ROWS", "FROM_BASE64", "FROM_DAYS", "FROM_UNIXTIME", "GEN_RANGE",
        "GEN_RND_EMAIL", "GEN_RND_PAN", "GEN_RND_SSN", "GEN_RND_US_PHONE", "GeomCollection",
        "GeomCollFromText", "GeometryCollectionFromText", "GeomCollFromWKB",
        "GeometryCollectionFromWKB", "GeometryCollection", "GeometryN", "GeometryType",
        "GeomFromText", "GeometryFromText", "GeomFromWKB", "GeometryFromWKB", "GET_FORMAT",
        "GET_LOCK", "GLength", "GREATEST", "GROUP_CONCAT", "GROUPING", "GTID_SUBSET",
        "GTID_SUBTRACT", "HEX", "HOUR", "ICU_VERSION", "IF", "IFNULL", "INET_ATON", "INET_NTOA",
        "INET6_ATON", "INET6_NTOA", "INSERT", "INSTR", "InteriorRingN", "Intersects", "INTERVAL",
        "IS_FREE_LOCK", "IS_IPV4", "IS_IPV4_COMPAT", "IS_IPV4_MAPPED", "IS_IPV6", "IS_USED_LOCK",
        "IS_UUID", "IsClosed", "IsEmpty", "ISNULL", "IsSimple", "JSON_APPEND", "JSON_ARRAY",
        "JSON_ARRAY_APPEND", "JSON_ARRAY_INSERT", "JSON_ARRAYAGG", "JSON_CONTAINS",
        "JSON_CONTAINS_PATH", "JSON_DEPTH", "JSON_EXTRACT", "JSON_INSERT", "JSON_KEYS",
        "JSON_LENGTH", "JSON_MERGE", "JSON_MERGE_PATCH", "JSON_MERGE_PRESERVE", "JSON_OBJECT",
        "JSON_OBJECTAGG", "JSON_OVERLAPS", "JSON_PRETTY", "JSON_QUOTE", "JSON_REMOVE",
        "JSON_REPLACE", "JSON_SCHEMA_VALID", "JSON_SCHEMA_VALIDATION_REPORT", "JSON_SEARCH",
        "JSON_SET", "JSON_STORAGE_FREE", "JSON_STORAGE_SIZE", "JSON_TABLE", "JSON_TYPE",
        "JSON_UNQUOTE", "JSON_VALID", "LAG", "LAST_DAY", "LAST_INSERT_ID", "LAST_VALUE", "LCASE",
        "LEAD", "LEAST", "LEFT", "LENGTH", "LineFromText", "LineStringFromText", "LineFromWKB",
        "LineStringFromWKB", "LineString", "LN", "LOAD_FILE", "LOCALTIME", "LOCALTIMESTAMP",
        "LOCATE", "LOG", "LOG10", "LOG2", "LOWER", "LPAD", "LTRIM", "MAKE_SET", "MAKEDATE",
        "MAKETIME", "MASK_INNER", "MASK_OUTER", "MASK_PAN", "MASK_PAN_RELAXED", "MASK_SSN",
        "MASTER_POS_WAIT", "MAX", "MBRContains", "MBRCoveredBy", "MBRCovers", "MBRDisjoint",
        "MBREqual", "MBREquals", "MBRIntersects", "MBROverlaps", "MBRTouches", "MBRWithin", "MD5",
        "MEMBER OF", "MICROSECOND", "MID", "MIN", "MINUTE", "MLineFromText",
        "MultiLineStringFromText", "MLineFromWKB", "MultiLineStringFromWKB", "MOD", "MONTH",
        "MONTHNAME", "MPointFromText", "MultiPointFromText", "MPointFromWKB", "MultiPointFromWKB",
        "MPolyFromText", "MultiPolygonFromText", "MPolyFromWKB", "MultiPolygonFromWKB",
        "MultiLineString", "MultiPoint", "MultiPolygon", "NAME_CONST", "NOT IN", "NOW", "NTH_VALUE",
        "NTILE", "NULLIF", "NumGeometries", "NumInteriorRings", "NumPoints", "OCT", "OCTET_LENGTH",
        "OLD_PASSWORD", "ORD", "Overlaps", "PASSWORD", "PERCENT_RANK", "PERIOD_ADD", "PERIOD_DIFF",
        "PI", "Point", "PointFromText", "PointFromWKB", "PointN", "PolyFromText", "PolygonFromText",
        "PolyFromWKB", "PolygonFromWKB", "Polygon", "POSITION", "POW", "POWER",
        "PS_CURRENT_THREAD_ID", "PS_THREAD_ID", "PROCEDURE ANALYSE", "QUARTER", "QUOTE", "RADIANS",
        "RAND", "RANDOM_BYTES", "RANK", "REGEXP_INSTR", "REGEXP_LIKE", "REGEXP_REPLACE",
        "REGEXP_REPLACE", "RELEASE_ALL_LOCKS", "RELEASE_LOCK", "REPEAT", "REPLACE", "REVERSE",
        "RIGHT", "ROLES_GRAPHML", "ROUND", "ROW_COUNT", "ROW_NUMBER", "RPAD", "RTRIM", "SCHEMA",
        "SEC_TO_TIME", "SECOND", "SESSION_USER", "SHA1", "SHA", "SHA2", "SIGN", "SIN", "SLEEP",
        "SOUNDEX", "SOURCE_POS_WAIT", "SPACE", "SQRT", "SRID", "ST_Area", "ST_AsBinary", "ST_AsWKB",
        "ST_AsGeoJSON", "ST_AsText", "ST_AsWKT", "ST_Buffer", "ST_Buffer_Strategy", "ST_Centroid",
        "ST_Collect", "ST_Contains", "ST_ConvexHull", "ST_Crosses", "ST_Difference", "ST_Dimension",
        "ST_Disjoint", "ST_Distance", "ST_Distance_Sphere", "ST_EndPoint", "ST_Envelope",
        "ST_Equals", "ST_ExteriorRing", "ST_FrechetDistance", "ST_GeoHash", "ST_GeomCollFromText",
        "ST_GeometryCollectionFromText", "ST_GeomCollFromTxt", "ST_GeomCollFromWKB",
        "ST_GeometryCollectionFromWKB", "ST_GeometryN", "ST_GeometryType", "ST_GeomFromGeoJSON",
        "ST_GeomFromText", "ST_GeometryFromText", "ST_GeomFromWKB", "ST_GeometryFromWKB",
        "ST_HausdorffDistance", "ST_InteriorRingN", "ST_Intersection", "ST_Intersects",
        "ST_IsClosed", "ST_IsEmpty", "ST_IsSimple", "ST_IsValid", "ST_LatFromGeoHash", "ST_Length",
        "ST_LineFromText", "ST_LineStringFromText", "ST_LineFromWKB", "ST_LineStringFromWKB",
        "ST_LineInterpolatePoint", "ST_LineInterpolatePoints", "ST_LongFromGeoHash", "ST_Longitude",
        "ST_MakeEnvelope", "ST_MLineFromText", "ST_MultiLineStringFromText", "ST_MLineFromWKB",
        "ST_MultiLineStringFromWKB", "ST_MPointFromText", "ST_MultiPointFromText",
        "ST_MPointFromWKB", "ST_MultiPointFromWKB", "ST_MPolyFromText", "ST_MultiPolygonFromText",
        "ST_MPolyFromWKB", "ST_MultiPolygonFromWKB", "ST_NumGeometries", "ST_NumInteriorRing",
        "ST_NumInteriorRings", "ST_NumPoints", "ST_Overlaps", "ST_PointAtDistance",
        "ST_PointFromGeoHash", "ST_PointFromText", "ST_PointFromWKB", "ST_PointN",
        "ST_PolyFromText", "ST_PolygonFromText", "ST_PolyFromWKB", "ST_PolygonFromWKB",
        "ST_Simplify", "ST_SRID", "ST_StartPoint", "ST_SwapXY", "ST_SymDifference", "ST_Touches",
        "ST_Transform", "ST_Union", "ST_Validate", "ST_Within", "ST_X", "ST_Y", "StartPoint",
        "STATEMENT_DIGEST", "STATEMENT_DIGEST_TEXT", "STD", "STDDEV", "STDDEV_POP", "STDDEV_SAMP",
        "STR_TO_DATE", "STRCMP", "SUBDATE", "SUBSTR", "SUBSTRING", "SUBSTRING_INDEX", "SUBTIME",
        "SUM", "SYSDATE", "SYSTEM_USER", "TAN", "TIME", "TIME_FORMAT", "TIME_TO_SEC", "TIMEDIFF",
        "TIMESTAMP", "TIMESTAMPADD", "TIMESTAMPDIFF", "TO_BASE64", "TO_DAYS", "TO_SECONDS",
        "Touches", "TRIM", "TRUNCATE", "UCASE", "UNCOMPRESS", "UNCOMPRESSED_LENGTH", "UNHEX",
        "UNIX_TIMESTAMP", "UpdateXML", "UPPER", "USER", "UTC_DATE", "UTC_TIME", "UTC_TIMESTAMP",
        "UUID", "UUID_SHORT", "UUID_TO_BIN", "VALIDATE_PASSWORD_STRENGTH", "VALUES", "VAR_POP",
        "VAR_SAMP", "VARIANCE", "VERSION", "WAIT_FOR_EXECUTED_GTID_SET",
        "WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS", "WEEK", "WEEKDAY", "WEEKOFYEAR", "WEIGHT_STRING",
        "Within", "X", "Y", "YEAR", "YEARWEEK")
    "builtinVariables" and listOf()
    tokenizer {
      root {
        include("@comments")
        include("@whitespace")
        include("@numbers")
        include("@strings")
        include("@complexIdentifiers")
        include("@scopes")
        "[;,.]".token("delimiter")
        "[()]".token("@brackets")
        "[\\w@]+".action {
          cases {
            "@operators" and "operator"
            "@builtinVariables" and "predefined"
            "@builtinFunctions" and "predefined"
            "@keywords" and "keyword"
            "@default" and "identifier"
          }
        }
        "[<>=!%&+\\-*/|~^]".token("operator")
      }
      whitespace {
        "\\s+".token("white")
      }
      comments {
        "--+.*".token("comment")
        "#+.*".token("comment")
        "\\/\\*".action {
          token = "comment.quote"
          next = "@comment"
        }
      }
      comment {
        "[^*/]+".token("comment")
        "\\*\\/".action {
          token = "comment.quote"
          next = "@pop"
        }
        ".".token("comment")
      }
      "numbers" rules {
        "0[xX][0-9a-fA-F]*".token("number")
        "[${'$'}][+-]*\\d*(\\.\\d*)?".token("number")
        "((\\d+(\\.\\d*)?)|(\\.\\d+))([eE][\\-+]?\\d+)?".token("number")
      }
      "strings" rules {
        "'".action {
          token = "string"
          next = "@string"
        }
        "\"".action {
          token = "string.double"
          next = "@stringDouble"
        }
      }
      string {
        "\\\\'".token("string")
        "[^']+".token("string")
        "''".token("string")
        "'".action {
          token = "string"
          next = "@pop"
        }
      }
      "stringDouble" rules {
        "[^\"]+".token("string.double")
        "\"\"".token("string.double")
        "\"".action {
          token = "string.double"
          next = "@pop"
        }
      }
      "complexIdentifiers" rules {
        "`".action {
          token = "identifier.quote"
          next = "@quotedIdentifier"
        }
      }
      "quotedIdentifier" rules {
        "[^`]+".token("identifier")
        "``".token("identifier")
        "`".action {
          token = "identifier.quote"
          next = "@pop"
        }
      }
      "scopes" rules {
      }
    }
  }
}





© 2015 - 2024 Weber Informatics LLC | Privacy Policy