{
"$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
"name": "galvan",
"word": "_word",
"rules": {
"source": {
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_toplevel"
}
},
"body": {
"type": "PREC",
"value": 100,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "brace_open"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "statement"
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "_semi"
}
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "statement"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "brace_close"
}
]
}
},
"_toplevel": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "main"
},
{
"type": "SYMBOL",
"name": "build"
},
{
"type": "SYMBOL",
"name": "test"
},
{
"type": "SYMBOL",
"name": "function"
},
{
"type": "SYMBOL",
"name": "type_declaration"
},
{
"type": "SYMBOL",
"name": "entry_point"
}
]
},
"main": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "main_keyword"
},
{
"type": "SYMBOL",
"name": "body"
}
]
},
"build": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "build_keyword"
},
{
"type": "SYMBOL",
"name": "body"
}
]
},
"test": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "test_keyword"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "string_literal"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "body"
}
]
},
"entry_point": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "ident"
},
{
"type": "SYMBOL",
"name": "body"
}
]
},
"function": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "annotation"
}
},
{
"type": "SYMBOL",
"name": "fn_signature"
},
{
"type": "SYMBOL",
"name": "body"
}
]
},
"fn_signature": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_fn_modifiers"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "fn_keyword"
},
{
"type": "SYMBOL",
"name": "ident"
},
{
"type": "SYMBOL",
"name": "param_list"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "return_type"
},
{
"type": "BLANK"
}
]
}
]
},
"_fn_modifiers": {
"type": "SYMBOL",
"name": "visibility"
},
"param_list": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "paren_open"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "param"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_comma"
},
{
"type": "SYMBOL",
"name": "param"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_comma"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "paren_close"
}
]
},
"param": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "declaration_modifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "ident"
},
{
"type": "SYMBOL",
"name": "colon"
},
{
"type": "SYMBOL",
"name": "type_item"
}
]
},
"return_type": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "single_arrow"
},
{
"type": "SYMBOL",
"name": "type_item"
}
]
},
"annotation": {
"type": "STRING",
"value": "TODO: Annotation"
},
"statement": {
"type": "PREC",
"value": 99,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "assignment"
},
{
"type": "SYMBOL",
"name": "declaration"
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "SYMBOL",
"name": "free_function"
},
{
"type": "SYMBOL",
"name": "break_statement"
},
{
"type": "SYMBOL",
"name": "continue_statement"
}
]
}
},
"assignment": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "SYMBOL",
"name": "_assignment_operator"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
"declaration": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "declaration_modifier"
},
{
"type": "SYMBOL",
"name": "ident"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "colon"
},
{
"type": "SYMBOL",
"name": "type_item"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "assign"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"free_function": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "ident"
},
{
"type": "FIELD",
"name": "arguments",
"content": {
"type": "SYMBOL",
"name": "_trailing_argument_list"
}
}
]
},
"break_statement": {
"type": "SYMBOL",
"name": "break_keyword"
},
"continue_statement": {
"type": "SYMBOL",
"name": "continue_keyword"
},
"expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "else_expression"
},
{
"type": "SYMBOL",
"name": "trailing_closure_expression"
},
{
"type": "SYMBOL",
"name": "_infix_expression"
},
{
"type": "SYMBOL",
"name": "postfix_expression"
},
{
"type": "SYMBOL",
"name": "collection_literal"
},
{
"type": "SYMBOL",
"name": "function_call"
},
{
"type": "SYMBOL",
"name": "constructor_call"
},
{
"type": "SYMBOL",
"name": "enum_access"
},
{
"type": "SYMBOL",
"name": "literal"
},
{
"type": "SYMBOL",
"name": "ident"
},
{
"type": "SYMBOL",
"name": "closure"
},
{
"type": "SYMBOL",
"name": "group"
}
]
},
"else_expression": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "receiver",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "SYMBOL",
"name": "else_keyword"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "pipe"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "closure_argument"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_comma"
},
{
"type": "SYMBOL",
"name": "closure_argument"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_comma"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SYMBOL",
"name": "pipe"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "body"
}
}
]
},
"trailing_closure_expression": {
"type": "PREC_LEFT",
"value": -2,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "ident"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "arguments",
"content": {
"type": "SYMBOL",
"name": "_trailing_argument_list"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "pipe"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "closure_argument"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_comma"
},
{
"type": "SYMBOL",
"name": "closure_argument"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_comma"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SYMBOL",
"name": "pipe"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "body"
}
]
}
},
"_trailing_argument_list": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "function_call_arg"
},
{
"type": "SYMBOL",
"name": "_comma"
}
]
}
},
{
"type": "SYMBOL",
"name": "function_call_arg"
}
]
},
"postfix_expression": {
"type": "PREC",
"value": 3,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "SYMBOL",
"name": "postfix_operator"
}
]
}
},
"postfix_operator": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "yeet_operator"
},
{
"type": "SYMBOL",
"name": "access_operator"
}
]
},
"yeet_operator": {
"type": "STRING",
"value": "!"
},
"access_operator": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "bracket_open"
},
{
"type": "FIELD",
"name": "key",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "SYMBOL",
"name": "bracket_close"
}
]
},
"collection_literal": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "array_literal"
},
{
"type": "SYMBOL",
"name": "set_literal"
},
{
"type": "SYMBOL",
"name": "ordered_dict_literal"
},
{
"type": "SYMBOL",
"name": "dict_literal"
}
]
},
"array_literal": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "bracket_open"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_comma"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_comma"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "bracket_close"
}
]
},
"set_literal": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "brace_open"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_comma"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_comma"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "brace_close"
}
]
},
"ordered_dict_literal": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "bracket_open"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "colon"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "dict_element"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_comma"
},
{
"type": "SYMBOL",
"name": "dict_element"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_comma"
},
{
"type": "BLANK"
}
]
}
]
}
]
},
{
"type": "SYMBOL",
"name": "bracket_close"
}
]
},
"dict_literal": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "brace_open"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "colon"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "dict_element"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_comma"
},
{
"type": "SYMBOL",
"name": "dict_element"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_comma"
},
{
"type": "BLANK"
}
]
}
]
}
]
},
{
"type": "SYMBOL",
"name": "brace_close"
}
]
},
"dict_element": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "key",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "SYMBOL",
"name": "colon"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
},
"function_call": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "ident"
},
{
"type": "SYMBOL",
"name": "paren_open"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "function_call_arg"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_comma"
},
{
"type": "SYMBOL",
"name": "function_call_arg"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_comma"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "paren_close"
}
]
},
"function_call_arg": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "declaration_modifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
"constructor_call": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_ident"
},
{
"type": "SYMBOL",
"name": "paren_open"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "constructor_call_arg"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_comma"
},
{
"type": "SYMBOL",
"name": "constructor_call_arg"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_comma"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "paren_close"
}
]
},
"constructor_call_arg": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "field",
"content": {
"type": "SYMBOL",
"name": "ident"
}
},
{
"type": "SYMBOL",
"name": "colon"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
},
"enum_access": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_ident"
},
{
"type": "SYMBOL",
"name": "double_colon"
},
{
"type": "SYMBOL",
"name": "type_ident"
}
]
},
"closure": {
"type": "PREC",
"value": -3,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "pipe"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "closure_argument"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_comma"
},
{
"type": "SYMBOL",
"name": "closure_argument"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_comma"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "pipe"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "SYMBOL",
"name": "body"
}
]
}
}
]
}
},
"closure_argument": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "ident"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "colon"
},
{
"type": "SYMBOL",
"name": "type_item"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"group": {
"type": "PREC",
"value": -1,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "paren_open"
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "SYMBOL",
"name": "paren_close"
}
]
}
},
"_infix_expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "member_expression"
},
{
"type": "SYMBOL",
"name": "logical_expression"
},
{
"type": "SYMBOL",
"name": "arithmetic_expression"
},
{
"type": "SYMBOL",
"name": "collection_expression"
},
{
"type": "SYMBOL",
"name": "range_expression"
},
{
"type": "SYMBOL",
"name": "comparison_expression"
},
{
"type": "SYMBOL",
"name": "unwrap_expression"
},
{
"type": "SYMBOL",
"name": "custom_infix_expression"
}
]
},
"logical_expression": {
"type": "CHOICE",
"members": [
{
"type": "PREC_LEFT",
"value": 8,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "lhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "SYMBOL",
"name": "and"
}
},
{
"type": "FIELD",
"name": "rhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 6,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "lhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "SYMBOL",
"name": "or"
}
},
{
"type": "FIELD",
"name": "rhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 7,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "lhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "SYMBOL",
"name": "xor"
}
},
{
"type": "FIELD",
"name": "rhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
}
]
},
"arithmetic_expression": {
"type": "CHOICE",
"members": [
{
"type": "PREC_LEFT",
"value": 18,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "lhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "SYMBOL",
"name": "plus"
}
},
{
"type": "FIELD",
"name": "rhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 18,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "lhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "SYMBOL",
"name": "minus"
}
},
{
"type": "FIELD",
"name": "rhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 19,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "lhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "SYMBOL",
"name": "multiply"
}
},
{
"type": "FIELD",
"name": "rhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 19,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "lhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "SYMBOL",
"name": "divide"
}
},
{
"type": "FIELD",
"name": "rhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 19,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "lhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "SYMBOL",
"name": "remainder"
}
},
{
"type": "FIELD",
"name": "rhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 20,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "lhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "SYMBOL",
"name": "power"
}
},
{
"type": "FIELD",
"name": "rhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
}
]
},
"collection_expression": {
"type": "CHOICE",
"members": [
{
"type": "PREC_LEFT",
"value": 12,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "lhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "SYMBOL",
"name": "concat"
}
},
{
"type": "FIELD",
"name": "rhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 12,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "lhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "SYMBOL",
"name": "remove"
}
},
{
"type": "FIELD",
"name": "rhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 10,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "lhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "SYMBOL",
"name": "contains"
}
},
{
"type": "FIELD",
"name": "rhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
}
]
},
"range_expression": {
"type": "CHOICE",
"members": [
{
"type": "PREC_LEFT",
"value": 11,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "lhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "SYMBOL",
"name": "inclusive_range"
}
},
{
"type": "FIELD",
"name": "rhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 11,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "lhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "SYMBOL",
"name": "exclusive_range"
}
},
{
"type": "FIELD",
"name": "rhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 11,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "lhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "SYMBOL",
"name": "tolerance_range"
}
},
{
"type": "FIELD",
"name": "rhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 11,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "lhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "SYMBOL",
"name": "interval_range"
}
},
{
"type": "FIELD",
"name": "rhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
}
]
},
"member_expression": {
"type": "CHOICE",
"members": [
{
"type": "PREC_LEFT",
"value": 30,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "lhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "SYMBOL",
"name": "member_call_operator"
}
},
{
"type": "FIELD",
"name": "rhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 30,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "lhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "SYMBOL",
"name": "safe_call_operator"
}
},
{
"type": "FIELD",
"name": "rhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
}
]
},
"member_call_operator": {
"type": "STRING",
"value": "."
},
"safe_call_operator": {
"type": "TOKEN",
"content": {
"type": "STRING",
"value": "?."
}
},
"comparison_expression": {
"type": "PREC_LEFT",
"value": 9,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "lhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "SYMBOL",
"name": "_comparison_operator"
}
},
{
"type": "FIELD",
"name": "rhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
"unwrap_expression": {
"type": "PREC_LEFT",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "lhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "SYMBOL",
"name": "unwrap"
}
},
{
"type": "FIELD",
"name": "rhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
"custom_infix_expression": {
"type": "PREC_LEFT",
"value": 25,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "lhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "SYMBOL",
"name": "custom_infix_operator"
}
},
{
"type": "FIELD",
"name": "rhs",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
"custom_infix_operator": {
"type": "STRING",
"value": "$$$"
},
"type_declaration": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "struct"
},
{
"type": "SYMBOL",
"name": "alias"
},
{
"type": "SYMBOL",
"name": "enum"
},
{
"type": "SYMBOL",
"name": "tuple_struct"
},
{
"type": "SYMBOL",
"name": "empty_struct"
}
]
},
"_type_prelude": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "visibility"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "type_keyword"
},
{
"type": "SYMBOL",
"name": "type_ident"
}
]
},
"struct": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_type_prelude"
},
{
"type": "SYMBOL",
"name": "brace_open"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "struct_field"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_comma"
},
{
"type": "SYMBOL",
"name": "_autosemi"
}
]
},
{
"type": "SYMBOL",
"name": "struct_field"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_comma"
},
{
"type": "SYMBOL",
"name": "_autosemi"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "brace_close"
}
]
},
"struct_field": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "visibility"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "declaration_modifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "ident"
},
{
"type": "SYMBOL",
"name": "colon"
},
{
"type": "SYMBOL",
"name": "type_item"
}
]
},
"alias": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_type_prelude"
},
{
"type": "SYMBOL",
"name": "assign"
},
{
"type": "SYMBOL",
"name": "type_item"
}
]
},
"enum": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_type_prelude"
},
{
"type": "SYMBOL",
"name": "brace_open"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_ident"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_comma"
},
{
"type": "SYMBOL",
"name": "_autosemi"
}
]
},
{
"type": "SYMBOL",
"name": "type_ident"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_comma"
},
{
"type": "SYMBOL",
"name": "_autosemi"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SYMBOL",
"name": "brace_close"
}
]
},
"tuple_struct": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_type_prelude"
},
{
"type": "SYMBOL",
"name": "paren_open"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "tuple_field"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_comma"
},
{
"type": "SYMBOL",
"name": "_autosemi"
}
]
},
{
"type": "SYMBOL",
"name": "tuple_field"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_comma"
},
{
"type": "SYMBOL",
"name": "_autosemi"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "paren_close"
}
]
},
"tuple_field": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "visibility"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "type_item"
}
]
},
"empty_struct": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_type_prelude"
}
]
},
"type_item": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "result_type"
},
{
"type": "SYMBOL",
"name": "optional_type"
},
{
"type": "SYMBOL",
"name": "array_type"
},
{
"type": "SYMBOL",
"name": "dict_type"
},
{
"type": "SYMBOL",
"name": "ordered_dict_type"
},
{
"type": "SYMBOL",
"name": "set_type"
},
{
"type": "SYMBOL",
"name": "tuple_type"
},
{
"type": "SYMBOL",
"name": "generic_type"
},
{
"type": "SYMBOL",
"name": "basic_type"
}
]
},
"result_type": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "success",
"content": {
"type": "SYMBOL",
"name": "type_item"
}
},
{
"type": "SYMBOL",
"name": "exclamation_mark"
},
{
"type": "FIELD",
"name": "error",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_item"
},
{
"type": "BLANK"
}
]
}
}
]
}
},
"optional_type": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "element",
"content": {
"type": "SYMBOL",
"name": "type_item"
}
},
{
"type": "SYMBOL",
"name": "question_mark"
}
]
},
"set_type": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "brace_open"
},
{
"type": "FIELD",
"name": "element",
"content": {
"type": "SYMBOL",
"name": "type_item"
}
},
{
"type": "SYMBOL",
"name": "brace_close"
}
]
},
"array_type": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "bracket_open"
},
{
"type": "FIELD",
"name": "element",
"content": {
"type": "SYMBOL",
"name": "type_item"
}
},
{
"type": "SYMBOL",
"name": "bracket_close"
}
]
},
"dict_type": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "brace_open"
},
{
"type": "FIELD",
"name": "key",
"content": {
"type": "SYMBOL",
"name": "type_item"
}
},
{
"type": "SYMBOL",
"name": "colon"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "type_item"
}
},
{
"type": "SYMBOL",
"name": "brace_close"
}
]
},
"ordered_dict_type": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "bracket_open"
},
{
"type": "FIELD",
"name": "key",
"content": {
"type": "SYMBOL",
"name": "type_item"
}
},
{
"type": "SYMBOL",
"name": "colon"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "type_item"
}
},
{
"type": "SYMBOL",
"name": "bracket_close"
}
]
},
"tuple_type": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "paren_open"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_item"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_comma"
},
{
"type": "SYMBOL",
"name": "type_item"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_comma"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SYMBOL",
"name": "paren_close"
}
]
},
"generic_type": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "ident"
}
]
},
"basic_type": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_ident"
}
]
},
"colon": {
"type": "STRING",
"value": ":"
},
"double_colon": {
"type": "STRING",
"value": "::"
},
"_semicolon": {
"type": "STRING",
"value": ";"
},
"_comma": {
"type": "STRING",
"value": ","
},
"dot": {
"type": "STRING",
"value": "."
},
"question_mark": {
"type": "STRING",
"value": "?"
},
"exclamation_mark": {
"type": "STRING",
"value": "!"
},
"paren_open": {
"type": "STRING",
"value": "("
},
"paren_close": {
"type": "STRING",
"value": ")"
},
"bracket_open": {
"type": "STRING",
"value": "["
},
"bracket_close": {
"type": "STRING",
"value": "]"
},
"brace_open": {
"type": "STRING",
"value": "{"
},
"brace_close": {
"type": "STRING",
"value": "}"
},
"pipe": {
"type": "STRING",
"value": "|"
},
"single_arrow": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "->"
},
{
"type": "STRING",
"value": "→"
}
]
}
},
"double_arrow": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "=>"
},
{
"type": "STRING",
"value": "⇒"
}
]
}
},
"plus": {
"type": "STRING",
"value": "+"
},
"minus": {
"type": "STRING",
"value": "-"
},
"multiply": {
"type": "STRING",
"value": "*"
},
"divide": {
"type": "STRING",
"value": "/"
},
"remainder": {
"type": "STRING",
"value": "%"
},
"power": {
"type": "STRING",
"value": "^"
},
"unwrap": {
"type": "STRING",
"value": "?"
},
"_assignment_operator": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "assign"
},
{
"type": "SYMBOL",
"name": "add_assign"
},
{
"type": "SYMBOL",
"name": "sub_assign"
},
{
"type": "SYMBOL",
"name": "mul_assign"
},
{
"type": "SYMBOL",
"name": "pow_assign"
},
{
"type": "SYMBOL",
"name": "div_assign"
},
{
"type": "SYMBOL",
"name": "rem_assign"
},
{
"type": "SYMBOL",
"name": "concat_assign"
},
{
"type": "SYMBOL",
"name": "remove_assign"
}
]
},
"assign": {
"type": "STRING",
"value": "="
},
"add_assign": {
"type": "STRING",
"value": "+="
},
"sub_assign": {
"type": "STRING",
"value": "-="
},
"mul_assign": {
"type": "STRING",
"value": "*="
},
"pow_assign": {
"type": "STRING",
"value": "^="
},
"div_assign": {
"type": "STRING",
"value": "/="
},
"rem_assign": {
"type": "STRING",
"value": "%="
},
"concat_assign": {
"type": "TOKEN",
"content": {
"type": "STRING",
"value": "++="
}
},
"remove_assign": {
"type": "TOKEN",
"content": {
"type": "STRING",
"value": "--="
}
},
"_comparison_operator": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "equal"
},
{
"type": "SYMBOL",
"name": "not_equal"
},
{
"type": "SYMBOL",
"name": "greater"
},
{
"type": "SYMBOL",
"name": "greater_equal"
},
{
"type": "SYMBOL",
"name": "less"
},
{
"type": "SYMBOL",
"name": "less_equal"
},
{
"type": "SYMBOL",
"name": "identical"
},
{
"type": "SYMBOL",
"name": "not_identical"
}
]
},
"equal": {
"type": "STRING",
"value": "=="
},
"not_equal": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "!="
},
{
"type": "STRING",
"value": "≠"
}
]
}
},
"greater": {
"type": "STRING",
"value": ">"
},
"greater_equal": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ">="
},
{
"type": "STRING",
"value": "≥"
}
]
}
},
"less": {
"type": "STRING",
"value": "<"
},
"less_equal": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "<="
},
{
"type": "STRING",
"value": "≤"
}
]
}
},
"identical": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "==="
},
{
"type": "STRING",
"value": "≡"
}
]
}
},
"not_identical": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "!=="
},
{
"type": "STRING",
"value": "≢"
}
]
}
},
"and": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "and"
},
{
"type": "STRING",
"value": "&&"
}
]
}
},
"or": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "or"
},
{
"type": "STRING",
"value": "||"
}
]
}
},
"xor": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "xor"
},
{
"type": "STRING",
"value": "^^"
}
]
}
},
"not": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "not"
},
{
"type": "STRING",
"value": "!"
}
]
}
},
"concat": {
"type": "STRING",
"value": "++"
},
"remove": {
"type": "STRING",
"value": "--"
},
"contains": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "in"
},
{
"type": "STRING",
"value": "∈"
},
{
"type": "STRING",
"value": "∊"
}
]
}
},
"inclusive_range": {
"type": "TOKEN",
"content": {
"type": "STRING",
"value": "..="
}
},
"exclusive_range": {
"type": "TOKEN",
"content": {
"type": "STRING",
"value": "..<"
}
},
"tolerance_range": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "±"
},
{
"type": "STRING",
"value": "+-"
}
]
}
},
"interval_range": {
"type": "TOKEN",
"content": {
"type": "STRING",
"value": "..+"
}
},
"main_keyword": {
"type": "STRING",
"value": "main"
},
"build_keyword": {
"type": "STRING",
"value": "build"
},
"test_keyword": {
"type": "STRING",
"value": "test"
},
"fn_keyword": {
"type": "STRING",
"value": "fn"
},
"type_keyword": {
"type": "STRING",
"value": "type"
},
"declaration_modifier": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "ref_keyword"
},
{
"type": "SYMBOL",
"name": "let_keyword"
},
{
"type": "SYMBOL",
"name": "mut_keyword"
}
]
},
"ref_keyword": {
"type": "STRING",
"value": "ref"
},
"let_keyword": {
"type": "STRING",
"value": "let"
},
"mut_keyword": {
"type": "STRING",
"value": "mut"
},
"true_keyword": {
"type": "STRING",
"value": "true"
},
"false_keyword": {
"type": "STRING",
"value": "false"
},
"none_keyword": {
"type": "STRING",
"value": "none"
},
"visibility": {
"type": "SYMBOL",
"name": "pub_keyword"
},
"async_keyword": {
"type": "STRING",
"value": "async"
},
"const_keyword": {
"type": "STRING",
"value": "const"
},
"pub_keyword": {
"type": "STRING",
"value": "pub"
},
"else_keyword": {
"type": "STRING",
"value": "else"
},
"break_keyword": {
"type": "STRING",
"value": "break"
},
"continue_keyword": {
"type": "STRING",
"value": "continue"
},
"literal": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "none_keyword"
},
{
"type": "SYMBOL",
"name": "boolean_literal"
},
{
"type": "SYMBOL",
"name": "string_literal"
},
{
"type": "SYMBOL",
"name": "char_literal"
},
{
"type": "SYMBOL",
"name": "number_literal"
}
]
},
"string_literal": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^\"\\\\{]"
},
{
"type": "SYMBOL",
"name": "escape_sequence"
},
{
"type": "SYMBOL",
"name": "string_interpolation"
}
]
}
},
{
"type": "STRING",
"value": "\""
}
]
},
{
"type": "SYMBOL",
"name": "raw_string_literal"
}
]
},
"raw_string_literal": {
"type": "PATTERN",
"value": "#\"([^\"#]|(\"#+[^\"#]))*\"#"
},
"char_literal": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "'"
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^'\\\\]"
},
{
"type": "SYMBOL",
"name": "escape_sequence"
}
]
},
{
"type": "STRING",
"value": "'"
}
]
},
"escape_sequence": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\\"
},
{
"type": "PATTERN",
"value": "[nrt\\\\'\"]"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\\"
},
{
"type": "STRING",
"value": "u"
},
{
"type": "STRING",
"value": "{"
},
{
"type": "PATTERN",
"value": "[0-9a-fA-F]+"
},
{
"type": "STRING",
"value": "}"
}
]
}
]
},
"string_interpolation": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "STRING",
"value": "}"
}
]
},
"number_literal": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "-"
},
{
"type": "STRING",
"value": "+"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "0"
},
{
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "[1-9]"
},
{
"type": "REPEAT",
"content": {
"type": "PATTERN",
"value": "\\d"
}
}
]
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "\\d"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "_"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "f32"
},
{
"type": "STRING",
"value": "f64"
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "_"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "u8"
},
{
"type": "STRING",
"value": "u16"
},
{
"type": "STRING",
"value": "u32"
},
{
"type": "STRING",
"value": "u64"
},
{
"type": "STRING",
"value": "u128"
},
{
"type": "STRING",
"value": "i8"
},
{
"type": "STRING",
"value": "i16"
},
{
"type": "STRING",
"value": "i32"
},
{
"type": "STRING",
"value": "i64"
},
{
"type": "STRING",
"value": "i128"
},
{
"type": "STRING",
"value": "isize"
},
{
"type": "STRING",
"value": "usize"
}
]
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
}
},
"boolean_literal": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "true_keyword"
},
{
"type": "SYMBOL",
"name": "false_keyword"
}
]
},
"_ident": {
"type": "PATTERN",
"value": "[a-z][a-z0-9_]*"
},
"_type_ident": {
"type": "PATTERN",
"value": "[A-Z][A-Za-z0-9_]*"
},
"_word": {
"type": "PATTERN",
"value": "[A-Za-z0-9_]*"
},
"ident": {
"type": "SYMBOL",
"name": "_ident"
},
"type_ident": {
"type": "SYMBOL",
"name": "_type_ident"
},
"_semi": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_semicolon"
},
{
"type": "SYMBOL",
"name": "_autosemi"
}
]
},
"comment": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "//"
},
{
"type": "PATTERN",
"value": ".*"
}
]
}
},
"_newline": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "\r"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "\n"
}
]
}
},
"_space": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "[ \\t]"
},
{
"type": "REPEAT",
"content": {
"type": "PATTERN",
"value": "[ \\t]*"
}
}
]
}
}
},
"extras": [
{
"type": "SYMBOL",
"name": "comment"
},
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "PATTERN",
"value": "\\s+"
}
],
"conflicts": [],
"precedences": [],
"externals": [
{
"type": "SYMBOL",
"name": "_autosemi"
},
{
"type": "SYMBOL",
"name": "_error"
}
],
"inline": [],
"supertypes": [],
"reserved": {}
}