tree-sitter-plpgsql/src/grammar.json

357 lines
7.0 KiB
JSON

{
"name": "plpgsql",
"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"
}
]
},
"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"
}
}
]
},
"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"
}
}
]
},
"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"
},
"_if_not_exists": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "keyword_if"
},
{
"type": "SYMBOL",
"name": "keyword_not"
},
{
"type": "SYMBOL",
"name": "keyword_exists"
}
]
},
"comment": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "--"
},
{
"type": "PATTERN",
"value": ".*\\n"
}
]
},
"marginalia": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "/*"
},
{
"type": "PATTERN",
"value": "[^*]*\\*+(?:[^/*][^*]*\\*+)*"
},
{
"type": "STRING",
"value": "/"
}
]
},
"identifier": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_identifier"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "SYMBOL",
"name": "_identifier"
},
{
"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": "comment"
},
{
"type": "SYMBOL",
"name": "marginalia"
}
],
"conflicts": [],
"precedences": [],
"externals": [],
"inline": [],
"supertypes": []
}