tree-sitter-alv
Version:
tree-sitter grammar for the alv livecoding langauge
451 lines (449 loc) • 9.28 kB
JSON
{
"name": "alv",
"rules": {
"source_file": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_sp"
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "_sp"
}
]
}
}
]
},
"_wc": {
"type": "PATTERN",
"value": "[ \\t\\r\\n]"
},
"_sp": {
"type": "SEQ",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "comment"
},
{
"type": "SYMBOL",
"name": "_wc"
}
]
}
}
]
},
"_comment_contents": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_comment_contents"
},
{
"type": "PATTERN",
"value": "[^)]"
}
]
}
},
{
"type": "STRING",
"value": ")"
}
]
},
"comment": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#"
},
{
"type": "SYMBOL",
"name": "_comment_contents"
}
]
},
"_first": {
"type": "PATTERN",
"value": "[a-zA-Z-_+*\\/\\.=~!?%]"
},
"_digit": {
"type": "PATTERN",
"value": "[0-9]"
},
"_int": {
"type": "PREC",
"value": 2,
"content": {
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "_digit"
}
}
},
"_float": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "_digit"
}
},
{
"type": "STRING",
"value": "."
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_digit"
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_digit"
}
},
{
"type": "STRING",
"value": "."
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "_digit"
}
}
]
}
]
},
"escape_char": {
"type": "PATTERN",
"value": "\\\\[\"'\\\\]"
},
"sym": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_first"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_first"
},
{
"type": "SYMBOL",
"name": "_digit"
}
]
}
}
]
},
"num": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "-"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_float"
},
{
"type": "SYMBOL",
"name": "_int"
}
]
}
]
},
"str": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "escape_char"
},
{
"type": "PATTERN",
"value": "[^\"]"
}
]
}
},
{
"type": "STRING",
"value": "\""
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "'"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "escape_char"
},
{
"type": "PATTERN",
"value": "[^']"
}
]
}
},
{
"type": "STRING",
"value": "'"
}
]
}
]
},
"_atom": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "sym"
},
{
"type": "SYMBOL",
"name": "num"
},
{
"type": "SYMBOL",
"name": "str"
}
]
},
"_expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_atom"
},
{
"type": "SYMBOL",
"name": "cell"
}
]
},
"tag": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "_digit"
}
},
{
"type": "STRING",
"value": "]"
}
]
},
"head": {
"type": "SYMBOL",
"name": "_expression"
},
"cell": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "tag"
},
{
"type": "BLANK"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_sp"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "head"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_sp"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_sp"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "STRING",
"value": ")"
}
]
}
},
"extras": [
{
"type": "PATTERN",
"value": "\\s"
}
],
"conflicts": [],
"precedences": [],
"externals": [],
"inline": [],
"supertypes": []
}