@amaanq/tree-sitter-func
Version:
FunC grammar for tree-sitter
2,172 lines • 67 kB
JSON
{
"name": "func",
"word": "identifier",
"rules": {
"translation_unit": {
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_top_level_item"
}
},
"_top_level_item": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "function_definition"
},
{
"type": "SYMBOL",
"name": "include_directive"
},
{
"type": "SYMBOL",
"name": "pragma_directive"
},
{
"type": "SYMBOL",
"name": "global_var_declarations"
},
{
"type": "SYMBOL",
"name": "const_var_declarations"
}
]
},
"include_directive": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#include"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_string_literal"
},
"named": true,
"value": "include_path"
},
{
"type": "STRING",
"value": ";"
}
]
},
"pragma_directive": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#pragma"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "version"
},
{
"type": "STRING",
"value": "not-version"
},
{
"type": "STRING",
"value": "test-version-set"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "(\\^|<=|>=|<|>|=)"
},
"named": true,
"value": "version_operator"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "BLANK"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "\\d"
},
"named": true,
"value": "major_version"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "\\d"
},
"named": true,
"value": "minor_version"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "\\d"
},
"named": true,
"value": "patch_version"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ";"
}
]
},
"global_var_declarations": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "global"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_global_var_declaration"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_global_var_declaration"
}
]
}
}
]
},
{
"type": "STRING",
"value": ";"
}
]
},
"const_var_declarations": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "const"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "_type"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_const_var_declaration"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_const_var_declaration"
}
]
}
}
]
},
{
"type": "STRING",
"value": ";"
}
]
},
"_global_var_declaration": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
},
"_const_var_declaration": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
},
"_type": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_atomic_type"
},
{
"type": "SYMBOL",
"name": "function_type"
}
]
},
"function_type": {
"type": "PREC_RIGHT",
"value": 100,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_atomic_type"
},
{
"type": "STRING",
"value": "->"
},
{
"type": "SYMBOL",
"name": "_type"
}
]
}
},
"_atomic_type": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "primitive_type"
},
{
"type": "SYMBOL",
"name": "var"
},
{
"type": "SYMBOL",
"name": "hole_type"
},
{
"type": "SYMBOL",
"name": "type_identifier"
},
{
"type": "SYMBOL",
"name": "tensor_type"
},
{
"type": "SYMBOL",
"name": "unit_type"
},
{
"type": "SYMBOL",
"name": "tuple_type"
},
{
"type": "SYMBOL",
"name": "_parenthesized_type"
}
]
},
"_parenthesized_type": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "STRING",
"value": ")"
}
]
},
"primitive_type": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "int"
},
{
"type": "STRING",
"value": "cell"
},
{
"type": "STRING",
"value": "slice"
},
{
"type": "STRING",
"value": "builder"
},
{
"type": "STRING",
"value": "cont"
},
{
"type": "STRING",
"value": "tuple"
}
]
},
"tensor_type": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "REPEAT1",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_type"
}
]
}
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"tuple_type": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_type"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"var": {
"type": "STRING",
"value": "var"
},
"hole_type": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "underscore"
},
"named": true,
"value": "hole_type"
},
"unit_type": {
"type": "STRING",
"value": "()"
},
"type_identifier": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "identifier"
},
"named": true,
"value": "type_identifier"
},
"_expression": {
"type": "SYMBOL",
"name": "_expr10"
},
"_expr10": {
"type": "PREC",
"value": 10,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expr13"
},
{
"type": "CHOICE",
"members": [
{
"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": "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": "SYMBOL",
"name": "_expr10"
}
]
},
{
"type": "BLANK"
}
]
}
]
}
},
"_expr13": {
"type": "PREC",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expr15"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "?"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "_expr13"
}
]
},
{
"type": "BLANK"
}
]
}
]
}
},
"_expr15": {
"type": "PREC",
"value": 15,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expr17"
},
{
"type": "CHOICE",
"members": [
{
"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": "STRING",
"value": "<=>"
}
]
},
{
"type": "SYMBOL",
"name": "_expr17"
}
]
},
{
"type": "BLANK"
}
]
}
]
}
},
"_expr17": {
"type": "PREC_LEFT",
"value": 17,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expr20"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "<<"
},
{
"type": "STRING",
"value": ">>"
},
{
"type": "STRING",
"value": "~>>"
},
{
"type": "STRING",
"value": "^>>"
}
]
},
{
"type": "SYMBOL",
"name": "_expr20"
}
]
}
}
]
}
},
"_expr20": {
"type": "PREC_LEFT",
"value": 20,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "-"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_expr30"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "-"
},
{
"type": "STRING",
"value": "+"
},
{
"type": "STRING",
"value": "|"
},
{
"type": "STRING",
"value": "^"
}
]
},
{
"type": "SYMBOL",
"name": "_expr30"
}
]
}
}
]
}
},
"_expr30": {
"type": "PREC_LEFT",
"value": 30,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expr75"
},
{
"type": "REPEAT",
"content": {
"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": "STRING",
"value": "^%"
},
{
"type": "STRING",
"value": "/%"
},
{
"type": "STRING",
"value": "&"
}
]
},
{
"type": "SYMBOL",
"name": "_expr75"
}
]
}
}
]
}
},
"_expr75": {
"type": "PREC",
"value": 75,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "~"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_expr80"
}
]
}
},
"_expr80": {
"type": "PREC_LEFT",
"value": 80,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expr90"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "method_call"
}
}
]
}
},
"method_call": {
"type": "PREC_LEFT",
"value": 80,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "STRING",
"value": "~"
}
]
},
{
"type": "FIELD",
"name": "method_name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "FIELD",
"name": "arguments",
"content": {
"type": "SYMBOL",
"name": "_expr100"
}
}
]
}
},
"_expr90": {
"type": "PREC_LEFT",
"value": 90,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expr100"
},
{
"type": "SYMBOL",
"name": "variable_declaration"
},
{
"type": "SYMBOL",
"name": "function_application"
}
]
}
},
"function_application": {
"type": "PREC_LEFT",
"value": 90,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "function",
"content": {
"type": "SYMBOL",
"name": "_nontype_expr100"
}
},
{
"type": "FIELD",
"name": "arguments",
"content": {
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "parenthesized_expression"
},
{
"type": "SYMBOL",
"name": "tensor_expression"
},
{
"type": "SYMBOL",
"name": "unit_literal"
}
]
}
}
}
]
}
},
"variable_declaration": {
"type": "PREC_LEFT",
"value": 90,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_expression"
}
},
{
"type": "FIELD",
"name": "variable",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "tuple_expression"
},
{
"type": "SYMBOL",
"name": "tensor_expression"
},
{
"type": "SYMBOL",
"name": "parenthesized_expression"
}
]
}
}
]
}
},
"type_expression": {
"type": "PREC",
"value": 101,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "primitive_type"
},
{
"type": "STRING",
"value": "type"
},
{
"type": "SYMBOL",
"name": "var"
},
{
"type": "SYMBOL",
"name": "parenthesized_type_expression"
},
{
"type": "SYMBOL",
"name": "tensor_type_expression"
},
{
"type": "SYMBOL",
"name": "tuple_type_expression"
}
]
}
},
"parenthesized_type_expression": {
"type": "PREC",
"value": 101,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "type_expression"
},
{
"type": "STRING",
"value": ")"
}
]
}
},
"tensor_type_expression": {
"type": "PREC",
"value": 101,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_expression"
},
{
"type": "REPEAT1",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "type_expression"
}
]
}
}
]
},
{
"type": "STRING",
"value": ")"
}
]
}
},
"tuple_type_expression": {
"type": "PREC",
"value": 101,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_expression"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "type_expression"
}
]
}
}
]
},
{
"type": "STRING",
"value": "]"
}
]
}
},
"_nontype_expr100": {
"type": "PREC",
"value": 100,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "parenthesized_expression"
},
{
"type": "SYMBOL",
"name": "tensor_expression"
},
{
"type": "SYMBOL",
"name": "tuple_expression"
},
{
"type": "SYMBOL",
"name": "unit_literal"
},
{
"type": "SYMBOL",
"name": "primitive_type"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "number"
},
{
"type": "SYMBOL",
"name": "underscore"
},
{
"type": "SYMBOL",
"name": "string"
}
]
}
},
"_expr100": {
"type": "PREC",
"value": 100,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_expression"
},
{
"type": "SYMBOL",
"name": "_nontype_expr100"
}
]
}
},
"unit_literal": {
"type": "STRING",
"value": "()"
},
"parenthesized_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": ")"
}
]
},
"tensor_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "REPEAT1",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"tuple_expression": {
"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": "]"
}
]
},
"function_definition": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "type_variables",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_variables_list"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "FIELD",
"name": "return_type",
"content": {
"type": "SYMBOL",
"name": "_type"
}
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "function_name"
}
},
{
"type": "FIELD",
"name": "arguments",
"content": {
"type": "SYMBOL",
"name": "parameter_list"
}
},
{
"type": "FIELD",
"name": "specifiers",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "impure"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "inline"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "method_id"
},
{
"type": "BLANK"
}
]
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "block_statement"
}
},
{
"type": "FIELD",
"name": "asm_body",
"content": {
"type": "SYMBOL",
"name": "asm_function_body"
}
}
]
}
]
},
"function_name": {
"type": "PATTERN",
"value": "(`.*`)|((\\.|~)?(([a-zA-Z_](\\w|['?:])+)|([a-zA-Z])))"
},
"inline": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "inline"
},
{
"type": "STRING",
"value": "inline_ref"
}
]
},
"method_id": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "method_id"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "number"
},
{
"type": "SYMBOL",
"name": "string"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"type_variables_list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "forall"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "type"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "type_identifier"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "type"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "type_identifier"
}
]
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "->"
}
]
},
"parameter_list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "parameter_declaration"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "parameter_declaration"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"parameter_declaration": {
"type": "PREC",
"value": 1,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "_type"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "SYMBOL",
"name": "underscore"
}
]
},
"named": true,
"value": "parameter"
}
]
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "_type"
}
}
]
}
},
"asm_function_body": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "asm_specifier"
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "asm_instruction"
}
},
{
"type": "STRING",
"value": ";"
}
]
},
"asm_specifier": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "asm"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "REPEAT",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "identifier"
},
"named": true,
"value": "parameter"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "->"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "number"
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"asm_instruction": {
"type": "CHOICE",
"members": [
{
"type": "PREC",
"value": 2,
"content": {
"type": "SYMBOL",
"name": "multiline_asm_instruction"
}
},
{
"type": "PREC",
"value": 1,
"content": {
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "\"[^\"]*\""
}
},
"named": true,
"value": "asm_instruction"
}
}
]
},
"multiline_asm_instruction": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\"\"\""
},
{
"type": "REPEAT",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_multiline_string_fragment"
},
"named": true,
"value": "multiline_string_fragment"
}
},
{
"type": "STRING",
"value": "\"\"\""
}
]
},
"_multiline_string_fragment": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^\"]+"
},
{
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "\"[^\"]*\""
},
{
"type": "REPEAT",
"content": {
"type": "PATTERN",
"value": "[^\"]+"
}
}
]
}
]
}
},
"_statement": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "return_statement"
},
{
"type": "SYMBOL",
"name": "block_statement"
},
{
"type": "SYMBOL",
"name": "expression_statement"
},
{
"type": "SYMBOL",
"name": "empty_statement"
},
{
"type": "SYMBOL",
"name": "repeat_statement"
},
{
"type": "SYMBOL",
"name": "if_statement"
},
{
"type": "SYMBOL",
"name": "do_statement"
},
{
"type": "SYMBOL",
"name": "while_statement"
},
{
"type": "SYMBOL",
"name": "try_statement"
}
]
},
"return_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "return"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": ";"
}
]
},
"block_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_statement"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"expression_statement": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": ";"
}
]
},
"empty_statement": {
"type": "STRING",
"value": ";"
},
"repeat_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "repeat"
},
{
"type": "FIELD",
"name": "count",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "block_statement"
}
}
]
},
"if_statement": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "if"
},
{
"type": "STRING",
"value": "ifnot"
}
]
},
{
"type": "SYMBOL",
"name": "_if_statement_contents"
}
]
},
"_if_statement_contents": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "FIELD",
"name": "consequent",
"content": {
"type": "SYMBOL",
"name": "block_statement"
}
},
{
"type": "FIELD",
"name": "alternative",
"content": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "else"
},
{
"type": "SYMBOL",
"name": "block_statement"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "elseif"
},
{
"type": "STRING",
"value": "elseifnot"
}
]
},
{
"type":