{
"$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
"name": "lean",
"word": "_identifier",
"rules": {
"module": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "prelude"
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "import"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_command"
}
}
]
},
"prelude": {
"type": "STRING",
"value": "prelude"
},
"import": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "import"
},
{
"type": "FIELD",
"name": "module",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
},
"parameters": {
"type": "SEQ",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "SYMBOL",
"name": "hole"
},
{
"type": "SYMBOL",
"name": "_bracketed_binder"
},
{
"type": "SYMBOL",
"name": "anonymous_constructor"
}
]
}
}
]
},
"_expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "apply"
},
{
"type": "SYMBOL",
"name": "comparison"
},
{
"type": "SYMBOL",
"name": "let"
},
{
"type": "SYMBOL",
"name": "tactics"
},
{
"type": "SYMBOL",
"name": "binary_expression"
},
{
"type": "SYMBOL",
"name": "neg"
},
{
"type": "SYMBOL",
"name": "quoted_tactic"
},
{
"type": "SYMBOL",
"name": "fun"
},
{
"type": "SYMBOL",
"name": "_term"
},
{
"type": "SYMBOL",
"name": "do"
},
{
"type": "SYMBOL",
"name": "unless"
}
]
},
"let": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "let"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "parameters",
"content": {
"type": "SYMBOL",
"name": "parameters"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ":="
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "STRING",
"value": ";"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "BLANK"
}
]
}
]
}
},
"_do_seq": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_do_element"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "SYMBOL",
"name": "_do_element"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "BLANK"
}
]
}
]
}
},
"do": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "do"
},
{
"type": "SYMBOL",
"name": "_do_seq"
}
]
}
},
"conditional_when": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "if"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "then"
},
{
"type": "SYMBOL",
"name": "_do_element"
}
]
}
},
"for_in": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "for"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "anonymous_constructor"
}
]
},
{
"type": "STRING",
"value": "in"
},
{
"type": "FIELD",
"name": "iterable",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "do"
}
}
]
},
"assign": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ":="
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
},
"let_mut": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "let"
},
{
"type": "STRING",
"value": "mut"
},
{
"type": "SYMBOL",
"name": "parameters"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_left_arrow"
},
{
"type": "STRING",
"value": ":="
}
]
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
},
"let_bind": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "let"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "SYMBOL",
"name": "_left_arrow"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
},
"unless": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "unless"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "do"
}
]
},
"try": {
"type": "PREC_LEFT",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "try"
},
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_do_element"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "SYMBOL",
"name": "_do_element"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "catch"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "finally"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SYMBOL",
"name": "finally"
}
]
}
]
}
},
"catch": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "catch"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "=>"
},
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_do_element"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "SYMBOL",
"name": "_do_element"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "BLANK"
}
]
}
]
}
]
}
},
"finally": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "finally"
},
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_do_element"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "SYMBOL",
"name": "_do_element"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "BLANK"
}
]
}
]
}
]
}
},
"fun": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "fun"
},
{
"type": "STRING",
"value": "λ"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "parameters"
},
{
"type": "STRING",
"value": "=>"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "|"
},
{
"type": "FIELD",
"name": "lhs",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
}
]
}
},
{
"type": "STRING",
"value": "=>"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
}
]
}
]
}
},
"apply": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_apply"
},
{
"type": "SYMBOL",
"name": "_dollar"
}
]
},
"_apply": {
"type": "PREC",
"value": -1,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "number"
},
{
"type": "SYMBOL",
"name": "float"
},
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "char"
},
{
"type": "SYMBOL",
"name": "hole"
},
{
"type": "SYMBOL",
"name": "synthetic_hole"
},
{
"type": "SYMBOL",
"name": "sorry"
},
{
"type": "SYMBOL",
"name": "cdot"
},
{
"type": "SYMBOL",
"name": "parenthesized"
},
{
"type": "SYMBOL",
"name": "anonymous_constructor"
},
{
"type": "SYMBOL",
"name": "structure_instance"
},
{
"type": "SYMBOL",
"name": "explicit"
},
{
"type": "SYMBOL",
"name": "forall"
},
{
"type": "SYMBOL",
"name": "true"
},
{
"type": "SYMBOL",
"name": "false"
},
{
"type": "SYMBOL",
"name": "borrowed"
},
{
"type": "SYMBOL",
"name": "quoted_name"
},
{
"type": "SYMBOL",
"name": "double_quoted_name"
},
{
"type": "SYMBOL",
"name": "have"
},
{
"type": "SYMBOL",
"name": "proj"
},
{
"type": "SYMBOL",
"name": "arrow"
},
{
"type": "SYMBOL",
"name": "_do_term"
},
{
"type": "SYMBOL",
"name": "_command_term"
},
{
"type": "SYMBOL",
"name": "_notation_term"
},
{
"type": "SYMBOL",
"name": "_notation_extra_term"
},
{
"type": "SYMBOL",
"name": "array"
},
{
"type": "SYMBOL",
"name": "subarray"
},
{
"type": "SYMBOL",
"name": "range"
},
{
"type": "SYMBOL",
"name": "interpolated_string"
}
]
}
},
{
"type": "FIELD",
"name": "arguments",
"content": {
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "_argument"
}
}
}
]
}
},
"_dollar": {
"type": "PREC_RIGHT",
"value": -5,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "STRING",
"value": "$"
},
{
"type": "FIELD",
"name": "argument",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
"neg": {
"type": "PREC",
"value": 1000,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "-"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
"binary_expression": {
"type": "CHOICE",
"members": [
{
"type": "PREC_RIGHT",
"value": 20,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "^"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 18,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "*"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 18,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "/"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 18,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "%"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 17,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "+"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 17,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "-"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_RIGHT",
"value": 17,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "∘"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "∧"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "∨"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "/\\"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "\\/"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "↔"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 14,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "||"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 15,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "&&"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 16,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "=="
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "++"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "::"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "|>"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "|>."
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_RIGHT",
"value": -5,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "<|"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "<|>"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": ">>"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": ">>="
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "<*>"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "<*"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "*>"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "<$>"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": -3,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": -3,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "≠"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
}
]
},
"comparison": {
"type": "PREC_LEFT",
"value": -2,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "<"
},
{
"type": "STRING",
"value": ">"
},
{
"type": "STRING",
"value": "≤"
},
{
"type": "STRING",
"value": "≥"
},
{
"type": "STRING",
"value": "<="
},
{
"type": "STRING",
"value": ">="
}
]
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
"comment": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "--"
},
{
"type": "PATTERN",
"value": ".*"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "/-"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^-]"
},
{
"type": "PATTERN",
"value": "-[^/]"
}
]
}
},
{
"type": "STRING",
"value": "-/"
}
]
}
]
}
},
"_identifier": {
"type": "PATTERN",
"value": "[_a-zA-ZͰ-ϿĀ-ſ\\U0001D400-\\U0001D7FF][_`'`a-zA-Z0-9Ͱ-ϿĀ-ſ∇!?\\u2070-\\u209F\\U0001D400-\\U0001D7FF]*"
},
"_escaped_identifier": {
"type": "PATTERN",
"value": "«[^»]*»"
},
"_attribute": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_simple_attribute"
},
{
"type": "SYMBOL",
"name": "_extern_attribute"
}
]
},
"_simple_attribute": {
"type": "FIELD",
"name": "name",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "BLANK"
}
]
}
]
}
},
"_extern_entry": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "inline"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "extern",
"content": {
"type": "SYMBOL",
"name": "string"
}
}
]
},
"_extern_attribute": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "extern"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "number"
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_extern_entry"
}
}
]
},
"_visibility": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "private"
},
{
"type": "STRING",
"value": "protected"
}
]
},
"_decl_modifiers": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "attributes"
},
{
"type": "CHOICE",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "noncomputable"
},
{
"type": "STRING",
"value": "partial"
},
{
"type": "SYMBOL",
"name": "_visibility"
},
{
"type": "STRING",
"value": "unsafe"
}
]
}
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attributes"
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "noncomputable"
},
{
"type": "STRING",
"value": "partial"
},
{
"type": "SYMBOL",
"name": "_visibility"
},
{
"type": "STRING",
"value": "unsafe"
}
]
}
}
]
}
]
}
]
},
"_decl_id": {
"type": "FIELD",
"name": "name",
"content": {
"type": "PREC",
"value": 2,
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
},
"_decl_sig": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "REPEAT",
"content": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_simple_binder_without_type"
},
{
"type": "SYMBOL",
"name": "_bracketed_binder"
}
]
}
}
},
"named": true,
"value": "binders"
},
{
"type": "SYMBOL",
"name": "_type_spec"
}
]
},
"_opt_decl_sig": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "REPEAT1",
"content": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_simple_binder_without_type"
},
{
"type": "SYMBOL",
"name": "_bracketed_binder"
}
]
}
}
},
"named": true,
"value": "binders"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_type_spec"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "REPEAT1",
"content": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_simple_binder_without_type"
},
{
"type": "SYMBOL",
"name": "_bracketed_binder"
}
]
}
}
},
"named": true,
"value": "binders"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_type_spec"
}
]
}
]
}
},
"_decl_val_simple": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":="
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
"_decl_val_equations": {
"type": "SYMBOL",
"name": "_match_alts_where_decls"
},
"_decl_val": {
"type": "FIELD",
"name": "body",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_decl_val_simple"
},
{
"type": "SYMBOL",
"name": "_decl_val_equations"
},
{
"type": "SYMBOL",
"name": "_where_decls"
}
]
}
},
"abbrev": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "abbrev"
},
{
"type": "SYMBOL",
"name": "_decl_id"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_opt_decl_sig"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_decl_val"
}
]
},
"def": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "def"
},
{
"type": "SYMBOL",
"name": "_decl_id"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_opt_decl_sig"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_decl_val"
}
]
},
"theorem": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "theorem"
},
{
"type": "SYMBOL",
"name": "_decl_id"
},
{
"type": "SYMBOL",
"name": "_decl_sig"
},
{
"type": "SYMBOL",
"name": "_decl_val"
}
]
},
"constant": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "constant"
},
{
"type": "SYMBOL",
"name": "_decl_id"
},
{
"type": "SYMBOL",
"name": "_decl_sig"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_decl_val_simple"
},
{
"type": "BLANK"
}
]
}
]
},
"instance": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "instance"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_decl_id"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_decl_sig"
},
{
"type": "SYMBOL",
"name": "_decl_val"
}
]
},
"axiom": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "axiom"
},
{
"type": "SYMBOL",
"name": "_decl_id"
},
{
"type": "SYMBOL",
"name": "_decl_sig"
}
]
},
"example": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "example"
},
{
"type": "SYMBOL",
"name": "_decl_sig"
},
{
"type": "SYMBOL",
"name": "_decl_val"
}
]
},
"constructor": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "|"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_opt_decl_sig"
},
{
"type": "BLANK"
}
]
}
]
},
"_deriving": {
"type": "FIELD",
"name": "deriving",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "deriving"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
}
]
}
]
}
},
"inductive": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "inductive"
},
{
"type": "SYMBOL",
"name": "_decl_id"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_opt_decl_sig"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ":="
},
{
"type": "STRING",
"value": "where"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "constructors",
"content": {
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "constructor"
}
}
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_deriving"
},
{
"type": "BLANK"
}
]
}
]
},
"class_inductive": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "class"
},
{
"type": "STRING",
"value": "inductive"
},
{
"type": "SYMBOL",
"name": "_decl_id"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_opt_decl_sig"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ":="
},
{
"type": "STRING",
"value": "where"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "constructors",
"content": {
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "constructor"
}
}
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_deriving"
},
{
"type": "BLANK"
}
]
}
]
},
"_struct_explicit_binder": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_opt_decl_sig"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_binder_default"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"_struct_implicit_binder": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "_decl_sig"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"_struct_instance_binder": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "_decl_sig"
}
},
{
"type": "STRING",
"value": "]"
}
]
},
"_struct_simple_binder": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_opt_decl_sig"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_binder_default"
},
{
"type": "BLANK"
}
]
}
]
}
},
"_struct_field": {
"type": "ALIAS",
"content": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_struct_explicit_binder"
},
"named": true,
"value": "explicit_binder"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_struct_implicit_binder"
},
"named": true,
"value": "implicit_binder"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_struct_instance_binder"
},
"named": true,
"value": "instance_binder"
},
{
"type": "SYMBOL",
"name": "_struct_simple_binder"
}
]
},
"named": true,
"value": "field"
},
"_struct_constructor": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "::"
}
]
},
"_extends": {
"type": "FIELD",
"name": "extends",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "extends"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
}
]
}
]
}
},
"structure": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "structure"
},
{
"type": "STRING",
"value": "class"
}
]
},
{
"type": "SYMBOL",
"name": "_decl_id"
},
{
"type": "ALIAS",
"content": {
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_bracketed_binder"
}
},
"named": true,
"value": "binders"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_extends"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_type_spec"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ":="
},
{
"type": "STRING",
"value": "where"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_struct_constructor"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "fields",
"content": {
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_struct_field"
}
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_deriving"
},
{
"type": "BLANK"
}
]
}
]
},
"declaration": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_decl_modifiers"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "abbrev"
},
{
"type": "SYMBOL",
"name": "def"
},
{
"type": "SYMBOL",
"name": "theorem"
},
{
"type": "SYMBOL",
"name": "constant"
},
{
"type": "SYMBOL",
"name": "instance"
},
{
"type": "SYMBOL",
"name": "axiom"
},
{
"type": "SYMBOL",
"name": "example"
},
{
"type": "SYMBOL",
"name": "inductive"
},
{
"type": "SYMBOL",
"name": "class_inductive"
},
{
"type": "SYMBOL",
"name": "structure"
}
]
}
]
},
"section": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "section"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_command"
}
}
},
{
"type": "STRING",
"value": "end"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "BLANK"
}
]
}
]
},
"namespace": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "namespace"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_command"
}
}
},
{
"type": "STRING",
"value": "end"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
"variable": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "variable"
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "_bracketed_binder"
}
}
]
},
"universe": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "universe"
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
},
"hash_command": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "#check"
},
{
"type": "STRING",
"value": "#check_failure"
},
{
"type": "STRING",
"value": "#eval"
},
{
"type": "STRING",
"value": "#print"
},
{
"type": "STRING",
"value": "#reduce"
}
]
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
"attribute": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "attribute"
},
{
"type": "STRING",
"value": "["
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_attribute"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "-"
},
{
"type": "SYMBOL",
"name": "_attribute"
}
]
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_attribute"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "-"
},
{
"type": "SYMBOL",
"name": "_attribute"
}
]
}
]
}
]
}
}
]
},
{
"type": "STRING",
"value": "]"
},
{
"type": "FIELD",
"name": "term",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
},
"export": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "export"
},
{
"type": "FIELD",
"name": "class",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "("
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ")"
}
]
},
"open": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "open"
},
{
"type": "REPEAT1",
"content": {
"type": "FIELD",
"name": "namespace",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "in"
},
{
"type": "SYMBOL",
"name": "_command"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"quoted": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "`("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_term"
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "_command"
}
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"_command_term": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "quoted"
}
]
},
"builtin_initialize": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_visibility"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "builtin_initialize"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "_type_spec"
},
{
"type": "SYMBOL",
"name": "_left_arrow"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_do_seq"
}
]
},
"_command": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "declaration"
},
{
"type": "SYMBOL",
"name": "section"
},
{
"type": "SYMBOL",
"name": "namespace"
},
{
"type": "SYMBOL",
"name": "variable"
},
{
"type": "SYMBOL",
"name": "universe"
},
{
"type": "SYMBOL",
"name": "hash_command"
},
{
"type": "SYMBOL",
"name": "attribute"
},
{
"type": "SYMBOL",
"name": "export"
},
{
"type": "SYMBOL",
"name": "open"
},
{
"type": "SYMBOL",
"name": "builtin_initialize"
},
{
"type": "SYMBOL",
"name": "mixfix"
},
{
"type": "SYMBOL",
"name": "notation"
},
{
"type": "SYMBOL",
"name": "macro_rules"
},
{
"type": "SYMBOL",
"name": "syntax"
},
{
"type": "SYMBOL",
"name": "macro"
},
{
"type": "SYMBOL",
"name": "elab"
}
]
},
"_precedence": {
"type": "SEQ",
"members": [
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": ":"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "number"
},
{
"type": "STRING",
"value": "max"
},
{
"type": "STRING",
"value": "arg"
},
{
"type": "STRING",
"value": "lead"
},
{
"type": "STRING",
"value": "min"
},
{
"type": "STRING",
"value": "min1"
}
]
}
]
},
"_syntax_cat": {
"type": "SYMBOL",
"name": "identifier"
},
"_syntax_atom": {
"type": "SYMBOL",
"name": "string"
},
"_syntax": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_syntax_cat"
},
{
"type": "SYMBOL",
"name": "_syntax_atom"
}
]
},
"mixfix": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_attr_kind"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "prefix"
},
{
"type": "STRING",
"value": "infix"
},
{
"type": "STRING",
"value": "infixl"
},
{
"type": "STRING",
"value": "infixr"
},
{
"type": "STRING",
"value": "postfix"
}
]
},
{
"type": "SYMBOL",
"name": "_precedence"
},
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "STRING",
"value": "=>"
},
{
"type": "SYMBOL",
"name": "_term"
}
]
},
"notation": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_attr_kind"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "notation"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "=>"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
"macro_rules": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_attr_kind"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "macro_rules"
},
{
"type": "SYMBOL",
"name": "_match_alts"
}
]
},
"syntax": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_attr_kind"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "syntax"
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "_syntax"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
"_macro_arg": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": ":"
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_syntax"
}
]
},
"_macro_tail_tactic": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": " : "
},
{
"type": "STRING",
"value": "tactic"
},
{
"type": "STRING",
"value": "=>"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "`("
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "_tactic"
}
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
"_macro_tail_command": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": " : "
},
{
"type": "STRING",
"value": "command"
},
{
"type": "STRING",
"value": "=>"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "`("
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "_command"
}
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
"_macro_tail_default": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": " : "
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "=>"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "`("
},
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_tactic"
},
{
"type": "SYMBOL",
"name": "_command"
}
]
}
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
"_macro_tail": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_macro_tail_tactic"
},
{
"type": "SYMBOL",
"name": "_macro_tail_command"
}
]
},
"macro": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_attr_kind"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "macro"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_precedence"
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "_macro_arg"
}
},
{
"type": "SYMBOL",
"name": "_macro_tail"
}
]
},
"_elab_arg": {
"type": "SYMBOL",
"name": "_macro_arg"
},
"_elab_tail": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<="
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "=>"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
"elab": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_attr_kind"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "elab"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_precedence"
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "_elab_arg"
}
},
{
"type": "SYMBOL",
"name": "_elab_tail"
}
]
},
"tactics": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "by"
},
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_tactic"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
},
{
"type": "SYMBOL",
"name": "_tactic"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
},
{
"type": "BLANK"
}
]
}
]
}
]
}
},
"apply_tactic": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "apply"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
"rewrite": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "rewrite"
},
{
"type": "STRING",
"value": "rw"
}
]
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
"term": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "exact"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
"simp": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "simp"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "extra",
"content": {
"type": "SYMBOL",
"name": "list"
}
},
{
"type": "BLANK"
}
]
}
]
}
},
"trivial": {
"type": "STRING",
"value": "trivial"
},
"intro": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "intro"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
"rfl": {
"type": "STRING",
"value": "rfl"
},
"_user_tactic": {
"type": "SYMBOL",
"name": "_expression"
},
"_tactic": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "apply_tactic"
},
{
"type": "SYMBOL",
"name": "rewrite"
},
{
"type": "SYMBOL",
"name": "simp"
},
{
"type": "SYMBOL",
"name": "term"
},
{
"type": "SYMBOL",
"name": "trivial"
},
{
"type": "SYMBOL",
"name": "intro"
},
{
"type": "SYMBOL",
"name": "rfl"
},
{
"type": "SYMBOL",
"name": "_user_tactic"
}
]
},
"quoted_char": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\\"
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "u[a-fA-F\\d]{4}"
},
{
"type": "PATTERN",
"value": "x[a-fA-F\\d]{2}"
},
{
"type": "PATTERN",
"value": "[\\\\\"'rnt]"
}
]
}
]
}
},
"_left_arrow": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "<-"
},
{
"type": "STRING",
"value": "←"
}
]
},
"do_return": {
"type": "PREC_LEFT",
"value": 1022,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "return"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "BLANK"
}
]
}
]
}
},
"_do_expression": {
"type": "SYMBOL",
"name": "_expression"
},
"_do_element": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_do_expression"
},
{
"type": "SYMBOL",
"name": "assign"
},
{
"type": "SYMBOL",
"name": "for_in"
},
{
"type": "SYMBOL",
"name": "let_bind"
},
{
"type": "SYMBOL",
"name": "let_mut"
},
{
"type": "SYMBOL",
"name": "do_return"
}
]
},
"identifier": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "."
}
},
{
"type": "SYMBOL",
"name": "_identifier"
}
]
}
}
]
},
{
"type": "SYMBOL",
"name": "_identifier"
},
{
"type": "SYMBOL",
"name": "_escaped_identifier"
}
]
},
"number": {
"type": "PATTERN",
"value": "\\d+"
},
"float": {
"type": "PATTERN",
"value": "\\d+\\.\\d*"
},
"string": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "quoted_char"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PREC",
"value": 1,
"content": {
"type": "PATTERN",
"value": "[^\"\\n\\\\]+"
}
}
}
]
}
},
{
"type": "STRING",
"value": "\""
}
]
},
"char": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "'"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "quoted_char"
},
{
"type": "PATTERN",
"value": "[^']"
}
]
},
{
"type": "STRING",
"value": "'"
}
]
},
"hole": {
"type": "STRING",
"value": "_"
},
"synthetic_hole": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "?"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "hole"
}
]
}
]
},
"sorry": {
"type": "STRING",
"value": "sorry"
},
"cdot": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "STRING",
"value": "·"
}
]
},
"type_ascription": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
},
"tuple_tail": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
}
]
}
]
},
"parenthesized": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "tuple_tail"
},
{
"type": "SYMBOL",
"name": "type_ascription"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"anonymous_constructor": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "⟨"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "⟩"
}
]
},
"_structure_instance_field": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ":="
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
},
"structure_instance": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "extends",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "with"
}
]
}
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_structure_instance_field"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_structure_instance_field"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_type_spec"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"_type_spec": {
"type": "FIELD",
"name": "type",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
"explicit": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "@"
},
{
"type": "PREC",
"value": 1024,
"content": {
"type": "SYMBOL",
"name": "_term"
}
}
]
},
"_binder_ident": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "hole"
}
]
},
"_binder_default": {
"type": "FIELD",
"name": "default",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":="
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
"explicit_binder": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "_binder_ident"
}
}
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_type_spec"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_binder_default"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"implicit_binder": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "_binder_ident"
}
}
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_type_spec"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"instance_binder": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ":"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "STRING",
"value": "]"
}
]
},
"_bracketed_binder": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "explicit_binder"
},
{
"type": "SYMBOL",
"name": "implicit_binder"
},
{
"type": "SYMBOL",
"name": "instance_binder"
}
]
},
"proj": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "term",
"content": {
"type": "PREC",
"value": 1022,
"content": {
"type": "SYMBOL",
"name": "_term"
}
}
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "."
}
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "number"
}
]
}
}
]
},
"arrow": {
"type": "PREC_RIGHT",
"value": 25,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_term"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "->"
},
{
"type": "STRING",
"value": "→"
}
]
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
"forall": {
"type": "PREC",
"value": -4,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "∀"
},
{
"type": "FIELD",
"name": "binders",
"content": {
"type": "ALIAS",
"content": {
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_simple_binder"
},
{
"type": "SYMBOL",
"name": "_bracketed_binder"
}
]
}
},
"named": true,
"value": "binders"
}
},
{
"type": "STRING",
"value": ","
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
"_simple_binder": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "_binder_ident"
}
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_type_spec"
},
{
"type": "BLANK"
}
]
}
]
},
"match_alt": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "|"
},
{
"type": "FIELD",
"name": "lhs",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
}
]
}
},
{
"type": "STRING",
"value": "=>"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
"_match_alts": {
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "match_alt"
}
},
"_match_discr": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": ":"
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
"true": {
"type": "STRING",
"value": "true"
},
"false": {
"type": "STRING",
"value": "false"
},
"match": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "match"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_match_discr"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ", "
},
{
"type": "SYMBOL",
"name": "_match_discr"
}
]
}
}
]
}
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_type_spec"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "STRING",
"value": "with"
},
{
"type": "FIELD",
"name": "patterns",
"content": {
"type": "SYMBOL",
"name": "_match_alts"
}
}
]
}
},
"borrowed": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "@&"
},
{
"type": "PREC",
"value": 1022,
"content": {
"type": "SYMBOL",
"name": "_term"
}
}
]
},
"quoted_name": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "`"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
"double_quoted_name": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "``"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
"_simple_binder_without_type": {
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "_binder_ident"
}
},
"_let_id_lhs": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "FIELD",
"name": "binders",
"content": {
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_simple_binder_without_type"
},
{
"type": "SYMBOL",
"name": "_bracketed_binder"
}
]
}
}
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_type_spec"
},
{
"type": "BLANK"
}
]
}
}
]
},
"_let_id_decl": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_let_id_lhs"
},
{
"type": "STRING",
"value": ":="
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
},
"_let_pattern_decl": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_term"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_type_spec"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ":="
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
"_let_equations_decl": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_let_id_lhs"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "_match_alts"
}
}
]
},
"_let_decl": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_let_id_decl"
},
{
"type": "SYMBOL",
"name": "_let_pattern_decl"
},
{
"type": "SYMBOL",
"name": "_let_equations_decl"
}
]
},
"_have_id_lhs": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "FIELD",
"name": "binders",
"content": {
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_simple_binder_without_type"
},
{
"type": "SYMBOL",
"name": "_bracketed_binder"
}
]
}
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "_type_spec"
}
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "FIELD",
"name": "binders",
"content": {
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_simple_binder_without_type"
},
{
"type": "SYMBOL",
"name": "_bracketed_binder"
}
]
}
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "_type_spec"
}
}
]
}
]
},
"_have_id_decl": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_have_id_lhs"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ":="
},
{
"type": "SYMBOL",
"name": "_term"
}
]
},
"_have_eqns_decl": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_have_id_lhs"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_match_alts"
}
]
},
"_have_decl": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_have_id_decl"
},
{
"type": "SYMBOL",
"name": "_let_pattern_decl"
},
{
"type": "SYMBOL",
"name": "_have_eqns_decl"
}
]
},
"have": {
"type": "PREC",
"value": 1022,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "have"
},
{
"type": "SYMBOL",
"name": "_have_decl"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_term"
}
]
}
},
"_attr_kind": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "scoped"
},
{
"type": "STRING",
"value": "local"
}
]
},
"_attr_instance": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_attr_kind"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_attribute"
}
]
},
"attributes": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "@["
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_attr_instance"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_attr_instance"
}
]
}
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"_let_rec_decl": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_let_decl"
}
]
},
"_where_decls": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "where"
},
{
"type": "REPEAT1",
"content": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_let_rec_decl"
},
"named": true,
"value": "where_decl"
}
]
}
}
]
},
"_match_alts_where_decls": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_match_alts"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_where_decls"
},
{
"type": "BLANK"
}
]
}
]
},
"named_argument": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ":="
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": ")"
}
]
},
"ellipsis": {
"type": "STRING",
"value": ".."
},
"_argument": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "named_argument"
},
{
"type": "SYMBOL",
"name": "ellipsis"
},
{
"type": "PREC",
"value": 1023,
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
},
"quoted_tactic": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "`(tactic|"
},
{
"type": "SYMBOL",
"name": "_tactic"
},
{
"type": "STRING",
"value": ")"
}
]
},
"_term": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "number"
},
{
"type": "SYMBOL",
"name": "float"
},
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "char"
},
{
"type": "SYMBOL",
"name": "hole"
},
{
"type": "SYMBOL",
"name": "synthetic_hole"
},
{
"type": "SYMBOL",
"name": "sorry"
},
{
"type": "SYMBOL",
"name": "cdot"
},
{
"type": "SYMBOL",
"name": "parenthesized"
},
{
"type": "SYMBOL",
"name": "anonymous_constructor"
},
{
"type": "SYMBOL",
"name": "structure_instance"
},
{
"type": "SYMBOL",
"name": "explicit"
},
{
"type": "SYMBOL",
"name": "forall"
},
{
"type": "SYMBOL",
"name": "true"
},
{
"type": "SYMBOL",
"name": "false"
},
{
"type": "SYMBOL",
"name": "match"
},
{
"type": "SYMBOL",
"name": "borrowed"
},
{
"type": "SYMBOL",
"name": "quoted_name"
},
{
"type": "SYMBOL",
"name": "double_quoted_name"
},
{
"type": "SYMBOL",
"name": "have"
},
{
"type": "SYMBOL",
"name": "proj"
},
{
"type": "SYMBOL",
"name": "arrow"
},
{
"type": "SYMBOL",
"name": "_do_term"
},
{
"type": "SYMBOL",
"name": "_command_term"
},
{
"type": "SYMBOL",
"name": "_notation_term"
},
{
"type": "SYMBOL",
"name": "_notation_extra_term"
},
{
"type": "SYMBOL",
"name": "array"
},
{
"type": "SYMBOL",
"name": "subarray"
},
{
"type": "SYMBOL",
"name": "range"
},
{
"type": "SYMBOL",
"name": "interpolated_string"
}
]
},
"lift_method": {
"type": "PREC",
"value": 10,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_left_arrow"
},
{
"type": "SYMBOL",
"name": "_term"
}
]
}
},
"_do_term": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "lift_method"
}
]
},
"product": {
"type": "PREC_RIGHT",
"value": 35,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_term"
},
{
"type": "STRING",
"value": "×"
},
{
"type": "SYMBOL",
"name": "_term"
}
]
}
},
"unary_expression": {
"type": "PREC",
"value": 1024,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "¬"
},
{
"type": "STRING",
"value": "!"
}
]
},
{
"type": "PREC",
"value": 40,
"content": {
"type": "SYMBOL",
"name": "_term"
}
}
]
}
},
"subtype": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "_term"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "//"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "}"
}
]
},
"list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"assumption_literal": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "‹"
},
{
"type": "SYMBOL",
"name": "_term"
},
{
"type": "STRING",
"value": "›"
}
]
},
"if_then_else": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "if"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "then"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "else"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
"_notation_term": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "product"
},
{
"type": "SYMBOL",
"name": "unary_expression"
},
{
"type": "SYMBOL",
"name": "subtype"
},
{
"type": "SYMBOL",
"name": "if_then_else"
},
{
"type": "SYMBOL",
"name": "list"
},
{
"type": "SYMBOL",
"name": "assumption_literal"
}
]
},
"exists": {
"type": "PREC",
"value": -4,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "∃"
},
{
"type": "FIELD",
"name": "binders",
"content": {
"type": "ALIAS",
"content": {
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_simple_binder"
},
{
"type": "SYMBOL",
"name": "_bracketed_binder"
}
]
}
},
"named": true,
"value": "binders"
}
},
{
"type": "STRING",
"value": ","
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
"_notation_extra_term": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "exists"
}
]
},
"array": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#["
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"subarray": {
"type": "PREC",
"value": 1024,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "term",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "["
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "start",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "stop",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "start",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "stop",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "BLANK"
}
]
}
]
}
]
},
{
"type": "STRING",
"value": "]"
}
]
}
},
"range": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "start",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "stop",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "step",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"interpolated_string": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "s!\""
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^\"]"
},
{
"type": "SYMBOL",
"name": "quoted_char"
},
{
"type": "SYMBOL",
"name": "interpolation"
}
]
}
},
{
"type": "STRING",
"value": "\""
}
]
},
"interpolation": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "}"
}
]
}
},
"extras": [
{
"type": "SYMBOL",
"name": "comment"
},
{
"type": "PATTERN",
"value": "\\s"
}
],
"conflicts": [
[
"_binder_ident",
"_term"
],
[
"_binder_ident",
"named_argument"
],
[
"_binder_ident",
"subtype"
],
[
"_binder_ident"
],
[
"_have_id_decl",
"_expression"
],
[
"_have_id_lhs",
"_term"
],
[
"_have_id_lhs"
],
[
"_let_id_lhs",
"_term"
],
[
"_let_id_lhs"
],
[
"_simple_binder"
],
[
"_user_tactic",
"quoted_tactic"
],
[
"assign",
"_term"
],
[
"identifier"
],
[
"instance_binder",
"_term"
],
[
"instance_binder",
"list"
],
[
"proj",
"_expression"
]
],
"precedences": [],
"externals": [
{
"type": "SYMBOL",
"name": "_newline"
}
],
"inline": [],
"supertypes": [],
"reserved": {}
}