constructor()

in src/mode/PartiQLMode.tsx [6:104]


  constructor() {
    super();
    var keywords =
      "action|alter|and|any|are|as|asc|assertion|at|authorization|bag|begin|" +
      "between|bit_length|both|by|cascade|cascaded|case|cast|catalog|" +
      "character_length|char_length|check|clob|close|collate|collation|column|commit|connect|" +
      "connection|constraint|constraints|continue|convert|corresponding|create|cross|current|current_date|" +
      "current_time|current_timestamp|current_user|cursor|date_add|date_diff|day|deallocate|dec|" +
      "declare|default|deferrable|deferred|delete|desc|describe|descriptor|diagnostics|disconnect|distinct|" +
      "domain|drop|else|end|end-exec|escape|except|exception|exec|execute|exists|external|extract|" +
      "fetch|for|foreign|found|from|full|get|global|go|goto|grant|group|having|hour|identity|" +
      "immediate|in|index|indicator|initially|inner|input|insensitive|insert|intersect|interval|" +
      "into|is|isolation|join|key|language|leading|left|level|like|limit|list|local|lower|match|" +
      "minute|missing|module|month|names|national|natural|nchar|next|no|not|null|nullif|octet_length|" +
      "of|on|only|open|option|or|order|outer|output|overlaps|pad|partial|pivot|position|precision|prepare|" +
      "preserve|primary|prior|privileges|procedure|public|read|references|relative|remove|restrict|revoke|" +
      "right|rollback|rows|schema|scroll|second|section|select|session|session_user|sexp|size|smallint|some|" +
      "space|sql|sqlcode|sqlerror|sqlstate|string|struct|substring|symbol|system_user|table|temporary|then|" +
      "time|timezone_hour|timezone_minute|to|to_string|to_timestamp|trailing|transaction|translate|" +
      "translation|trim|tuple|txid|undrop|union|unique|unknown|unpivot|update|upper|usage|user|using|" +
      "utcnow|value|values|varying|view|when|whenever|where|with|work|write|year|zone|history";

    var builtinConstants = "true|false";

    var builtinFunctions =
      "avg|count|first|last|max|min|sum|" +
      "coalesce|ifnull|isnull|nvl|absolute|add|all|allocate";

    var dataTypes =
      "int|numeric|decimal|date|varchar|char|float|double|bit|set|timestamp|" +
      "real|blob|bool|boolean|integer|character";

    var keywordMapper = this.createKeywordMapper(
      {
        "support.function": builtinFunctions,
        keyword: keywords,
        "constant.language": builtinConstants,
        "storage.type": dataTypes,
      },
      "identifier",
      true
    );

    this.$rules = {
      start: [
        {
          token: "comment",
          regex: "--.*$",
        },
        {
          token: "comment",
          start: "/\\*",
          end: "\\*/",
        },
        {
          token: "string", // " string
          regex: '".*?"',
        },
        {
          token: "string", // ' string
          regex: "'.*?'",
        },
        {
          token: "string", // ` string (apache drill)
          regex: "`.*?`",
        },
        {
          token: "constant.numeric", // float
          regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b",
        },
        {
          token: keywordMapper,
          regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b",
        },
        {
          token: "keyword.operator",
          regex: "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=",
        },
        {
          token: "paren.lparen",
          regex: "[\\(]",
        },
        {
          token: "paren.rparen",
          regex: "[\\)]",
        },
        {
          token: "text",
          regex: "\\s+",
        },
        {
          token: "",
          start: "<<",
          end: ">>",
        },
      ],
    };
    this.normalizeRules();
  }