{
  "about": "SQL lexer by Alexey Torgashin",
  "files": "*.sql;*.ddl;*.dml",
  "cmt_line": "--",
  "cmt_block_1": "/*",
  "cmt_block_2": "*/",
  "case_sens": false,
  "rules": {
    "cmt": {
      "regex": "--.*",
      "style": "Comment"
    },
    "cmt2": {
      "regex": "/\\*.*?\\*/",
      "style": "Comment"
    },
    "keyword": {
      "regex": "\\b(aggregate|all|alter|and|any|as|asc|begin|between|by|cascade|case|check|class|column|comment|commit|constraint|conversion|create|cross|database|default|delete|desc|distinct|domain|drop|else|end|exists|foreign|from|full|function|grant|group|having|ignore|in|index|inner|insert|into|is|join|key|language|left|like|limit|natural|not|null|on|operator|option|or|order|outer|primary|procedure|references|revoke|right|rollback|rule|schema|select|sequence|set|some|start|straight_join|table|tablespace|then|top|transaction|trigger|type|union|unique|update|user|values|view|when|where|with|work)\\b",
      "style": "IdKeyword"
    },
    "id_storage": {
      "regex": "\\b(bigint|bigserial|bit|bool|boolean|box|bytea|char|character|cidr|circle|date|datetime|decimal|enum|double|float|inet|int|integer|interval|line|longtext|lseg|macaddr|money|ntext|number|numeric|nvarchar|oid|path|point|polygon|precision|real|serial|smallint|sysdate|sysname|text|timestamp|tinyint|tinytext|var|varbinary|varchar|varying)\\b",
      "style": "Id2"
    },
    "id_func": {
      "regex": "\\b(avg|bitand|concatenate|convert|count|date_format|decode|lower|max|min|substr|substring|sum|timediff|translate|trim|upper|userenv)\\b",
      "style": "Id3"
    },
    "id_func2": {
      "regex": "\\b(current_(date|time(stamp)?|user)|(session|system)_user)\\b",
      "style": "Id3"
    },
    "id_alias": {
      "regex": "[a-z_]\\w*(?=\\.)",
      "style": "IdVar"
    },
    "id": {
      "regex": "[a-z_]\\w*",
      "style": "Id"
    },
    "id_brackets": {
      "regex": "\\[[\\w ]*?\\]",
      "style": "Id1"
    },
    "num": {
      "regex": "\\d+(\\.\\d+)?([eE][-\\+]?\\d+)?",
      "style": "Number"
    },
    "str": {
      "regex": "(['`\\\"]).*?\\1",
      "style": "String"
    },
    "symbol_long": {
      "regex": "!=|<>|\\^=|<=|>=|\\(\\+\\)|\\(\\-\\)",
      "style": "Symbol"
    },
    "symbol": {
      "regex": "[/,\\.;:\\(\\)=<>\\+\\-\\*\\|@~\\$\\^%\\#\\?!\\{\\}&]",
      "style": "Symbol"
    }
  }
}
