{
"$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
"name": "goal",
"rules": {
"S": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "E"
},
{
"type": "BLANK"
}
]
},
"E": {
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "e"
},
{
"type": "TOKEN",
"content": {
"type": "STRING",
"value": "\n"
}
},
{
"type": "TOKEN",
"content": {
"type": "STRING",
"value": ";"
}
}
]
}
},
"e": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "nve"
},
{
"type": "SYMBOL",
"name": "block"
},
{
"type": "SYMBOL",
"name": "v"
},
{
"type": "SYMBOL",
"name": "n"
},
{
"type": "SYMBOL",
"name": "te"
},
{
"type": "SYMBOL",
"name": "implicit"
}
]
}
},
"nve": {
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "n"
},
{
"type": "SYMBOL",
"name": "v"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "e"
},
{
"type": "BLANK"
}
]
}
]
}
},
"te": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "t"
},
{
"type": "SYMBOL",
"name": "e"
}
]
}
},
"t": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "n"
},
{
"type": "SYMBOL",
"name": "v"
}
]
}
},
"v": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "a"
},
{
"type": "SYMBOL",
"name": "V"
},
{
"type": "SYMBOL",
"name": "A"
}
]
},
"n": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "apply"
},
{
"type": "SYMBOL",
"name": "strand"
},
{
"type": "SYMBOL",
"name": "N"
},
{
"type": "SYMBOL",
"name": "a"
}
]
},
"N": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "atom"
},
{
"type": "SYMBOL",
"name": "group"
},
{
"type": "SYMBOL",
"name": "lambda"
}
]
},
"V": {
"type": "PATTERN",
"value": "::|[:+\\-*%!&|<>=~,^#_$?@.]"
},
"A": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "/"
},
{
"type": "STRING",
"value": "\\"
},
{
"type": "STRING",
"value": "'"
}
]
}
},
"a": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "V"
},
{
"type": "SYMBOL",
"name": "A"
}
]
},
"implicit": {
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "lambda"
},
{
"type": "SYMBOL",
"name": "e"
}
]
}
},
"atom": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "nil"
},
{
"type": "SYMBOL",
"name": "infinity"
},
{
"type": "SYMBOL",
"name": "binairy"
},
{
"type": "SYMBOL",
"name": "int"
},
{
"type": "SYMBOL",
"name": "number"
},
{
"type": "SYMBOL",
"name": "hex"
},
{
"type": "SYMBOL",
"name": "exponential"
},
{
"type": "SYMBOL",
"name": "duration"
},
{
"type": "SYMBOL",
"name": "name"
},
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "qq"
},
{
"type": "SYMBOL",
"name": "rq"
},
{
"type": "SYMBOL",
"name": "rx"
}
]
},
"strand": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "N"
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "N"
}
}
]
},
"block": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "E"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"apply": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "t"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "["
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "E"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"group": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "E"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"lambda": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "args"
},
{
"type": "SYMBOL",
"name": "E"
}
]
}
},
{
"type": "PREC",
"value": 2,
"content": {
"type": "SYMBOL",
"name": "E"
}
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"args": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "SYMBOL",
"name": "name"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "SYMBOL",
"name": "name"
}
]
}
},
{
"type": "STRING",
"value": "]"
}
]
},
"nil": {
"type": "PATTERN",
"value": "0[in]"
},
"infinity": {
"type": "PATTERN",
"value": "-?0w"
},
"string": {
"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": "\""
}
]
},
"qq": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "qq"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "/"
}
},
{
"type": "PATTERN",
"value": "[^/]*"
},
{
"type": "STRING",
"value": "/"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "qq"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "#"
}
},
{
"type": "PATTERN",
"value": "[^#]*"
},
{
"type": "STRING",
"value": "#"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "qq"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "`"
}
},
{
"type": "PATTERN",
"value": "[^`]*"
},
{
"type": "STRING",
"value": "`"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "qq"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "\""
}
},
{
"type": "PATTERN",
"value": "[^\"]*"
},
{
"type": "STRING",
"value": "\""
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "qq"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "'"
}
},
{
"type": "PATTERN",
"value": "[^']*"
},
{
"type": "STRING",
"value": "'"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "qq"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "%"
}
},
{
"type": "PATTERN",
"value": "[^%]*"
},
{
"type": "STRING",
"value": "%"
}
]
}
]
},
"rq": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "rq"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "/"
}
},
{
"type": "PATTERN",
"value": "[^/]*"
},
{
"type": "STRING",
"value": "/"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "rq"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "#"
}
},
{
"type": "PATTERN",
"value": "[^#]*"
},
{
"type": "STRING",
"value": "#"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "rq"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "`"
}
},
{
"type": "PATTERN",
"value": "[^`]*"
},
{
"type": "STRING",
"value": "`"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "rq"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "\""
}
},
{
"type": "PATTERN",
"value": "[^\"]*"
},
{
"type": "STRING",
"value": "\""
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "rq"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "'"
}
},
{
"type": "PATTERN",
"value": "[^']*"
},
{
"type": "STRING",
"value": "'"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "rq"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "%"
}
},
{
"type": "PATTERN",
"value": "[^%]*"
},
{
"type": "STRING",
"value": "%"
}
]
}
]
},
"rx": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "rx"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "/"
}
},
{
"type": "PATTERN",
"value": "[^/]*"
},
{
"type": "STRING",
"value": "/"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "rx"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "#"
}
},
{
"type": "PATTERN",
"value": "[^#]*"
},
{
"type": "STRING",
"value": "#"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "rx"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "`"
}
},
{
"type": "PATTERN",
"value": "[^`]*"
},
{
"type": "STRING",
"value": "`"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "rx"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "\""
}
},
{
"type": "PATTERN",
"value": "[^\"]*"
},
{
"type": "STRING",
"value": "\""
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "rx"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "'"
}
},
{
"type": "PATTERN",
"value": "[^']*"
},
{
"type": "STRING",
"value": "'"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "rx"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "%"
}
},
{
"type": "PATTERN",
"value": "[^%]*"
},
{
"type": "STRING",
"value": "%"
}
]
}
]
},
"binairy": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "0b[01]+"
}
},
"int": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "-?\\d+"
}
},
"number": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "-?\\d+\\.\\d+"
}
},
"hex": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "-?0x[\\da-f]+",
"flags": "i"
}
},
"exponential": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "-?\\d+e[+-]?\\d+",
"flags": "i"
}
},
"name": {
"type": "PATTERN",
"value": "[a-zA-Z_π][\\w_π]*"
},
"duration": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "-?(\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?[hms])+"
}
},
"inline_comment": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[\\t ]+\\/[^\\n]*"
}
},
"block_comment": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "\\/(?:\\n.*)*?\\n\\\\"
}
},
"line_comment": {
"type": "PATTERN",
"value": "\\/[^\\n]*"
}
},
"extras": [
{
"type": "PATTERN",
"value": "[\\t ]+"
},
{
"type": "SYMBOL",
"name": "inline_comment"
},
{
"type": "SYMBOL",
"name": "block_comment"
},
{
"type": "SYMBOL",
"name": "line_comment"
}
],
"conflicts": [
[
"n",
"strand"
],
[
"strand"
],
[
"atom",
"args"
],
[
"e",
"t"
],
[
"v",
"n"
],
[
"nve"
],
[
"v",
"a"
]
],
"precedences": [],
"externals": [],
"inline": [],
"supertypes": [
"atom",
"N",
"t",
"e"
],
"reserved": {}
}