tree-sitter-plpgsql/src/grammar.json

1593 lines
35 KiB
JSON

{
"name": "psql",
"word": "_identifier",
"rules": {
"source_file": {
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "statement"
}
]
}
},
"statement": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_ddl_statement"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ";"
}
]
},
"_ddl_statement": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_create_statement"
}
]
},
"_create_statement": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "create_table"
}
]
},
"create_table": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "keyword_create"
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "keyword_temporary"
},
{
"type": "SYMBOL",
"name": "keyword_unlogged"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "keyword_table"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_if_not_exists"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "table_reference"
},
{
"type": "SYMBOL",
"name": "column_definitions"
}
]
},
"column_definitions": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "column_definition"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "column_definition"
}
]
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"column_definition": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "FIELD",
"name": "datatype",
"content": {
"type": "SYMBOL",
"name": "_type"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "column_constraint"
}
}
]
},
"column_constraint": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "keyword_constraint"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_not_null"
},
{
"type": "SYMBOL",
"name": "keyword_null"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "keyword_default"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "keyword_unique"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "keyword_nulls"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "keyword_not"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "keyword_distinct"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SYMBOL",
"name": "_primary_key"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "keyword_references"
},
{
"type": "SYMBOL",
"name": "table_reference"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "refcolumn",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_foreign_key_match"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_foreign_key_on_delete"
},
{
"type": "SYMBOL",
"name": "_foreign_key_on_update"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_foreign_key_on_update"
},
{
"type": "SYMBOL",
"name": "_foreign_key_on_delete"
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
}
]
}
]
},
"_foreign_key_match": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "keyword_match"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "keyword_full"
},
{
"type": "SYMBOL",
"name": "keyword_partial"
},
{
"type": "SYMBOL",
"name": "keyword_simple"
}
]
}
]
},
"_foreign_key_on_delete": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "keyword_on"
},
{
"type": "SYMBOL",
"name": "keyword_delete"
},
{
"type": "SYMBOL",
"name": "referencial_action"
}
]
},
"_foreign_key_on_update": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "keyword_on"
},
{
"type": "SYMBOL",
"name": "keyword_update"
},
{
"type": "SYMBOL",
"name": "referencial_action"
}
]
},
"referencial_action": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "keyword_no"
},
{
"type": "SYMBOL",
"name": "keyword_action"
}
]
},
{
"type": "SYMBOL",
"name": "keyword_restrict"
},
{
"type": "SYMBOL",
"name": "keyword_cascade"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "keyword_set"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "keyword_null"
},
{
"type": "SYMBOL",
"name": "keyword_default"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
}
]
}
]
},
"table_reference": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "schema",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "."
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
},
"_expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "literal"
}
]
},
"literal": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "number"
},
{
"type": "SYMBOL",
"name": "literal_string"
},
{
"type": "SYMBOL",
"name": "keyword_true"
},
{
"type": "SYMBOL",
"name": "keyword_false"
},
{
"type": "SYMBOL",
"name": "keyword_null"
}
]
},
"_type": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_type_numeric"
},
{
"type": "SYMBOL",
"name": "_type_character"
},
{
"type": "SYMBOL",
"name": "_type_datetime"
},
{
"type": "SYMBOL",
"name": "_type_geometric"
},
{
"type": "SYMBOL",
"name": "_type_net"
},
{
"type": "SYMBOL",
"name": "_type_bit_string"
},
{
"type": "SYMBOL",
"name": "_type_text_search"
},
{
"type": "SYMBOL",
"name": "keyword_money"
},
{
"type": "SYMBOL",
"name": "keyword_bytea"
},
{
"type": "SYMBOL",
"name": "keyword_boolean"
},
{
"type": "SYMBOL",
"name": "keyword_uuid"
},
{
"type": "SYMBOL",
"name": "keyword_xml"
}
]
},
"_type_numeric": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "keyword_smallint"
},
{
"type": "SYMBOL",
"name": "keyword_integer"
},
{
"type": "SYMBOL",
"name": "keyword_bigint"
},
{
"type": "SYMBOL",
"name": "keyword_real"
},
{
"type": "SYMBOL",
"name": "keyword_smallserial"
},
{
"type": "SYMBOL",
"name": "keyword_serial"
},
{
"type": "SYMBOL",
"name": "keyword_bigserial"
},
{
"type": "SYMBOL",
"name": "double"
},
{
"type": "SYMBOL",
"name": "numeric"
},
{
"type": "SYMBOL",
"name": "decimal"
}
]
},
"double": {
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "double|DOUBLE"
},
{
"type": "PATTERN",
"value": "precision|PRECISION"
}
]
},
"decimal": {
"type": "CHOICE",
"members": [
{
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "keyword_decimal"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "keyword_decimal"
},
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "precision",
"content": {
"type": "SYMBOL",
"name": "number"
}
},
{
"type": "STRING",
"value": ")"
}
]
}
]
}
},
{
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "keyword_decimal"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "keyword_decimal"
},
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "precision",
"content": {
"type": "SYMBOL",
"name": "number"
}
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "FIELD",
"name": "scale",
"content": {
"type": "SYMBOL",
"name": "number"
}
}
]
},
{
"type": "STRING",
"value": ")"
}
]
}
]
}
}
]
},
"numeric": {
"type": "CHOICE",
"members": [
{
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "keyword_numeric"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "keyword_numeric"
},
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "precision",
"content": {
"type": "SYMBOL",
"name": "number"
}
},
{
"type": "STRING",
"value": ")"
}
]
}
]
}
},
{
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "keyword_numeric"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "keyword_numeric"
},
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "precision",
"content": {
"type": "SYMBOL",
"name": "number"
}
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "FIELD",
"name": "scale",
"content": {
"type": "SYMBOL",
"name": "number"
}
}
]
},
{
"type": "STRING",
"value": ")"
}
]
}
]
}
}
]
},
"_type_character": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "keyword_text"
},
{
"type": "SYMBOL",
"name": "char"
},
{
"type": "SYMBOL",
"name": "varchar"
}
]
},
"char": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "keyword_char"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "keyword_char"
},
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "size",
"content": {
"type": "SYMBOL",
"name": "number"
}
},
{
"type": "STRING",
"value": ")"
}
]
}
]
}
},
"varchar": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "keyword_varchar"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "keyword_varchar"
},
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "size",
"content": {
"type": "SYMBOL",
"name": "number"
}
},
{
"type": "STRING",
"value": ")"
}
]
}
]
}
},
"_type_datetime": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "keyword_date"
},
{
"type": "SYMBOL",
"name": "keyword_datetime"
},
{
"type": "SYMBOL",
"name": "keyword_time"
},
{
"type": "SYMBOL",
"name": "keyword_timestamp"
},
{
"type": "SYMBOL",
"name": "keyword_timestamptz"
}
]
},
"_type_geometric": {
"type": "CHOICE",
"members": []
},
"_type_net": {
"type": "CHOICE",
"members": []
},
"_type_bit_string": {
"type": "CHOICE",
"members": []
},
"_type_text_search": {
"type": "CHOICE",
"members": []
},
"_type_json": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "keyword_json"
},
{
"type": "SYMBOL",
"name": "keyword_jsonb"
}
]
},
"_primary_key": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "keyword_primary"
},
{
"type": "SYMBOL",
"name": "keyword_key"
}
]
},
"_foreign_key": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "keyword_foreign"
},
{
"type": "SYMBOL",
"name": "keyword_key"
}
]
},
"_if_not_exists": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "keyword_if"
},
{
"type": "SYMBOL",
"name": "keyword_not"
},
{
"type": "SYMBOL",
"name": "keyword_exists"
}
]
},
"_not_null": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "keyword_not"
},
{
"type": "SYMBOL",
"name": "keyword_null"
}
]
},
"_without_time_zone": {
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "without|WITHOUT"
},
{
"type": "SYMBOL",
"name": "_keyword_time_zone"
}
]
},
"_with_time_zone": {
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "with|WITH"
},
{
"type": "SYMBOL",
"name": "_keyword_time_zone"
}
]
},
"_keyword_time_zone": {
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "time|TIME"
},
{
"type": "PATTERN",
"value": "zone|ZONE"
}
]
},
"keyword_create": {
"type": "PATTERN",
"value": "create|CREATE"
},
"keyword_table": {
"type": "PATTERN",
"value": "table|TABLE"
},
"keyword_temporary": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "temporary|TEMPORARY"
},
{
"type": "PATTERN",
"value": "temp|TEMP"
}
]
},
"keyword_unlogged": {
"type": "PATTERN",
"value": "unlogged|UNLOGGED"
},
"keyword_if": {
"type": "PATTERN",
"value": "if|IF"
},
"keyword_not": {
"type": "PATTERN",
"value": "not|NOT"
},
"keyword_exists": {
"type": "PATTERN",
"value": "exists|EXISTS"
},
"keyword_null": {
"type": "PATTERN",
"value": "null|NULL"
},
"keyword_constraint": {
"type": "PATTERN",
"value": "constraint|CONSTRAINT"
},
"keyword_default": {
"type": "PATTERN",
"value": "default|DEFAULT"
},
"keyword_true": {
"type": "PATTERN",
"value": "true|TRUE"
},
"keyword_false": {
"type": "PATTERN",
"value": "false|FALSE"
},
"keyword_nulls": {
"type": "PATTERN",
"value": "nulls|NULLS"
},
"keyword_distinct": {
"type": "PATTERN",
"value": "distinct|DISTINCT"
},
"keyword_unique": {
"type": "PATTERN",
"value": "unique|UNIQUE"
},
"keyword_primary": {
"type": "PATTERN",
"value": "primary|PRIMARY"
},
"keyword_foreign": {
"type": "PATTERN",
"value": "foreign|FOREIGN"
},
"keyword_key": {
"type": "PATTERN",
"value": "key|KEY"
},
"keyword_references": {
"type": "PATTERN",
"value": "references|REFERENCES"
},
"keyword_on": {
"type": "PATTERN",
"value": "on|ON"
},
"keyword_no": {
"type": "PATTERN",
"value": "no|NO"
},
"keyword_delete": {
"type": "PATTERN",
"value": "delete|DELETE"
},
"keyword_update": {
"type": "PATTERN",
"value": "update|UPDATE"
},
"keyword_match": {
"type": "PATTERN",
"value": "match|MATCH"
},
"keyword_full": {
"type": "PATTERN",
"value": "full|FULL"
},
"keyword_partial": {
"type": "PATTERN",
"value": "partial|PARTIAL"
},
"keyword_simple": {
"type": "PATTERN",
"value": "simple|SIMPLE"
},
"keyword_action": {
"type": "PATTERN",
"value": "action|ACTION"
},
"keyword_set": {
"type": "PATTERN",
"value": "set|SET"
},
"keyword_restrict": {
"type": "PATTERN",
"value": "restrict|RESTRICT"
},
"keyword_cascade": {
"type": "PATTERN",
"value": "cascade|CASCADE"
},
"keyword_xml": {
"type": "PATTERN",
"value": "xml|XML"
},
"keyword_uuid": {
"type": "PATTERN",
"value": "uuid|UUID"
},
"keyword_json": {
"type": "PATTERN",
"value": "json|JSON"
},
"keyword_jsonb": {
"type": "PATTERN",
"value": "jsonb|JSONB"
},
"keyword_boolean": {
"type": "PATTERN",
"value": "boolean|BOOLEAN"
},
"keyword_smallint": {
"type": "PATTERN",
"value": "smallint|SMALLINT"
},
"keyword_integer": {
"type": "PATTERN",
"value": "integer|INTEGER"
},
"keyword_bigint": {
"type": "PATTERN",
"value": "bigint|BIGINT"
},
"keyword_decimal": {
"type": "PATTERN",
"value": "decimal|DECIMAL"
},
"keyword_numeric": {
"type": "PATTERN",
"value": "numeric|NUMERIC"
},
"keyword_real": {
"type": "PATTERN",
"value": "real|REAL"
},
"keyword_smallserial": {
"type": "PATTERN",
"value": "smallserial|SMALLSERIAL"
},
"keyword_serial": {
"type": "PATTERN",
"value": "serial|SERIAL"
},
"keyword_bigserial": {
"type": "PATTERN",
"value": "bigserial|BIGSERIAL"
},
"keyword_money": {
"type": "PATTERN",
"value": "money|MONEY"
},
"keyword_text": {
"type": "PATTERN",
"value": "text|TEXT"
},
"keyword_char": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "character|CHARACTER"
},
{
"type": "PATTERN",
"value": "char|CHAR"
}
]
},
"keyword_varchar": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "varchar|VARCHAR"
},
{
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "character|CHARACTER"
}
]
}
]
},
"keyword_bytea": {
"type": "PATTERN",
"value": "bytea|BYTEA"
},
"keyword_date": {
"type": "PATTERN",
"value": "date|DATE"
},
"keyword_datetime": {
"type": "PATTERN",
"value": "datetime|DATETIME"
},
"keyword_time": {
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "time|TIME"
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_without_time_zone"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_with_time_zone"
}
]
}
]
},
"keyword_timestamp": {
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "timestamp|TIMESTAMP"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_without_time_zone"
},
{
"type": "BLANK"
}
]
}
]
},
"keyword_timestamptz": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "timestamptz|TIMESTAMPTZ"
},
{
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "timestamp|TIMESTAMP"
},
{
"type": "SYMBOL",
"name": "_with_time_zone"
}
]
}
]
},
"line_comment": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "--"
},
{
"type": "PATTERN",
"value": ".*\\n"
}
]
},
"block_comment": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "/*"
},
{
"type": "PATTERN",
"value": "[^*]*\\*+(?:[^/*][^*]*\\*+)*"
},
{
"type": "STRING",
"value": "/"
}
]
},
"literal_string": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "'"
},
{
"type": "PATTERN",
"value": "[^']*"
},
{
"type": "STRING",
"value": "'"
}
]
}
]
},
"number": {
"type": "PATTERN",
"value": "\\d+"
},
"identifier": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_identifier"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "PATTERN",
"value": "[^\"]+"
},
{
"type": "STRING",
"value": "\""
}
]
}
]
},
"_identifier": {
"type": "PATTERN",
"value": "([a-zA-Z_][0-9a-zA-Z_]*)"
}
},
"extras": [
{
"type": "PATTERN",
"value": "\\s\\n"
},
{
"type": "PATTERN",
"value": "\\s"
},
{
"type": "SYMBOL",
"name": "line_comment"
},
{
"type": "SYMBOL",
"name": "block_comment"
}
],
"conflicts": [
[
"keyword_char",
"keyword_varchar"
]
],
"precedences": [],
"externals": [],
"inline": [],
"supertypes": []
}