311 lines
5.9 KiB
JSON
311 lines
5.9 KiB
JSON
{
|
|
"$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
|
|
"name": "hemar",
|
|
"rules": {
|
|
"source_file": {
|
|
"type": "SEQ",
|
|
"members": [
|
|
{
|
|
"type": "REPEAT",
|
|
"content": {
|
|
"type": "SYMBOL",
|
|
"name": "element"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"element": {
|
|
"type": "CHOICE",
|
|
"members": [
|
|
{
|
|
"type": "SYMBOL",
|
|
"name": "interpolation"
|
|
},
|
|
{
|
|
"type": "SYMBOL",
|
|
"name": "segment"
|
|
},
|
|
{
|
|
"type": "SYMBOL",
|
|
"name": "zalupa"
|
|
},
|
|
{
|
|
"type": "SYMBOL",
|
|
"name": "actual_bracket"
|
|
},
|
|
{
|
|
"type": "SYMBOL",
|
|
"name": "include"
|
|
}
|
|
]
|
|
},
|
|
"interpolation": {
|
|
"type": "SEQ",
|
|
"members": [
|
|
{
|
|
"type": "STRING",
|
|
"value": "{["
|
|
},
|
|
{
|
|
"type": "SYMBOL",
|
|
"name": "path"
|
|
},
|
|
{
|
|
"type": "STRING",
|
|
"value": "]}"
|
|
}
|
|
]
|
|
},
|
|
"segment": {
|
|
"type": "SEQ",
|
|
"members": [
|
|
{
|
|
"type": "SYMBOL",
|
|
"name": "for"
|
|
},
|
|
{
|
|
"type": "REPEAT",
|
|
"content": {
|
|
"type": "SYMBOL",
|
|
"name": "element"
|
|
}
|
|
},
|
|
{
|
|
"type": "SYMBOL",
|
|
"name": "done"
|
|
}
|
|
]
|
|
},
|
|
"for": {
|
|
"type": "SEQ",
|
|
"members": [
|
|
{
|
|
"type": "STRING",
|
|
"value": "{["
|
|
},
|
|
{
|
|
"type": "STRING",
|
|
"value": "for"
|
|
},
|
|
{
|
|
"type": "SYMBOL",
|
|
"name": "string"
|
|
},
|
|
{
|
|
"type": "STRING",
|
|
"value": "in"
|
|
},
|
|
{
|
|
"type": "SYMBOL",
|
|
"name": "path"
|
|
},
|
|
{
|
|
"type": "STRING",
|
|
"value": "]}"
|
|
}
|
|
]
|
|
},
|
|
"done": {
|
|
"type": "SEQ",
|
|
"members": [
|
|
{
|
|
"type": "STRING",
|
|
"value": "{["
|
|
},
|
|
{
|
|
"type": "STRING",
|
|
"value": "done"
|
|
},
|
|
{
|
|
"type": "STRING",
|
|
"value": "]}"
|
|
}
|
|
]
|
|
},
|
|
"actual_bracket": {
|
|
"type": "SEQ",
|
|
"members": [
|
|
{
|
|
"type": "STRING",
|
|
"value": "{["
|
|
},
|
|
{
|
|
"type": "STRING",
|
|
"value": "{["
|
|
},
|
|
{
|
|
"type": "STRING",
|
|
"value": "]}"
|
|
}
|
|
]
|
|
},
|
|
"include": {
|
|
"type": "SEQ",
|
|
"members": [
|
|
{
|
|
"type": "STRING",
|
|
"value": "{["
|
|
},
|
|
{
|
|
"type": "STRING",
|
|
"value": "include"
|
|
},
|
|
{
|
|
"type": "SYMBOL",
|
|
"name": "path"
|
|
},
|
|
{
|
|
"type": "STRING",
|
|
"value": "]}"
|
|
}
|
|
]
|
|
},
|
|
"path": {
|
|
"type": "CHOICE",
|
|
"members": [
|
|
{
|
|
"type": "STRING",
|
|
"value": "."
|
|
},
|
|
{
|
|
"type": "SEQ",
|
|
"members": [
|
|
{
|
|
"type": "CHOICE",
|
|
"members": [
|
|
{
|
|
"type": "SYMBOL",
|
|
"name": "string"
|
|
},
|
|
{
|
|
"type": "SYMBOL",
|
|
"name": "index"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "REPEAT",
|
|
"content": {
|
|
"type": "SEQ",
|
|
"members": [
|
|
{
|
|
"type": "STRING",
|
|
"value": "."
|
|
},
|
|
{
|
|
"type": "CHOICE",
|
|
"members": [
|
|
{
|
|
"type": "SYMBOL",
|
|
"name": "string"
|
|
},
|
|
{
|
|
"type": "SYMBOL",
|
|
"name": "index"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"index": {
|
|
"type": "SEQ",
|
|
"members": [
|
|
{
|
|
"type": "STRING",
|
|
"value": "["
|
|
},
|
|
{
|
|
"type": "FIELD",
|
|
"name": "value",
|
|
"content": {
|
|
"type": "SYMBOL",
|
|
"name": "integer_index"
|
|
}
|
|
},
|
|
{
|
|
"type": "STRING",
|
|
"value": "]"
|
|
}
|
|
]
|
|
},
|
|
"integer_index": {
|
|
"type": "TOKEN",
|
|
"content": {
|
|
"type": "CHOICE",
|
|
"members": [
|
|
{
|
|
"type": "PATTERN",
|
|
"value": "\\d"
|
|
},
|
|
{
|
|
"type": "PATTERN",
|
|
"value": "[1-9]\\d*"
|
|
},
|
|
{
|
|
"type": "PATTERN",
|
|
"value": "-[1-9]"
|
|
},
|
|
{
|
|
"type": "PATTERN",
|
|
"value": "-[1-9]\\d*"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"string": {
|
|
"type": "CHOICE",
|
|
"members": [
|
|
{
|
|
"type": "TOKEN",
|
|
"content": {
|
|
"type": "PREC",
|
|
"value": -1,
|
|
"content": {
|
|
"type": "PATTERN",
|
|
"value": "[^]\\[{} \\n\\t\\r.\\\\\"]+"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "TOKEN",
|
|
"content": {
|
|
"type": "PREC",
|
|
"value": -1,
|
|
"content": {
|
|
"type": "PATTERN",
|
|
"value": "\"([^\"]|\"\")*\""
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"zalupa": {
|
|
"type": "TOKEN",
|
|
"content": {
|
|
"type": "PREC",
|
|
"value": -1,
|
|
"content": {
|
|
"type": "PATTERN",
|
|
"value": "(?:\\{[^\\[]|[^{])+"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"extras": [
|
|
{
|
|
"type": "PATTERN",
|
|
"value": "\\s"
|
|
}
|
|
],
|
|
"conflicts": [],
|
|
"precedences": [],
|
|
"externals": [],
|
|
"inline": [],
|
|
"supertypes": [],
|
|
"reserved": {}
|
|
} |