{
"$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
"name": "property_list",
"rules": {
"source_file": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_value"
},
{
"type": "BLANK"
}
]
},
"_value": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "array"
},
{
"type": "SYMBOL",
"name": "dictionary"
},
{
"type": "SYMBOL",
"name": "number"
},
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "data"
}
]
},
"array": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_value"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_value"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"dictionary": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "dictionary_entry"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"dictionary_entry": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "key",
"content": {
"type": "SYMBOL",
"name": "string"
}
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_value"
}
},
{
"type": "STRING",
"value": ";"
}
]
},
"string": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "quoted_string"
},
{
"type": "SYMBOL",
"name": "single_quoted_string"
},
{
"type": "SYMBOL",
"name": "unquoted_string"
}
]
},
"quoted_string": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "REPEAT",
"content": {
"type": "PREC",
"value": 1,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "escape_sequence"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PREC",
"value": 1,
"content": {
"type": "PATTERN",
"value": "[^\"\\\\]"
}
}
}
]
}
}
},
{
"type": "STRING",
"value": "\""
}
]
},
"single_quoted_string": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "'"
},
{
"type": "REPEAT",
"content": {
"type": "PREC",
"value": 1,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "escape_sequence"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PREC",
"value": 1,
"content": {
"type": "PATTERN",
"value": "[^'\\\\]"
}
}
}
]
}
}
},
{
"type": "STRING",
"value": "'"
}
]
},
"unquoted_string": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[a-zA-Z.\\/:_$+][a-zA-Z0-9\\-.\\/:_$+]*"
},
{
"type": "PATTERN",
"value": "[0-9]+[a-zA-Z\\-\\/:_$+][a-zA-Z0-9\\-.\\/:_$+]*"
}
]
}
},
"number": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "-?[0-9]+(?:\\.[0-9]+)?"
}
},
"escape_sequence": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\\"
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[\\\\abefnrtv]"
},
{
"type": "STRING",
"value": "\n"
},
{
"type": "PATTERN",
"value": "[0-7]{1,3}"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "U"
},
{
"type": "PATTERN",
"value": "[0-9A-Fa-f]{4}"
}
]
},
{
"type": "PATTERN",
"value": "."
}
]
}
]
}
},
"data": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "byte"
}
},
{
"type": "STRING",
"value": ">"
}
]
},
"byte": {
"type": "PATTERN",
"value": "[0-9A-Fa-f]{2}"
},
"line_comment": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "//"
},
{
"type": "PATTERN",
"value": "[^\\r\\n\\u2028\\u2029]*"
}
]
}
},
"block_comment": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "/*"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^*]"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "*"
},
{
"type": "PATTERN",
"value": "[^/]"
}
]
}
]
}
},
{
"type": "STRING",
"value": "*/"
}
]
}
}
},
"extras": [
{
"type": "SYMBOL",
"name": "block_comment"
},
{
"type": "SYMBOL",
"name": "line_comment"
},
{
"type": "PATTERN",
"value": "\\s"
},
{
"type": "PATTERN",
"value": "\\u2028"
},
{
"type": "PATTERN",
"value": "\\u2029"
}
],
"conflicts": [],
"precedences": [],
"externals": [],
"inline": [],
"supertypes": [],
"reserved": {}
}