tree-sitter-dune
Version:
Dune grammar for tree-sitter
406 lines (404 loc) • 8.9 kB
JSON
{
"name": "dune",
"rules": {
"configuration": {
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_value"
}
},
"_value": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "atom"
},
{
"type": "SYMBOL",
"name": "quoted_string"
},
{
"type": "SYMBOL",
"name": "block_string"
},
{
"type": "SYMBOL",
"name": "raw_string"
},
{
"type": "SYMBOL",
"name": "list"
}
]
},
"atom": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[^;()\"%\\x00-\\x20\\x7f-\\xff]"
}
},
{
"type": "STRING",
"value": "%"
}
]
}
},
{
"type": "SYMBOL",
"name": "variable"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[^;()\"%\\x00-\\x20\\x7f-\\xff]"
}
},
{
"type": "STRING",
"value": "%"
}
]
}
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_immediate_variable"
},
"named": true,
"value": "variable"
}
]
}
}
]
},
"quoted_string": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "escape_sequence"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_immediate_variable"
},
"named": true,
"value": "variable"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PREC",
"value": 1,
"content": {
"type": "PATTERN",
"value": "[^\\\\\"%]+"
}
}
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "%"
}
}
]
}
},
{
"type": "STRING",
"value": "\""
}
]
},
"block_string": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\"\\|"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "escape_sequence"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_immediate_variable"
},
"named": true,
"value": "variable"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PREC",
"value": 1,
"content": {
"type": "PATTERN",
"value": "[^\\\\\"%\\n\\r]+"
}
}
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "%"
}
}
]
}
}
]
},
"raw_string": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\"\\>"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PREC",
"value": 1,
"content": {
"type": "PATTERN",
"value": ".*"
}
}
}
]
},
"escape_sequence": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\\"
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "\\n\\s*"
},
{
"type": "STRING",
"value": "%{"
},
{
"type": "PATTERN",
"value": "[\\\\'\"ntbr]"
},
{
"type": "PATTERN",
"value": "[0-9][0-9][0-9]"
},
{
"type": "PATTERN",
"value": "x[A-Fa-f0-9][A-Fa-f0-9]"
}
]
}
]
}
},
"variable": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "%{"
},
{
"type": "SYMBOL",
"name": "_variable_trail"
}
]
},
"_immediate_variable": {
"type": "SEQ",
"members": [
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "%{"
}
},
{
"type": "SYMBOL",
"name": "_variable_trail"
}
]
},
"_variable_trail": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "variable_name"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "variable_value"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"variable_name": {
"type": "TOKEN",
"content": {
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[^;()\"\\x00-\\x20\\x7f-\\xff:{}]"
}
}
},
"variable_value": {
"type": "TOKEN",
"content": {
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^;()\"\\x00-\\x20\\x7f-\\xff:{}]"
},
{
"type": "STRING",
"value": ":"
}
]
}
}
},
"list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_value"
}
},
{
"type": "STRING",
"value": ")"
}
]
},
"comment": {
"type": "PATTERN",
"value": ";.*"
}
},
"extras": [
{
"type": "PATTERN",
"value": "\\s"
},
{
"type": "SYMBOL",
"name": "comment"
}
],
"conflicts": [],
"externals": [],
"inline": [
"_value",
"_variable_trail"
],
"supertypes": []
}