{
"name": "bend",
"word": "_normal_identifier",
"rules": {
"source_file": {
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_top_level_defs"
}
},
"_normal_identifier": {
"type": "PATTERN",
"value": "[a-zA-Z][A-Za-z0-9_\\-.]*"
},
"_top_level_identifier": {
"type": "PATTERN",
"value": "[a-zA-Z][A-Za-z0-9_\\-.]*(?:_[A-Za-z0-9_\\-.]+)*"
},
"_id": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_normal_identifier"
},
{
"type": "SYMBOL",
"name": "_top_level_identifier"
}
]
},
"identifier": {
"type": "PREC",
"value": 22,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "path"
},
{
"type": "STRING",
"value": "/"
}
]
}
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_id"
},
"named": true,
"value": "identifier"
}
}
]
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "_id"
}
}
]
}
},
"multiline_comment": {
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 101,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#{"
},
{
"type": "PATTERN",
"value": "([^#]|\\#[^}])*"
},
{
"type": "STRING",
"value": "#}"
}
]
}
}
},
"comment": {
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 100,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#"
},
{
"type": "PATTERN",
"value": "(\\\\+(.|\\r?\\n)|[^\\\\\\n])*"
}
]
}
}
},
"os_path": {
"type": "PATTERN",
"value": "[A-Za-z0-9.-\\/]+"
},
"hvm_code": {
"type": "PATTERN",
"value": ".*\\n"
},
"parameters": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_parameters"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"_parameters": {
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
"unscoped_var": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "$"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "identifier"
},
"named": false,
"value": "name"
}
]
},
"_literals": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "integer"
},
{
"type": "SYMBOL",
"name": "float"
},
{
"type": "SYMBOL",
"name": "character"
},
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "symbol"
}
]
},
"symbol": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "`"
},
{
"type": "PATTERN",
"value": "[a-zA-Z0-9+/]{0,4}"
},
{
"type": "STRING",
"value": "`"
}
]
}
},
"character": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "'"
},
{
"type": "PATTERN",
"value": "[^']+"
},
{
"type": "STRING",
"value": "'"
}
]
}
},
"string": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "REPEAT",
"content": {
"type": "PATTERN",
"value": "[^\"]"
}
},
{
"type": "STRING",
"value": "\""
}
]
}
},
"integer": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[+-]?([0-9]+_?)+"
},
{
"type": "PATTERN",
"value": "[+-]?(0x|0X)([A-Fa-f0-9]+_?)+"
},
{
"type": "PATTERN",
"value": "[+-]?(0b|0B)([0-1]+_?)+"
}
]
}
},
"float": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[+-]?([0-9]+_?)+\\.([0-9]+_?)+"
},
{
"type": "PATTERN",
"value": "[+-]?(0x|0X)([A-Fa-f0-9]+_?)+\\.([A-Fa-f0-9]+_?)+"
},
{
"type": "PATTERN",
"value": "[+-]?(0b|0B)([0-1]+_?)+\\.([0-1]+_?)+"
}
]
}
},
"imp_function_definition": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "def"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "parameters",
"content": {
"type": "SYMBOL",
"name": "parameters"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "body"
}
]
},
"imp_type_definition": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "type"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "_imp_type_def_body"
}
]
},
"_imp_type_def_body": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "imp_type_constructor"
}
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
},
"imp_type_constructor": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "imp_type_constructor_field"
},
{
"type": "BLANK"
}
]
}
]
},
"imp_type_constructor_field": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_type_constructor_field"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_type_constructor_field"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"_statement": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_simple_statements"
},
{
"type": "SYMBOL",
"name": "_compound_statement"
}
]
},
"body": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_statement"
}
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
},
"_simple_statements": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_simple_statement"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
},
"_simple_statement": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "return_statement"
},
{
"type": "SYMBOL",
"name": "assignment_statement"
},
{
"type": "SYMBOL",
"name": "ask_statement"
},
{
"type": "SYMBOL",
"name": "inplace_op_statement"
},
{
"type": "SYMBOL",
"name": "use_statement"
},
{
"type": "SYMBOL",
"name": "open_statement"
}
]
},
"open_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "open"
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "var",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
},
"return_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "return"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
"assignment_statement": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "pat",
"content": {
"type": "SYMBOL",
"name": "_assignment_pattern"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "="
}
]
},
{
"type": "FIELD",
"name": "val",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
},
"ask_statement": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "pat",
"content": {
"type": "SYMBOL",
"name": "_assignment_pattern"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "<-"
}
]
},
{
"type": "FIELD",
"name": "val",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
},
"_assignment_pattern": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "unscoped_var"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "imp_tuple"
},
"named": true,
"value": "tuple"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "imp_superposition"
},
"named": true,
"value": "superposition"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "imp_eraser"
},
"named": true,
"value": "eraser"
},
{
"type": "STRING",
"value": "_"
}
]
}
]
},
"inplace_op_statement": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "pat",
"content": {
"type": "SYMBOL",
"name": "_assignment_pattern"
}
},
{
"type": "FIELD",
"name": "op",
"content": {
"type": "SYMBOL",
"name": "_inplace_op"
}
},
{
"type": "FIELD",
"name": "val",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
},
"_inplace_op": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "+="
},
{
"type": "STRING",
"value": "-="
},
{
"type": "STRING",
"value": "*="
},
{
"type": "STRING",
"value": "/="
},
{
"type": "STRING",
"value": "&="
},
{
"type": "STRING",
"value": "|="
},
{
"type": "STRING",
"value": "^="
},
{
"type": "STRING",
"value": "@="
}
]
},
"use_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "use"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "assignment_statement"
},
"named": false,
"value": "value"
}
]
},
"_compound_statement": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "if_statement"
},
{
"type": "SYMBOL",
"name": "bend_statement"
},
{
"type": "SYMBOL",
"name": "fold_statement"
},
{
"type": "SYMBOL",
"name": "match_statement"
},
{
"type": "SYMBOL",
"name": "switch_statement"
},
{
"type": "SYMBOL",
"name": "with_statement"
},
{
"type": "SYMBOL",
"name": "local_def_statement"
}
]
},
"with_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "with"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "body"
}
]
},
"bend_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "bend"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_imp_args"
},
"named": true,
"value": "args"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "SYMBOL",
"name": "when_clause"
},
{
"type": "SYMBOL",
"name": "else_clause"
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
},
"when_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "when"
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "body"
}
]
},
"fold_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "fold"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_imp_arg"
},
"named": true,
"value": "arg"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "with_args"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ":"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_match_body"
},
"named": true,
"value": "body"
}
]
},
"with_args": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "with"
},
{
"type": "SYMBOL",
"name": "_imp_args_id"
}
]
},
"_match_body": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "match_case"
}
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
},
"match_case": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "case"
},
{
"type": "SYMBOL",
"name": "match_pattern"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "body"
}
]
},
"match_pattern": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "_"
}
]
},
"match_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "match"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_imp_arg"
},
"named": true,
"value": "arg"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "with_args"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ":"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_match_body"
},
"named": true,
"value": "body"
}
]
},
"switch_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "switch"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_imp_arg"
},
"named": true,
"value": "arg"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "with_args"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ":"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_switch_body"
},
"named": true,
"value": "body"
}
]
},
"_switch_body": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "switch_case"
}
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
},
"switch_case": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "case"
},
{
"type": "SYMBOL",
"name": "switch_pattern"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "body"
}
]
},
"switch_pattern": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "integer"
},
{
"type": "STRING",
"value": "_"
}
]
},
"if_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "if"
},
{
"type": "FIELD",
"name": "cond",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "body"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "elif_clause"
}
},
{
"type": "SYMBOL",
"name": "else_clause"
}
]
},
"elif_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "elif"
},
{
"type": "FIELD",
"name": "cond",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "body"
}
]
},
"else_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "else"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "body"
}
]
},
"local_def_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "def"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "FIELD",
"name": "parameters",
"content": {
"type": "SYMBOL",
"name": "parameters"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "body"
}
]
},
"expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "imp_lambda"
},
{
"type": "SYMBOL",
"name": "simple_expression"
}
]
},
"simple_expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "_literals"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "imp_list"
},
"named": true,
"value": "list"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "imp_tree_node"
},
"named": true,
"value": "tree_node"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "imp_tree_leaf"
},
"named": true,
"value": "tree_leaf"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "imp_tuple"
},
"named": true,
"value": "tuple"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "imp_constructor"
},
"named": true,
"value": "constructor"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "imp_map"
},
"named": true,
"value": "map"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "imp_superposition"
},
"named": true,
"value": "superposition"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "imp_eraser"
},
"named": true,
"value": "eraser"
},
{
"type": "SYMBOL",
"name": "list_comprehension"
},
{
"type": "SYMBOL",
"name": "unary_op"
},
{
"type": "SYMBOL",
"name": "binary_op"
},
{
"type": "SYMBOL",
"name": "comparison_op"
},
{
"type": "SYMBOL",
"name": "parenthesized_expression"
},
{
"type": "SYMBOL",
"name": "call_expression"
},
{
"type": "SYMBOL",
"name": "unscoped_var"
}
]
},
"imp_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": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"imp_tree_node": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "!["
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "STRING",
"value": "]"
}
]
},
"imp_tree_leaf": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "!"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
"imp_tuple": {
"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": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"imp_constructor": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "{"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_cons_pair"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_cons_pair"
}
]
}
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"_cons_pair": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "field",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
},
"imp_map": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_pair"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_pair"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"_pair": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "key",
"content": {
"type": "SYMBOL",
"name": "_literals"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
},
"imp_superposition": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT1",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "expression"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"imp_lambda": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "λ"
},
{
"type": "STRING",
"value": "lambda"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "REPEAT1",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "expression"
}
]
}
},
"named": true,
"value": "parameters"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
},
"imp_eraser": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "*"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "parenthesized_expression"
},
{
"type": "BLANK"
}
]
}
]
},
"call_expression": {
"type": "PREC",
"value": 22,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "arguments"
}
]
}
},
"arguments": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_imp_args"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"_imp_args": {
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_imp_arg"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_imp_arg"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
"_imp_args_id": {
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_imp_arg_id"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_imp_arg_id"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
"_imp_arg": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_imp_arg_bind"
},
"named": true,
"value": "arg_bind"
}
]
},
"_imp_arg_id": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "_"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_imp_arg_bind"
},
"named": true,
"value": "arg_bind"
}
]
},
"_imp_arg_bind": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "field",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "_"
}
]
}
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
},
"parenthesized_expression": {
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "STRING",
"value": ")"
}
]
}
},
"binary_op": {
"type": "CHOICE",
"members": [
{
"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": 19,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "STRING",
"value": "*"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 19,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "STRING",
"value": "/"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 19,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "STRING",
"value": "%"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
}
},
{
"type": "PREC_RIGHT",
"value": 21,
"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"
}
]
}
}
]
},
"unary_op": {
"type": "PREC",
"value": 20,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "-"
},
{
"type": "STRING",
"value": "+"
}
]
},
{
"type": "SYMBOL",
"name": "simple_expression"
}
]
}
},
"comparison_op": {
"type": "PREC_LEFT",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "simple_expression"
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "=="
},
{
"type": "STRING",
"value": "<"
},
{
"type": "STRING",
"value": ">="
},
{
"type": "STRING",
"value": ">"
},
{
"type": "STRING",
"value": "<="
},
{
"type": "STRING",
"value": "!="
}
]
},
{
"type": "SYMBOL",
"name": "simple_expression"
}
]
}
]
}
},
"list_comprehension": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "SYMBOL",
"name": "for_clause"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "if_clause"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"for_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "for"
},
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "in"
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "if_clause"
},
{
"type": "BLANK"
}
]
}
]
},
"if_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "if"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
"fun_function_definition": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_function_patterns"
},
{
"type": "STRING",
"value": "="
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_term"
},
"named": true,
"value": "body"
}
]
},
"_function_patterns": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_function_pattern"
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "SYMBOL",
"name": "_function_pattern"
}
]
},
"_function_pattern": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "pattern"
}
}
]
},
"pattern": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "integer"
},
{
"type": "SYMBOL",
"name": "character"
},
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_fun_superposition"
},
"named": true,
"value": "superposition"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_fun_tuple"
},
"named": true,
"value": "tuple"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_fun_list"
},
"named": true,
"value": "list"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_fun_eraser"
},
"named": true,
"value": "eraser"
},
{
"type": "SYMBOL",
"name": "unscoped_var"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "ALIAS",
"content": {
"type": "STRING",
"value": "_"
},
"named": true,
"value": "identifier"
},
{
"type": "SYMBOL",
"name": "other_pattern"
}
]
},
"other_pattern": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_function_pattern"
},
{
"type": "STRING",
"value": ")"
}
]
},
"fun_type_definition": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "type"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "_fun_type_body"
}
]
},
"_fun_type_body": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "fun_type_constructor"
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "SYMBOL",
"name": "fun_type_constructor"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "|"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "fun_type_constructor"
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "SYMBOL",
"name": "fun_type_constructor"
}
]
}
]
}
}
]
},
"fun_type_constructor": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "fun_type_constructor_fields"
},
{
"type": "BLANK"
}
]
}
]
},
"fun_type_constructor_fields": {
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "_type_constructor_field"
}
},
"_type_constructor_field": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "~"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
"_term": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_terms"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
},
"_terms": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_literals"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_fun_list"
},
"named": true,
"value": "list"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_fun_tree_node"
},
"named": true,
"value": "tree_node"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_fun_tree_leaf"
},
"named": true,
"value": "tree_leaf"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_fun_tuple"
},
"named": true,
"value": "tuple"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_fun_eraser"
},
"named": true,
"value": "eraser"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_fun_superposition"
},
"named": true,
"value": "superposition"
},
{
"type": "SYMBOL",
"name": "num_operator"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "unscoped_var"
},
{
"type": "SYMBOL",
"name": "use"
},
{
"type": "SYMBOL",
"name": "let_bind"
},
{
"type": "SYMBOL",
"name": "fun_application"
},
{
"type": "SYMBOL",
"name": "fun_lambda"
},
{
"type": "SYMBOL",
"name": "fun_match"
},
{
"type": "SYMBOL",
"name": "fun_fold"
},
{
"type": "SYMBOL",
"name": "fun_switch"
},
{
"type": "SYMBOL",
"name": "fun_if"
},
{
"type": "SYMBOL",
"name": "fun_bend"
},
{
"type": "SYMBOL",
"name": "fun_open"
},
{
"type": "SYMBOL",
"name": "fun_ask"
},
{
"type": "SYMBOL",
"name": "fun_with"
},
{
"type": "SYMBOL",
"name": "fun_local_def"
}
]
},
"fun_with": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "with"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_fun_with_body"
},
"named": true,
"value": "body"
}
]
},
"_fun_with_body": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "SYMBOL",
"name": "_terms"
},
{
"type": "STRING",
"value": "}"
}
]
},
"fun_ask": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "ask"
},
{
"type": "SYMBOL",
"name": "pattern"
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_terms"
},
"named": true,
"value": "body"
}
},
{
"type": "SYMBOL",
"name": "ask_next"
}
]
},
"ask_next": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_terms"
}
]
},
"fun_open": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "open"
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "FIELD",
"name": "variable",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_terms"
},
"named": true,
"value": "body"
}
]
},
"fun_bend": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "bend"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_fun_args"
},
"named": true,
"value": "args"
},
{
"type": "STRING",
"value": "{"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_fun_bend_when"
},
"named": true,
"value": "when_clause"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_fun_bend_else"
},
"named": true,
"value": "else_clause"
},
{
"type": "STRING",
"value": "}"
}
]
},
"_fun_bend_when": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "when"
},
{
"type": "SYMBOL",
"name": "_terms"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_terms"
},
"named": true,
"value": "body"
}
]
},
"_fun_bend_else": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "else"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_terms"
},
"named": true,
"value": "body"
}
]
},
"fun_if": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "if"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_terms"
}
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_fun_if_body"
},
"named": true,
"value": "body"
},
{
"type": "STRING",
"value": "else"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_fun_if_body"
},
"named": true,
"value": "else_clause"
}
]
},
"_fun_if_body": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_terms"
},
"named": true,
"value": "body"
},
{
"type": "STRING",
"value": "}"
}
]
},
"_fun_switch_pattern": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "_"
},
{
"type": "SYMBOL",
"name": "integer"
}
]
},
"fun_match": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "match"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_fun_arg"
},
"named": true,
"value": "arg"
},
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "fun_with_args"
},
"named": true,
"value": "with_args"
},
{
"type": "BLANK"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_fun_match_body"
},
"named": true,
"value": "body"
}
]
},
"_fun_match_body": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_fun_match_case"
},
"named": true,
"value": "match_case"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"_fun_match_case": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_fun_match_pattern"
},
"named": true,
"value": "match_pattern"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "_terms"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
}
]
},
"_fun_match_pattern": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "_"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_fun_eraser"
},
"named": true,
"value": "eraser"
}
]
},
"fun_with_args": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "with"
},
{
"type": "SYMBOL",
"name": "_fun_args_id"
}
]
},
"_fun_args": {
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_fun_arg"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_fun_arg"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
"_fun_args_id": {
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_fun_arg_id"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_fun_arg_id"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
"fun_fold": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "fold"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_fun_arg"
},
"named": true,
"value": "arg"
},
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "fun_with_args"
},
"named": true,
"value": "with_args"
},
{
"type": "BLANK"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_fun_match_body"
},
"named": true,
"value": "body"
}
]
},
"fun_switch": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "switch"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_fun_arg"
},
"named": true,
"value": "arg"
},
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "fun_with_args"
},
"named": true,
"value": "with_args"
},
{
"type": "BLANK"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_fun_switch_body"
},
"named": true,
"value": "body"
}
]
},
"_fun_switch_body": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_fun_switch_case"
},
"named": true,
"value": "switch_case"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"_fun_switch_case": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_fun_switch_pattern"
},
"named": true,
"value": "switch_pattern"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_terms"
},
{
"type": "SYMBOL",
"name": "switch_predecessor"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
}
]
},
"switch_predecessor": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "bind",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "_"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
},
{
"type": "STRING",
"value": "-"
},
{
"type": "SYMBOL",
"name": "integer"
}
]
},
"_fun_arg": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_terms"
},
"named": true,
"value": "term"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_fun_arg_bind"
},
"named": true,
"value": "arg_bind"
}
]
},
"_fun_arg_id": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "_"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_fun_arg_bind"
},
"named": true,
"value": "arg_bind"
}
]
},
"_fun_arg_bind": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "field",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "_"
}
]
}
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_terms"
}
}
]
},
"_fun_eraser": {
"type": "STRING",
"value": "*"
},
"_fun_superposition": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT1",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_terms"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"_fun_list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_terms"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
}
},
{
"type": "STRING",
"value": "]"
}
]
},
"_fun_tree_node": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "!["
},
{
"type": "SYMBOL",
"name": "_terms"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_terms"
},
{
"type": "STRING",
"value": "]"
}
]
},
"_fun_tree_leaf": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "!"
},
{
"type": "SYMBOL",
"name": "_terms"
}
]
},
"_fun_tuple": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_terms"
},
{
"type": "STRING",
"value": ","
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_terms"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_terms"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"use": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "use"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "use_value"
},
{
"type": "SYMBOL",
"name": "use_next"
}
]
},
"use_value": {
"type": "SYMBOL",
"name": "_terms"
},
"use_next": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_terms"
}
]
},
"let_bind": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "let"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_let_pattern"
},
"named": true,
"value": "pattern"
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "let_value"
},
{
"type": "SYMBOL",
"name": "let_next"
}
]
},
"let_value": {
"type": "SYMBOL",
"name": "_terms"
},
"let_next": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_term"
}
]
},
"_let_pattern": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "unscoped_var"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "imp_tuple"
},
"named": true,
"value": "tuple"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "imp_superposition"
},
"named": true,
"value": "superposition"
}
]
},
"fun_lambda": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "@"
},
{
"type": "STRING",
"value": "λ"
}
]
},
{
"type": "SYMBOL",
"name": "pattern"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_terms"
},
"named": true,
"value": "body"
}
]
},
"fun_application": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "_terms"
}
},
{
"type": "STRING",
"value": ")"
}
]
},
"fun_local_def": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "def"
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "fun_function_definition"
}
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_terms"
},
"named": true,
"value": "nxt"
}
]
},
"operator": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "+"
},
{
"type": "STRING",
"value": "-"
},
{
"type": "STRING",
"value": "**"
},
{
"type": "STRING",
"value": "*"
},
{
"type": "STRING",
"value": "/"
},
{
"type": "STRING",
"value": "%"
},
{
"type": "STRING",
"value": "<<"
},
{
"type": "STRING",
"value": ">>"
},
{
"type": "STRING",
"value": "<="
},
{
"type": "STRING",
"value": ">="
},
{
"type": "STRING",
"value": "<"
},
{
"type": "STRING",
"value": ">"
},
{
"type": "STRING",
"value": "=="
},
{
"type": "STRING",
"value": "!="
},
{
"type": "STRING",
"value": "&"
},
{
"type": "STRING",
"value": "|"
},
{
"type": "STRING",
"value": "^"
}
]
},
"num_operator": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "operator"
},
{
"type": "SYMBOL",
"name": "_terms"
},
{
"type": "SYMBOL",
"name": "_terms"
},
{
"type": "STRING",
"value": ")"
}
]
},
"_top_level_defs": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_import"
},
{
"type": "SYMBOL",
"name": "_func_def"
},
{
"type": "SYMBOL",
"name": "object_definition"
},
{
"type": "SYMBOL",
"name": "_type_definition"
},
{
"type": "SYMBOL",
"name": "hvm_definition"
}
]
},
"_import": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "import_name"
},
{
"type": "SYMBOL",
"name": "import_from"
}
]
},
"import_name": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "import"
},
{
"type": "SYMBOL",
"name": "os_path"
}
]
},
"import_from": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "from"
},
{
"type": "SYMBOL",
"name": "os_path"
},
{
"type": "STRING",
"value": "import"
},
{
"type": "SYMBOL",
"name": "os_path"
}
]
},
"_func_def": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "imp_function_definition"
},
{
"type": "SYMBOL",
"name": "fun_function_definition"
}
]
},
"object_definition": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "object"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "SYMBOL",
"name": "_object_def_body"
}
]
},
"_object_def_body": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "field",
"content": {
"type": "SYMBOL",
"name": "object_field"
}
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "FIELD",
"name": "field",
"content": {
"type": "SYMBOL",
"name": "object_field"
}
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"object_field": {
"type": "SYMBOL",
"name": "identifier"
},
"_type_definition": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "imp_type_definition"
},
{
"type": "SYMBOL",
"name": "fun_type_definition"
}
]
},
"hvm_definition": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "hvm"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "REPEAT1",
"content": {
"type": "FIELD",
"name": "code",
"content": {
"type": "SYMBOL",
"name": "hvm_code"
}
}
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
}
},
"extras": [
{
"type": "SYMBOL",
"name": "multiline_comment"
},
{
"type": "SYMBOL",
"name": "comment"
},
{
"type": "PATTERN",
"value": "[\\s\\f\\uFEFF\\u2060\\u200B]|\\r?\\n"
}
],
"conflicts": [
[
"for_clause"
],
[
"imp_eraser"
],
[
"fun_type_constructor"
],
[
"fun_type_constructor_fields"
],
[
"imp_constructor",
"imp_superposition"
],
[
"imp_lambda",
"imp_constructor"
],
[
"_fun_eraser",
"operator"
],
[
"imp_tuple",
"arguments"
],
[
"imp_tuple",
"_imp_arg"
],
[
"imp_tree_leaf",
"imp_constructor"
],
[
"_function_pattern",
"_terms"
],
[
"_fun_args"
]
],
"precedences": [],
"externals": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "SYMBOL",
"name": "_dedent"
},
{
"type": "SYMBOL",
"name": "comment"
},
{
"type": "SYMBOL",
"name": "path"
},
{
"type": "SYMBOL",
"name": "error_sentinel"
}
],
"inline": [
"_simple_statement",
"_compound_statement",
"expression",
"simple_expression"
],
"supertypes": [
"_id"
]
}