tree-sitter-perga/src/grammar.json

735 lines
14 KiB
JSON
Raw Normal View History

2024-11-20 19:29:09 -08:00
{
"name": "perga",
"rules": {
"program": {
2024-12-06 15:25:45 -08:00
"type": "REPEAT1",
2024-11-20 19:29:09 -08:00
"content": {
2024-11-22 10:37:30 -08:00
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "definition"
},
{
"type": "SYMBOL",
"name": "preprocess"
},
{
"type": "SYMBOL",
"name": "axiom"
2024-12-06 15:25:45 -08:00
},
{
"type": "SYMBOL",
"name": "section"
},
{
"type": "SYMBOL",
"name": "variable"
2024-12-10 21:40:39 -08:00
},
{
"type": "SYMBOL",
"name": "fixity"
2024-11-22 10:37:30 -08:00
}
]
2024-11-20 19:29:09 -08:00
}
},
"identifier": {
"type": "PATTERN",
"value": "[a-zA-Z_]\\w*"
},
2024-12-10 21:40:39 -08:00
"symbol": {
"type": "PATTERN",
"value": "[!@#$%^&*-+=<>,./?\\[\\]{}\\\\|`~'\\\"∧∨⊙×≅]+"
},
2024-11-20 19:29:09 -08:00
"comment": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "--"
},
{
"type": "PATTERN",
"value": ".*"
}
]
}
},
2024-12-06 15:25:45 -08:00
"section": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "section"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "program"
},
{
"type": "STRING",
"value": "end"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
2024-12-10 21:40:39 -08:00
"precedence": {
"type": "PATTERN",
"value": "[0-9]+"
},
"fixity": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "infixl"
},
{
"type": "STRING",
"value": "infixr"
}
]
},
{
"type": "SYMBOL",
"name": "precedence"
},
{
"type": "SYMBOL",
"name": "symbol"
},
{
"type": "STRING",
"value": ";"
}
]
},
2024-12-10 23:39:53 -08:00
"variable_binding": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "symbol"
}
]
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "expr"
}
},
{
"type": "STRING",
"value": ")"
}
]
},
2024-12-06 15:25:45 -08:00
"variable": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "variable"
},
{
"type": "STRING",
"value": "hypothesis"
}
]
},
{
"type": "REPEAT1",
"content": {
2024-12-10 23:39:53 -08:00
"type": "SYMBOL",
"name": "variable_binding"
2024-12-06 15:25:45 -08:00
}
},
{
"type": "STRING",
"value": ";"
}
]
},
2024-11-20 19:29:09 -08:00
"param_block": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
2024-11-20 21:46:51 -08:00
"type": "FIELD",
"name": "param",
2024-11-20 19:29:09 -08:00
"content": {
2024-11-23 10:39:33 -08:00
"type": "REPEAT1",
2024-11-20 21:46:51 -08:00
"content": {
"type": "SYMBOL",
"name": "identifier"
}
2024-11-20 19:29:09 -08:00
}
},
{
"type": "STRING",
"value": ":"
},
{
2024-11-20 21:46:51 -08:00
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "expr"
}
2024-11-20 19:29:09 -08:00
},
{
"type": "STRING",
"value": ")"
}
]
},
"star": {
"type": "STRING",
2024-12-10 21:40:39 -08:00
"value": "★"
2024-11-20 19:29:09 -08:00
},
"square": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "□"
},
{
"type": "STRING",
"value": "[]"
}
]
},
2024-12-01 23:36:32 -08:00
"sort": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "star"
},
{
"type": "SYMBOL",
"name": "square"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "square"
},
{
"type": "PATTERN",
2024-12-02 20:40:38 -08:00
"value": "[0-9₀₁₂₃₄₅₆₇₈₉]+"
2024-12-01 23:36:32 -08:00
}
]
}
]
},
2024-11-20 19:29:09 -08:00
"labs": {
"type": "SEQ",
"members": [
{
2024-11-20 21:46:51 -08:00
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "λ"
},
{
"type": "STRING",
"value": "fun"
}
]
2024-11-20 19:29:09 -08:00
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "param_block"
}
},
2024-12-01 21:38:43 -08:00
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "ascription"
},
{
"type": "BLANK"
}
]
},
2024-11-20 19:29:09 -08:00
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "=>"
},
{
"type": "STRING",
"value": "⇒"
}
]
},
{
"type": "SYMBOL",
"name": "expr"
}
]
},
"pabs": {
"type": "SEQ",
"members": [
{
2024-11-20 21:46:51 -08:00
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "∏"
},
{
"type": "STRING",
"value": "forall"
}
]
2024-11-20 19:29:09 -08:00
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "param_block"
}
},
2024-12-01 21:38:43 -08:00
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "ascription"
},
{
"type": "BLANK"
}
]
},
2024-11-20 19:29:09 -08:00
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "expr"
}
]
},
2024-12-10 23:39:53 -08:00
"op_section": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "symbol"
},
{
"type": "STRING",
"value": ")"
}
]
},
2024-11-20 19:29:09 -08:00
"term": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
2024-12-01 23:36:32 -08:00
"name": "sort"
2024-11-20 19:29:09 -08:00
},
2024-12-10 23:39:53 -08:00
{
"type": "SYMBOL",
"name": "op_section"
},
2024-11-20 19:29:09 -08:00
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "expr"
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
2024-12-10 21:40:39 -08:00
"binex": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "app"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "symbol"
},
{
"type": "SYMBOL",
"name": "binex"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
2024-11-23 10:06:53 -08:00
"binding": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "identifier"
},
2024-11-23 10:39:33 -08:00
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "param_block"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "ascription"
},
{
"type": "BLANK"
}
]
},
2024-11-23 10:06:53 -08:00
{
"type": "STRING",
"value": ":="
},
{
"type": "SYMBOL",
"name": "expr"
},
{
"type": "STRING",
"value": ")"
}
]
},
"let": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "let"
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "binding"
}
},
{
"type": "STRING",
"value": "in"
},
{
"type": "SYMBOL",
"name": "expr"
},
{
"type": "STRING",
"value": "end"
}
]
},
2024-11-20 19:29:09 -08:00
"app": {
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "term"
}
},
"arrow": {
"type": "PREC_LEFT",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "app_term"
},
{
2024-12-10 21:40:39 -08:00
"type": "STRING",
"value": "→"
2024-11-20 19:29:09 -08:00
},
{
"type": "SYMBOL",
"name": "expr"
}
]
}
},
"app_term": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "labs"
},
{
"type": "SYMBOL",
"name": "pabs"
},
2024-11-23 10:06:53 -08:00
{
"type": "SYMBOL",
"name": "let"
},
2024-11-20 19:29:09 -08:00
{
"type": "SYMBOL",
2024-12-10 21:40:39 -08:00
"name": "binex"
2024-11-20 19:29:09 -08:00
}
]
},
"expr": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "app_term"
},
{
"type": "SYMBOL",
"name": "arrow"
}
]
},
"ascription": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
2024-11-20 21:46:51 -08:00
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "expr"
}
2024-11-20 19:29:09 -08:00
}
]
},
2024-12-01 21:38:43 -08:00
"axiom": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "axiom"
},
{
"type": "FIELD",
"name": "name",
"content": {
2024-12-10 21:40:39 -08:00
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "symbol"
}
]
2024-12-01 21:38:43 -08:00
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "param_block"
}
},
{
"type": "SYMBOL",
"name": "ascription"
},
{
"type": "STRING",
"value": ";"
}
]
},
2024-11-20 19:29:09 -08:00
"definition": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "def"
},
2024-11-20 19:29:09 -08:00
{
2024-11-20 21:46:51 -08:00
"type": "FIELD",
"name": "name",
"content": {
2024-12-10 21:40:39 -08:00
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "symbol"
}
]
2024-11-20 21:46:51 -08:00
}
2024-11-20 19:29:09 -08:00
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "param_block"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "ascription"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ":="
},
{
2024-12-10 21:40:39 -08:00
"type": "SYMBOL",
"name": "expr"
2024-11-20 19:29:09 -08:00
},
{
"type": "STRING",
"value": ";"
}
]
2024-11-22 10:37:30 -08:00
},
"preprocess": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "command"
},
{
"type": "SYMBOL",
"name": "post_command"
}
]
},
"post_command": {
"type": "PATTERN",
"value": ".+"
},
"command": {
"type": "STRING",
"value": "@include"
2024-11-20 19:29:09 -08:00
}
},
"extras": [
2024-11-21 13:14:46 -08:00
{
"type": "SYMBOL",
"name": "comment"
},
2024-11-20 19:29:09 -08:00
{
"type": "PATTERN",
"value": "\\s"
}
],
"conflicts": [],
"precedences": [],
"externals": [],
"inline": [],
"supertypes": []
}