tree-sitter-bos
Version:
DSL scripting language for controlling unit animations and state. Used by the Recoil engine.
2,775 lines • 51.9 kB
JSON
[
{
"type": "constant",
"named": true,
"subtypes": [
{
"type": "degree_constant",
"named": true
},
{
"type": "linear_constant",
"named": true
},
{
"type": "number_literal",
"named": true
}
]
},
{
"type": "declaration",
"named": true,
"subtypes": [
{
"type": "function_declaration",
"named": true
},
{
"type": "piece_declaration",
"named": true
},
{
"type": "static_var_declaration",
"named": true
}
]
},
{
"type": "expression",
"named": true,
"subtypes": [
{
"type": "binary_expression",
"named": true
},
{
"type": "constant",
"named": true
},
{
"type": "false",
"named": true
},
{
"type": "macro_call_expression",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "true",
"named": true
},
{
"type": "unary_expression",
"named": true
},
{
"type": "varying",
"named": true
}
]
},
{
"type": "keyword_statement",
"named": true,
"subtypes": [
{
"type": "attach_unit_statement",
"named": true
},
{
"type": "cache_statement",
"named": true
},
{
"type": "call_script_statement",
"named": true
},
{
"type": "dont_cache_statement",
"named": true
},
{
"type": "dont_shade_statement",
"named": true
},
{
"type": "dont_shadow_statement",
"named": true
},
{
"type": "drop_unit_statement",
"named": true
},
{
"type": "emit_sfx_statement",
"named": true
},
{
"type": "explode_statement",
"named": true
},
{
"type": "get_statement",
"named": true
},
{
"type": "hide_statement",
"named": true
},
{
"type": "move_statement",
"named": true
},
{
"type": "set_signal_mask_statement",
"named": true
},
{
"type": "set_statement",
"named": true
},
{
"type": "show_statement",
"named": true
},
{
"type": "signal_statement",
"named": true
},
{
"type": "sleep_statement",
"named": true
},
{
"type": "spin_statement",
"named": true
},
{
"type": "start_script_statement",
"named": true
},
{
"type": "stop_spin_statement",
"named": true
},
{
"type": "turn_statement",
"named": true
},
{
"type": "wait_for_move_statement",
"named": true
},
{
"type": "wait_for_turn_statement",
"named": true
}
]
},
{
"type": "preproc_expression",
"named": true,
"subtypes": [
{
"type": "constant",
"named": true
},
{
"type": "define_name",
"named": true
},
{
"type": "preproc_binary_expression",
"named": true
},
{
"type": "preproc_call_expression",
"named": true
},
{
"type": "preproc_defined",
"named": true
},
{
"type": "preproc_parenthesized_expression",
"named": true
},
{
"type": "preproc_unary_expression",
"named": true
}
]
},
{
"type": "statement",
"named": true,
"subtypes": [
{
"type": ";",
"named": false
},
{
"type": "assign_statement",
"named": true
},
{
"type": "compound_statement",
"named": true
},
{
"type": "if_statement",
"named": true
},
{
"type": "keyword_statement",
"named": true
},
{
"type": "return_statement",
"named": true
},
{
"type": "var_statement",
"named": true
},
{
"type": "while_statement",
"named": true
}
]
},
{
"type": "varying",
"named": true,
"subtypes": [
{
"type": "get_term",
"named": true
},
{
"type": "rand_call",
"named": true
},
{
"type": "var_name_term",
"named": true
}
]
},
{
"type": "argument_list",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "expression",
"named": true
}
]
}
},
{
"type": "assign_statement",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": false,
"types": [
{
"type": "var_name",
"named": true
}
]
},
"value": {
"multiple": false,
"required": false,
"types": [
{
"type": "expression",
"named": true
}
]
}
},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "decrement_statement",
"named": true
},
{
"type": "increment_statement",
"named": true
}
]
}
},
{
"type": "attach_unit_statement",
"named": true,
"fields": {
"argument": {
"multiple": true,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
},
"keyword": {
"multiple": false,
"required": true,
"types": [
{
"type": "attach-unit",
"named": false
}
]
}
}
},
{
"type": "axis",
"named": true,
"fields": {}
},
{
"type": "binary_expression",
"named": true,
"fields": {
"left": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
},
"operator": {
"multiple": false,
"required": true,
"types": [
{
"type": "!=",
"named": false
},
{
"type": "%",
"named": false
},
{
"type": "&",
"named": false
},
{
"type": "&&",
"named": false
},
{
"type": "*",
"named": false
},
{
"type": "+",
"named": false
},
{
"type": "-",
"named": false
},
{
"type": "/",
"named": false
},
{
"type": "<",
"named": false
},
{
"type": "<=",
"named": false
},
{
"type": "==",
"named": false
},
{
"type": ">",
"named": false
},
{
"type": ">=",
"named": false
},
{
"type": "^",
"named": false
},
{
"type": "^^",
"named": false
},
{
"type": "|",
"named": false
},
{
"type": "||",
"named": false
}
]
},
"right": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
}
}
},
{
"type": "cache_statement",
"named": true,
"fields": {
"keyword": {
"multiple": false,
"required": true,
"types": [
{
"type": "cache",
"named": false
}
]
},
"piece": {
"multiple": false,
"required": true,
"types": [
{
"type": "piece_name",
"named": true
}
]
}
}
},
{
"type": "call_script_statement",
"named": true,
"fields": {
"arguments": {
"multiple": false,
"required": true,
"types": [
{
"type": "argument_list",
"named": true
}
]
},
"function": {
"multiple": false,
"required": true,
"types": [
{
"type": "func_name",
"named": true
}
]
},
"keyword": {
"multiple": false,
"required": true,
"types": [
{
"type": "call-script",
"named": false
}
]
}
}
},
{
"type": "compound_statement",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "macro_call_statement",
"named": true
},
{
"type": "macro_name_statement",
"named": true
},
{
"type": "preproc_def",
"named": true
},
{
"type": "preproc_directive",
"named": true
},
{
"type": "preproc_function_def",
"named": true
},
{
"type": "preproc_if",
"named": true
},
{
"type": "preproc_ifdef",
"named": true
},
{
"type": "preproc_include",
"named": true
},
{
"type": "preproc_line",
"named": true
},
{
"type": "preproc_undef",
"named": true
},
{
"type": "statement",
"named": true
}
]
}
},
{
"type": "decrement_statement",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "var_name",
"named": true
}
]
}
}
},
{
"type": "degree_constant",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
},
{
"type": "number_literal",
"named": true
}
]
}
},
{
"type": "dont_cache_statement",
"named": true,
"fields": {
"keyword": {
"multiple": false,
"required": true,
"types": [
{
"type": "dont-cache",
"named": false
}
]
},
"piece": {
"multiple": false,
"required": true,
"types": [
{
"type": "piece_name",
"named": true
}
]
}
}
},
{
"type": "dont_shade_statement",
"named": true,
"fields": {
"keyword": {
"multiple": false,
"required": true,
"types": [
{
"type": "dont-shade",
"named": false
}
]
},
"piece": {
"multiple": false,
"required": true,
"types": [
{
"type": "piece_name",
"named": true
}
]
}
}
},
{
"type": "dont_shadow_statement",
"named": true,
"fields": {
"keyword": {
"multiple": false,
"required": true,
"types": [
{
"type": "dont-shadow",
"named": false
}
]
},
"piece": {
"multiple": false,
"required": true,
"types": [
{
"type": "piece_name",
"named": true
}
]
}
}
},
{
"type": "drop_unit_statement",
"named": true,
"fields": {
"argument": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
},
"keyword": {
"multiple": false,
"required": true,
"types": [
{
"type": "drop-unit",
"named": false
}
]
}
}
},
{
"type": "emit_sfx_statement",
"named": true,
"fields": {
"argument": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
},
"keyword": {
"multiple": false,
"required": true,
"types": [
{
"type": "emit-sfx",
"named": false
}
]
},
"piece": {
"multiple": false,
"required": true,
"types": [
{
"type": "piece_name",
"named": true
}
]
}
}
},
{
"type": "explode_statement",
"named": true,
"fields": {
"argument": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
},
"keyword": {
"multiple": false,
"required": true,
"types": [
{
"type": "explode",
"named": false
}
]
},
"piece": {
"multiple": false,
"required": true,
"types": [
{
"type": "piece_name",
"named": true
}
]
}
}
},
{
"type": "function_declaration",
"named": true,
"fields": {
"arg": {
"multiple": true,
"required": false,
"types": [
{
"type": "arg_name",
"named": true
}
]
},
"body": {
"multiple": false,
"required": true,
"types": [
{
"type": "compound_statement",
"named": true
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "func_name",
"named": true
}
]
}
}
},
{
"type": "get_call",
"named": true,
"fields": {
"arg": {
"multiple": true,
"required": false,
"types": [
{
"type": "expression",
"named": true
}
]
},
"value_index": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
}
}
},
{
"type": "get_statement",
"named": true,
"fields": {
"call": {
"multiple": false,
"required": true,
"types": [
{
"type": "get_call",
"named": true
}
]
},
"keyword": {
"multiple": false,
"required": true,
"types": [
{
"type": "get",
"named": false
}
]
}
}
},
{
"type": "get_term",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "get_call",
"named": true
}
]
}
},
{
"type": "hide_statement",
"named": true,
"fields": {
"keyword": {
"multiple": false,
"required": true,
"types": [
{
"type": "hide",
"named": false
}
]
},
"piece": {
"multiple": false,
"required": true,
"types": [
{
"type": "piece_name",
"named": true
}
]
}
}
},
{
"type": "if_statement",
"named": true,
"fields": {
"condition": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
},
"else": {
"multiple": false,
"required": false,
"types": [
{
"type": "statement",
"named": true
}
]
},
"then": {
"multiple": false,
"required": true,
"types": [
{
"type": "statement",
"named": true
}
]
}
}
},
{
"type": "increment_statement",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "var_name",
"named": true
}
]
}
}
},
{
"type": "linear_constant",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
},
{
"type": "number_literal",
"named": true
}
]
}
},
{
"type": "macro_call_expression",
"named": true,
"fields": {
"arguments": {
"multiple": false,
"required": true,
"types": [
{
"type": "preproc_argument_list",
"named": true
}
]
},
"function": {
"multiple": false,
"required": true,
"types": [
{
"type": "define_name",
"named": true
}
]
}
}
},
{
"type": "macro_call_statement",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "macro_call_expression",
"named": true
}
]
}
},
{
"type": "macro_name_statement",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "define_name",
"named": true
}
]
}
},
{
"type": "move_statement",
"named": true,
"fields": {
"argument": {
"multiple": true,
"required": true,
"types": [
{
"type": "expression",
"named": true
},
{
"type": "now",
"named": false
},
{
"type": "speed",
"named": false
}
]
},
"axis": {
"multiple": false,
"required": true,
"types": [
{
"type": "axis",
"named": true
}
]
},
"keyword": {
"multiple": false,
"required": true,
"types": [
{
"type": "move",
"named": false
}
]
},
"piece": {
"multiple": false,
"required": true,
"types": [
{
"type": "piece_name",
"named": true
}
]
}
}
},
{
"type": "parenthesized_expression",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
}
},
{
"type": "piece_declaration",
"named": true,
"fields": {
"name": {
"multiple": true,
"required": true,
"types": [
{
"type": "piece_name",
"named": true
}
]
}
}
},
{
"type": "preproc_argument_list",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "preproc_expression",
"named": true
}
]
}
},
{
"type": "preproc_binary_expression",
"named": true,
"fields": {
"left": {
"multiple": false,
"required": true,
"types": [
{
"type": "preproc_expression",
"named": true
}
]
},
"operator": {
"multiple": false,
"required": true,
"types": [
{
"type": "!=",
"named": false
},
{
"type": "%",
"named": false
},
{
"type": "&",
"named": false
},
{
"type": "&&",
"named": false
},
{
"type": "*",
"named": false
},
{
"type": "+",
"named": false
},
{
"type": "-",
"named": false
},
{
"type": "/",
"named": false
},
{
"type": "<",
"named": false
},
{
"type": "<<",
"named": false
},
{
"type": "<=",
"named": false
},
{
"type": "==",
"named": false
},
{
"type": ">",
"named": false
},
{
"type": ">=",
"named": false
},
{
"type": ">>",
"named": false
},
{
"type": "^",
"named": false
},
{
"type": "^^",
"named": false
},
{
"type": "||",
"named": false
}
]
},
"right": {
"multiple": false,
"required": true,
"types": [
{
"type": "preproc_expression",
"named": true
}
]
}
}
},
{
"type": "preproc_call_expression",
"named": true,
"fields": {
"arguments": {
"multiple": false,
"required": true,
"types": [
{
"type": "preproc_argument_list",
"named": true
}
]
},
"function": {
"multiple": false,
"required": true,
"types": [
{
"type": "define_name",
"named": true
}
]
}
}
},
{
"type": "preproc_def",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "define_name",
"named": true
}
]
},
"value": {
"multiple": false,
"required": false,
"types": [
{
"type": "preproc_arg",
"named": true
}
]
}
}
},
{
"type": "preproc_defined",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "define_name",
"named": true
}
]
}
},
{
"type": "preproc_directive",
"named": true,
"fields": {
"argument": {
"multiple": false,
"required": false,
"types": [
{
"type": "preproc_arg",
"named": true
}
]
},
"directive": {
"multiple": false,
"required": true,
"types": [
{
"type": "preproc_directive_name",
"named": true
}
]
}
}
},
{
"type": "preproc_elif",
"named": true,
"fields": {
"alternative": {
"multiple": false,
"required": false,
"types": [
{
"type": "preproc_elif",
"named": true
},
{
"type": "preproc_elifdef",
"named": true
},
{
"type": "preproc_else",
"named": true
}
]
},
"body": {
"multiple": true,
"required": false,
"types": [
{
"type": "declaration",
"named": true
},
{
"type": "macro_call_statement",
"named": true
},
{
"type": "macro_name_statement",
"named": true
},
{
"type": "preproc_def",
"named": true
},
{
"type": "preproc_directive",
"named": true
},
{
"type": "preproc_function_def",
"named": true
},
{
"type": "preproc_if",
"named": true
},
{
"type": "preproc_ifdef",
"named": true
},
{
"type": "preproc_include",
"named": true
},
{
"type": "preproc_line",
"named": true
},
{
"type": "preproc_undef",
"named": true
},
{
"type": "statement",
"named": true
}
]
},
"condition": {
"multiple": false,
"required": true,
"types": [
{
"type": "preproc_expression",
"named": true
}
]
}
}
},
{
"type": "preproc_elifdef",
"named": true,
"fields": {
"alternative": {
"multiple": false,
"required": false,
"types": [
{
"type": "preproc_elif",
"named": true
},
{
"type": "preproc_elifdef",
"named": true
},
{
"type": "preproc_else",
"named": true
}
]
},
"body": {
"multiple": true,
"required": false,
"types": [
{
"type": "declaration",
"named": true
},
{
"type": "macro_call_statement",
"named": true
},
{
"type": "macro_name_statement",
"named": true
},
{
"type": "preproc_def",
"named": true
},
{
"type": "preproc_directive",
"named": true
},
{
"type": "preproc_function_def",
"named": true
},
{
"type": "preproc_if",
"named": true
},
{
"type": "preproc_ifdef",
"named": true
},
{
"type": "preproc_include",
"named": true
},
{
"type": "preproc_line",
"named": true
},
{
"type": "preproc_undef",
"named": true
},
{
"type": "statement",
"named": true
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "define_name",
"named": true
}
]
}
}
},
{
"type": "preproc_else",
"named": true,
"fields": {
"body": {
"multiple": true,
"required": false,
"types": [
{
"type": "declaration",
"named": true
},
{
"type": "macro_call_statement",
"named": true
},
{
"type": "macro_name_statement",
"named": true
},
{
"type": "preproc_def",
"named": true
},
{
"type": "preproc_directive",
"named": true
},
{
"type": "preproc_function_def",
"named": true
},
{
"type": "preproc_if",
"named": true
},
{
"type": "preproc_ifdef",
"named": true
},
{
"type": "preproc_include",
"named": true
},
{
"type": "preproc_line",
"named": true
},
{
"type": "preproc_undef",
"named": true
},
{
"type": "statement",
"named": true
}
]
}
}
},
{
"type": "preproc_function_def",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "define_name",
"named": true
}
]
},
"parameters": {
"multiple": false,
"required": true,
"types": [
{
"type": "preproc_params",
"named": true
}
]
},
"value": {
"multiple": false,
"required": false,
"types": [
{
"type": "preproc_arg",
"named": true
}
]
}
}
},
{
"type": "preproc_if",
"named": true,
"fields": {
"alternative": {
"multiple": false,
"required": false,
"types": [
{
"type": "preproc_elif",
"named": true
},
{
"type": "preproc_elifdef",
"named": true
},
{
"type": "preproc_else",
"named": true
}
]
},
"body": {
"multiple": true,
"required": false,
"types": [
{
"type": "declaration",
"named": true
},
{
"type": "macro_call_statement",
"named": true
},
{
"type": "macro_name_statement",
"named": true
},
{
"type": "preproc_def",
"named": true
},
{
"type": "preproc_directive",
"named": true
},
{
"type": "preproc_function_def",
"named": true
},
{
"type": "preproc_if",
"named": true
},
{
"type": "preproc_ifdef",
"named": true
},
{
"type": "preproc_include",
"named": true
},
{
"type": "preproc_line",
"named": true
},
{
"type": "preproc_undef",
"named": true
},
{
"type": "statement",
"named": true
}
]
},
"condition": {
"multiple": false,
"required": true,
"types": [
{
"type": "preproc_expression",
"named": true
}
]
}
}
},
{
"type": "preproc_ifdef",
"named": true,
"fields": {
"alternative": {
"multiple": false,
"required": false,
"types": [
{
"type": "preproc_elif",
"named": true
},
{
"type": "preproc_elifdef",
"named": true
},
{
"type": "preproc_else",
"named": true
}
]
},
"body": {
"multiple": true,
"required": false,
"types": [
{
"type": "declaration",
"named": true
},
{
"type": "macro_call_statement",
"named": true
},
{
"type": "macro_name_statement",
"named": true
},
{
"type": "preproc_def",
"named": true
},
{
"type": "preproc_directive",
"named": true
},
{
"type": "preproc_function_def",
"named": true
},
{
"type": "preproc_if",
"named": true
},
{
"type": "preproc_ifdef",
"named": true
},
{
"type": "preproc_include",
"named": true
},
{
"type": "preproc_line",
"named": true
},
{
"type": "preproc_undef",
"named": true
},
{
"type": "statement",
"named": true
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "define_name",
"named": true
}
]
}
}
},
{
"type": "preproc_include",
"named": true,
"fields": {
"path": {
"multiple": false,
"required": true,
"types": [
{
"type": "define_name",
"named": true
},
{
"type": "preproc_call_expression",
"named": true
},
{
"type": "string_literal",
"named": true
},
{
"type": "system_lib_string",
"named": true
}
]
}
}
},
{
"type": "preproc_line",
"named": true,
"fields": {
"filename": {
"multiple": false,
"required": false,
"types": [
{
"type": "string_literal",
"named": true
}
]
},
"lineno": {
"multiple": false,
"required": true,
"types": [
{
"type": "number_literal",
"named": true
}
]
}
}
},
{
"type": "preproc_params",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "identifier",
"named": true
}
]
}
},
{
"type": "preproc_parenthesized_expression",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "preproc_expression",
"named": true
}
]
}
},
{
"type": "preproc_unary_expression",
"named": true,
"fields": {
"argument": {
"multiple": false,
"required": true,
"types": [
{
"type": "preproc_expression",
"named": true
}
]
},
"operator": {
"multiple": false,
"required": true,
"types": [
{
"type": "!",
"named": false
},
{
"type": "+",
"named": false
},
{
"type": "-",
"named": false
},
{
"type": "~",
"named": false
}
]
}
}
},
{
"type": "preproc_undef",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "define_name",
"named": true
}
]
}
}
},
{
"type": "rand_call",
"named": true,
"fields": {
"lower_bound": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
},
"upper_bound": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
}
}
},
{
"type": "return_statement",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "expression",
"named": true
}
]
}
},
{
"type": "set_signal_mask_statement",
"named": true,
"fields": {
"argument": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
},
"keyword": {
"multiple": false,
"required": true,
"types": [
{
"type": "set-signal-mask",
"named": false
}
]
}
}
},
{
"type": "set_statement",
"named": true,
"fields": {
"argument": {
"multiple": true,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
},
"keyword": {
"multiple": false,
"required": true,
"types": [
{
"type": "set",
"named": false
}
]
}
}
},
{
"type": "show_statement",
"named": true,
"fields": {
"keyword": {
"multiple": false,
"required": true,
"types": [
{
"type": "show",
"named": false
}
]
},
"piece": {
"multiple": false,
"required": true,
"types": [
{
"type": "piece_name",
"named": true
}
]
}
}
},
{
"type": "signal_statement",
"named": true,
"fields": {
"argument": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
},
"keyword": {
"multiple": false,
"required": true,
"types": [
{
"type": "signal",
"named": false
}
]
}
}
},
{
"type": "sleep_statement",
"named": true,
"fields": {
"argument": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
},
"keyword": {
"multiple": false,
"required": true,
"types": [
{
"type": "sleep",
"named": false
}
]
}
}
},
{
"type": "source_file",
"named": true,
"root": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "declaration",
"named": true
},
{
"type": "macro_call_statement",
"named": true
},
{
"type": "macro_name_statement",
"named": true
},
{
"type": "preproc_def",
"named": true
},
{
"type": "preproc_directive",
"named": true
},
{
"type": "preproc_function_def",
"named": true
},
{
"type": "preproc_if",
"named": true
},
{
"type": "preproc_ifdef",
"named": true
},
{
"type": "preproc_include",
"named": true
},
{
"type": "preproc_line",
"named": true
},
{
"type": "preproc_undef",
"named": true
}
]
}
},
{
"type": "spin_statement",
"named": true,
"fields": {
"argument": {
"multiple": true,
"required": true,
"types": [
{
"type": "accelerate",
"named": false
},
{
"type": "expression",
"named": true
}
]
},
"axis": {
"multiple": false,
"required": true,
"types": [
{
"type": "axis",
"named": true
}
]
},
"keyword": {
"multiple": false,
"required": true,
"types": [
{
"type": "spin",
"named": false
}
]
},
"piece": {
"multiple": false,
"required": true,
"types": [
{
"type": "piece_name",
"named": true
}
]
}
}
},
{
"type": "start_script_statement",
"named": true,
"fields": {
"arguments": {
"multiple": false,
"required": true,
"types": [
{
"type": "argument_list",
"named": true
}
]
},
"function": {
"multiple": false,
"required": true,
"types": [
{
"type": "func_name",
"named": true
}
]
},
"keyword": {
"multiple": false,
"required": true,
"types": [
{
"type": "start-script",
"named": false
}
]
}
}
},
{
"type": "static_var_declaration",
"named": true,
"fields": {
"name": {
"multiple": true,
"required": true,
"types": [
{
"type": "var_name",
"named": true
}
]
}
}
},
{
"type": "stop_spin_statement",
"named": true,
"fields": {
"argument": {
"multiple": true,
"required": false,
"types": [
{
"type": "decelerate",
"named": false
},
{
"type": "expression",
"named": true
}
]
},
"axis": {
"multiple": false,
"required": true,
"types": [
{
"type": "axis",
"named": true
}
]
},
"keyword": {
"multiple": false,
"required": true,
"types": [
{
"type": "stop-spin",
"named": false
}
]
},
"piece": {
"multiple": false,
"required": true,
"types": [
{
"type": "piece_name",
"named": true
}
]
}
}
},
{
"type": "string_literal",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "escape_sequence",
"named": true
},
{
"type": "string_content",
"named": true
}
]
}
},
{
"type": "turn_statement",
"named": true,
"fields": {
"argument": {
"multiple": true,
"required": true,
"types": [
{
"type": "expression",
"named": true
},
{
"type": "now",
"named": false
},
{
"type": "speed",
"named": false
}
]
},
"axis": {
"multiple": false,
"required": true,
"types": [
{
"type": "axis",
"named": true
}
]
},
"keyword": {
"multiple": false,
"required": true,
"types": [
{
"type": "turn",
"named": false
}
]
},
"piece": {
"multiple": false,
"required": true,
"types": [
{
"type": "piece_name",
"named": true
}
]
}
}
},
{
"type": "unary_expression",
"named": true,
"fields": {
"argument": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
},
"operator": {
"multiple": false,
"required": true,
"types": [
{
"type": "!",
"named": false
}
]
}
}
},
{
"type": "var_statement",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "var_name",
"named": true
}
]
}
},
{
"type": "wait_for_move_statement",
"named": true,
"fields": {
"axis": {
"multiple": false,
"required": true,
"types": [
{
"type": "axis",
"named": true
}
]
},
"keyword": {
"multiple": false,
"required": true,
"types": [
{
"type": "wait-for-move",
"named": false
}
]
},
"piece": {
"multiple": false,
"required": true,
"types": [
{
"type": "piece_name",
"named": true
}
]
}
}
},
{
"type": "wait_for_turn_statement",
"named": true,
"fields": {
"axis": {
"multiple": false,
"required": true,
"types": [
{
"type": "axis",
"named": true
}
]
},
"keyword": {
"multiple": false,
"required": true,
"types": [
{
"type": "wait-for-turn",
"named": false
}
]
},
"piece": {
"multiple": false,
"required": true,
"types": [
{
"type": "piece_name",
"named": true
}
]
}
}
},
{
"type": "while_statement",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": true,
"types": [
{
"type": "statement",
"named": true
}
]
},
"condition": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
}
}
},
{
"type": "\n",
"named": false
},
{
"type": "!",
"named": false
},
{
"type": "!=",
"named": false
},
{
"type": "\"",
"named": false
},
{
"type": "#define",
"named": false
},
{
"type": "#elif",
"named": false
},
{
"type": "#elifdef",
"named": false
},
{
"type": "#elifndef",
"named": false
},
{
"type": "#else",
"named": false
},
{
"type": "#endif",
"named": false
},
{
"type": "#if",
"named": false
},
{
"type": "#ifdef",
"named": false
},
{
"type": "#ifndef",
"named": false
},
{
"type": "#include",
"named": false
},
{
"type": "#line",
"named": false
},
{
"type": "#undef",
"named": false
},
{
"type": "%",
"named": false
},
{
"type": "&",
"named": false
},
{
"type": "&&",
"named": false
},
{
"type": "(",
"named": false
},
{
"type": "()",
"named": false
},
{
"type": ")",
"named": false
},
{
"type": "*",
"named": false
},
{
"type": "+",
"named": false
},
{
"type": "++",
"named": false
},
{
"type": ",",
"named": false
},
{
"type": "-",
"named": false
},
{
"type": "--",
"named": false
},
{
"type": "...",
"named": false
},
{
"type": "/",
"named": false
},
{
"type": ";",
"named": false
},
{
"type": "<",
"named": false
},
{
"type": "<<",
"named": false
},
{
"type": "<=",
"named": false
},
{
"type": "=",
"named": false
},
{
"type": "==",
"named": false
},
{
"type": ">",
"named": false
},
{
"type": ">=",
"named": false
},
{
"type": ">>",
"named": false
},
{
"type": "[",
"named": false
},
{
"type": "]",
"named": false
},
{
"type": "^",
"named": false
},
{
"type": "^^",
"named": false
},
{
"type": "accelerate",
"named": false
},
{
"type": "along",
"named": false
},
{
"type": "arg_name",
"named": true
},
{
"type": "around",
"named": false
},
{
"type": "attach-unit",
"named": false
},
{
"type": "cache",
"named": false
},
{
"type": "call-script",
"named": false
},
{
"type": "comment",
"named": true,
"extra": true
},
{
"type": "decelerate",
"named": false
},
{
"type": "define_name",
"named": true
},
{
"type": "defined",
"named": false
},
{
"type": "dont-cache",
"named": false
},
{
"type": "dont-shade",
"named": false
},
{
"type": "dont-shadow",
"named": false
},
{
"type": "drop-unit",
"named": false
},
{
"type": "else",
"named": false
},
{
"type": "emit-sfx",
"named": false
},
{
"type": "escape_sequence",
"named": true
},
{
"type": "explode",
"named": false
},
{
"type": "false",
"named": true
},
{
"type": "from",
"named": false
},
{
"type": "func_name",
"named": true
},
{
"type": "get",
"named": false
},
{
"type": "hide",
"na