UNPKG

tree-sitter-m68k

Version:

Motorola 68000 family assembly grammar for tree-sitter

2,513 lines (2,512 loc) 77.5 kB
[ { "type": "absolute_value", "named": true, "fields": { "size": { "multiple": false, "required": true, "types": [ { "type": "macro_arg", "named": true }, { "type": "size", "named": true } ] }, "value": { "multiple": false, "required": true, "types": [ { "type": "binary_expression", "named": true }, { "type": "binary_literal", "named": true }, { "type": "carg", "named": true }, { "type": "decimal_literal", "named": true }, { "type": "hexadecimal_literal", "named": true }, { "type": "interpolated", "named": true }, { "type": "macro_arg", "named": true }, { "type": "narg", "named": true }, { "type": "octal_literal", "named": true }, { "type": "parenthesized_expression", "named": true }, { "type": "pc", "named": true }, { "type": "reptn", "named": true }, { "type": "string_literal", "named": true }, { "type": "symbol", "named": true }, { "type": "unary_expression", "named": true } ] } } }, { "type": "argument_list", "named": true, "fields": {}, "children": { "multiple": true, "required": true, "types": [ { "type": "absolute_value", "named": true }, { "type": "address_register", "named": true }, { "type": "binary_expression", "named": true }, { "type": "binary_literal", "named": true }, { "type": "carg", "named": true }, { "type": "data_register", "named": true }, { "type": "decimal_literal", "named": true }, { "type": "float_register", "named": true }, { "type": "hexadecimal_literal", "named": true }, { "type": "immediate_value", "named": true }, { "type": "indirect_address", "named": true }, { "type": "indirect_address_postinc", "named": true }, { "type": "indirect_address_predec", "named": true }, { "type": "interpolated", "named": true }, { "type": "macro_arg", "named": true }, { "type": "named_register", "named": true }, { "type": "narg", "named": true }, { "type": "octal_literal", "named": true }, { "type": "offset_address", "named": true }, { "type": "offset_address_idx", "named": true }, { "type": "parenthesized_expression", "named": true }, { "type": "pc", "named": true }, { "type": "quoted_arg", "named": true }, { "type": "register_list", "named": true }, { "type": "reptn", "named": true }, { "type": "string_literal", "named": true }, { "type": "symbol", "named": true }, { "type": "unary_expression", "named": true } ] } }, { "type": "binary_expression", "named": true, "fields": { "left": { "multiple": false, "required": true, "types": [ { "type": "binary_expression", "named": true }, { "type": "binary_literal", "named": true }, { "type": "carg", "named": true }, { "type": "decimal_literal", "named": true }, { "type": "hexadecimal_literal", "named": true }, { "type": "interpolated", "named": true }, { "type": "macro_arg", "named": true }, { "type": "narg", "named": true }, { "type": "octal_literal", "named": true }, { "type": "parenthesized_expression", "named": true }, { "type": "pc", "named": true }, { "type": "reptn", "named": true }, { "type": "string_literal", "named": true }, { "type": "symbol", "named": true }, { "type": "unary_expression", "named": true } ] }, "operator": { "multiple": false, "required": true, "types": [ { "type": "operator", "named": true } ] }, "right": { "multiple": false, "required": true, "types": [ { "type": "binary_expression", "named": true }, { "type": "binary_literal", "named": true }, { "type": "carg", "named": true }, { "type": "decimal_literal", "named": true }, { "type": "hexadecimal_literal", "named": true }, { "type": "interpolated", "named": true }, { "type": "macro_arg", "named": true }, { "type": "narg", "named": true }, { "type": "octal_literal", "named": true }, { "type": "parenthesized_expression", "named": true }, { "type": "pc", "named": true }, { "type": "reptn", "named": true }, { "type": "string_literal", "named": true }, { "type": "symbol", "named": true }, { "type": "unary_expression", "named": true } ] } } }, { "type": "comment", "named": true, "fields": {} }, { "type": "conditional", "named": true, "fields": { "alternate": { "multiple": false, "required": false, "types": [ { "type": "element_list", "named": true } ] }, "consequent": { "multiple": false, "required": false, "types": [ { "type": "element_list", "named": true } ] }, "left": { "multiple": false, "required": false, "types": [ { "type": "binary_expression", "named": true }, { "type": "binary_literal", "named": true }, { "type": "carg", "named": true }, { "type": "decimal_literal", "named": true }, { "type": "hexadecimal_literal", "named": true }, { "type": "interpolated", "named": true }, { "type": "macro_arg", "named": true }, { "type": "narg", "named": true }, { "type": "octal_literal", "named": true }, { "type": "parenthesized_expression", "named": true }, { "type": "pc", "named": true }, { "type": "reptn", "named": true }, { "type": "string_literal", "named": true }, { "type": "symbol", "named": true }, { "type": "unary_expression", "named": true } ] }, "mnemonic": { "multiple": false, "required": true, "types": [ { "type": "control_mnemonic", "named": true } ] }, "right": { "multiple": false, "required": false, "types": [ { "type": "binary_expression", "named": true }, { "type": "binary_literal", "named": true }, { "type": "carg", "named": true }, { "type": "decimal_literal", "named": true }, { "type": "hexadecimal_literal", "named": true }, { "type": "interpolated", "named": true }, { "type": "macro_arg", "named": true }, { "type": "narg", "named": true }, { "type": "octal_literal", "named": true }, { "type": "parenthesized_expression", "named": true }, { "type": "pc", "named": true }, { "type": "reptn", "named": true }, { "type": "string_literal", "named": true }, { "type": "symbol", "named": true }, { "type": "unary_expression", "named": true } ] }, "test": { "multiple": false, "required": false, "types": [ { "type": "binary_expression", "named": true }, { "type": "binary_literal", "named": true }, { "type": "carg", "named": true }, { "type": "decimal_literal", "named": true }, { "type": "hexadecimal_literal", "named": true }, { "type": "interpolated", "named": true }, { "type": "macro_arg", "named": true }, { "type": "narg", "named": true }, { "type": "octal_literal", "named": true }, { "type": "parenthesized_expression", "named": true }, { "type": "pc", "named": true }, { "type": "reptn", "named": true }, { "type": "string_literal", "named": true }, { "type": "symbol", "named": true }, { "type": "unary_expression", "named": true } ] } }, "children": { "multiple": true, "required": true, "types": [ { "type": "comment", "named": true }, { "type": "control_mnemonic", "named": true }, { "type": "external_label", "named": true }, { "type": "label", "named": true } ] } }, { "type": "conditional_instruction", "named": true, "fields": { "consequent": { "multiple": false, "required": true, "types": [ { "type": "instruction", "named": true } ] }, "test": { "multiple": false, "required": true, "types": [ { "type": "binary_expression", "named": true }, { "type": "binary_literal", "named": true }, { "type": "carg", "named": true }, { "type": "decimal_literal", "named": true }, { "type": "hexadecimal_literal", "named": true }, { "type": "interpolated", "named": true }, { "type": "macro_arg", "named": true }, { "type": "narg", "named": true }, { "type": "octal_literal", "named": true }, { "type": "parenthesized_expression", "named": true }, { "type": "pc", "named": true }, { "type": "reptn", "named": true }, { "type": "string_literal", "named": true }, { "type": "symbol", "named": true }, { "type": "unary_expression", "named": true } ] } }, "children": { "multiple": false, "required": true, "types": [ { "type": "control_mnemonic", "named": true } ] } }, { "type": "data_constant", "named": true, "fields": { "mnemonic": { "multiple": false, "required": true, "types": [ { "type": "directive_mnemonic", "named": true } ] }, "size": { "multiple": false, "required": false, "types": [ { "type": "macro_arg", "named": true }, { "type": "size", "named": true } ] }, "values": { "multiple": false, "required": true, "types": [ { "type": "expression_list", "named": true } ] } } }, { "type": "data_space", "named": true, "fields": { "fill": { "multiple": false, "required": false, "types": [ { "type": "binary_expression", "named": true }, { "type": "binary_literal", "named": true }, { "type": "carg", "named": true }, { "type": "decimal_literal", "named": true }, { "type": "hexadecimal_literal", "named": true }, { "type": "interpolated", "named": true }, { "type": "macro_arg", "named": true }, { "type": "narg", "named": true }, { "type": "octal_literal", "named": true }, { "type": "parenthesized_expression", "named": true }, { "type": "pc", "named": true }, { "type": "reptn", "named": true }, { "type": "string_literal", "named": true }, { "type": "symbol", "named": true }, { "type": "unary_expression", "named": true } ] }, "length": { "multiple": false, "required": true, "types": [ { "type": "binary_expression", "named": true }, { "type": "binary_literal", "named": true }, { "type": "carg", "named": true }, { "type": "decimal_literal", "named": true }, { "type": "hexadecimal_literal", "named": true }, { "type": "interpolated", "named": true }, { "type": "macro_arg", "named": true }, { "type": "narg", "named": true }, { "type": "octal_literal", "named": true }, { "type": "parenthesized_expression", "named": true }, { "type": "pc", "named": true }, { "type": "reptn", "named": true }, { "type": "string_literal", "named": true }, { "type": "symbol", "named": true }, { "type": "unary_expression", "named": true } ] }, "mnemonic": { "multiple": false, "required": true, "types": [ { "type": "directive_mnemonic", "named": true } ] }, "size": { "multiple": false, "required": false, "types": [ { "type": "macro_arg", "named": true }, { "type": "size", "named": true } ] } } }, { "type": "decimal_literal", "named": true, "fields": {} }, { "type": "directive", "named": true, "fields": { "mnemonic": { "multiple": false, "required": true, "types": [ { "type": "directive_mnemonic", "named": true } ] }, "operands": { "multiple": false, "required": false, "types": [ { "type": "operand_list", "named": true } ] }, "size": { "multiple": false, "required": false, "types": [ { "type": "macro_arg", "named": true }, { "type": "size", "named": true } ] } } }, { "type": "element_list", "named": true, "fields": {}, "children": { "multiple": true, "required": false, "types": [ { "type": "comment", "named": true }, { "type": "conditional", "named": true }, { "type": "conditional_instruction", "named": true }, { "type": "data_constant", "named": true }, { "type": "data_space", "named": true }, { "type": "directive", "named": true }, { "type": "end", "named": true }, { "type": "external_definition", "named": true }, { "type": "external_label", "named": true }, { "type": "external_reference", "named": true }, { "type": "include", "named": true }, { "type": "include_bin", "named": true }, { "type": "include_dir", "named": true }, { "type": "instruction", "named": true }, { "type": "label", "named": true }, { "type": "macro_call", "named": true }, { "type": "macro_definition", "named": true }, { "type": "offset_definition", "named": true }, { "type": "opt", "named": true }, { "type": "register_definition", "named": true }, { "type": "register_list_definition", "named": true }, { "type": "rem", "named": true }, { "type": "repeat", "named": true }, { "type": "section", "named": true }, { "type": "symbol_assignment", "named": true }, { "type": "symbol_definition", "named": true } ] } }, { "type": "end", "named": true, "fields": {}, "children": { "multiple": true, "required": true, "types": [ { "type": "control_mnemonic", "named": true }, { "type": "external_label", "named": true }, { "type": "label", "named": true } ] } }, { "type": "expression_list", "named": true, "fields": {}, "children": { "multiple": true, "required": true, "types": [ { "type": "binary_expression", "named": true }, { "type": "binary_literal", "named": true }, { "type": "carg", "named": true }, { "type": "decimal_literal", "named": true }, { "type": "hexadecimal_literal", "named": true }, { "type": "interpolated", "named": true }, { "type": "macro_arg", "named": true }, { "type": "narg", "named": true }, { "type": "octal_literal", "named": true }, { "type": "parenthesized_expression", "named": true }, { "type": "pc", "named": true }, { "type": "reptn", "named": true }, { "type": "string_literal", "named": true }, { "type": "symbol", "named": true }, { "type": "unary_expression", "named": true } ] } }, { "type": "external_definition", "named": true, "fields": { "mnemonic": { "multiple": false, "required": true, "types": [ { "type": "directive_mnemonic", "named": true } ] }, "symbols": { "multiple": false, "required": true, "types": [ { "type": "symbol_list", "named": true } ] } } }, { "type": "external_label", "named": true, "fields": { "name": { "multiple": false, "required": true, "types": [ { "type": "carg", "named": true }, { "type": "interpolated", "named": true }, { "type": "macro_arg", "named": true }, { "type": "narg", "named": true }, { "type": "pc", "named": true }, { "type": "reptn", "named": true }, { "type": "symbol", "named": true } ] } } }, { "type": "external_reference", "named": true, "fields": { "mnemonic": { "multiple": false, "required": true, "types": [ { "type": "directive_mnemonic", "named": true } ] }, "symbols": { "multiple": false, "required": true, "types": [ { "type": "symbol_list", "named": true } ] } } }, { "type": "idx", "named": true, "fields": { "register": { "multiple": false, "required": true, "types": [ { "type": "address_register", "named": true }, { "type": "carg", "named": true }, { "type": "data_register", "named": true }, { "type": "interpolated", "named": true }, { "type": "macro_arg", "named": true }, { "type": "named_register", "named": true }, { "type": "narg", "named": true }, { "type": "pc", "named": true }, { "type": "reptn", "named": true }, { "type": "symbol", "named": true } ] }, "scale": { "multiple": false, "required": false, "types": [ { "type": "binary_expression", "named": true }, { "type": "binary_literal", "named": true }, { "type": "carg", "named": true }, { "type": "decimal_literal", "named": true }, { "type": "hexadecimal_literal", "named": true }, { "type": "interpolated", "named": true }, { "type": "macro_arg", "named": true }, { "type": "narg", "named": true }, { "type": "octal_literal", "named": true }, { "type": "parenthesized_expression", "named": true }, { "type": "pc", "named": true }, { "type": "reptn", "named": true }, { "type": "string_literal", "named": true }, { "type": "symbol", "named": true }, { "type": "unary_expression", "named": true } ] }, "size": { "multiple": false, "required": false, "types": [ { "type": "macro_arg", "named": true }, { "type": "size", "named": true } ] } } }, { "type": "immediate_value", "named": true, "fields": { "value": { "multiple": false, "required": true, "types": [ { "type": "binary_expression", "named": true }, { "type": "binary_literal", "named": true }, { "type": "carg", "named": true }, { "type": "decimal_literal", "named": true }, { "type": "hexadecimal_literal", "named": true }, { "type": "interpolated", "named": true }, { "type": "macro_arg", "named": true }, { "type": "narg", "named": true }, { "type": "octal_literal", "named": true }, { "type": "parenthesized_expression", "named": true }, { "type": "pc", "named": true }, { "type": "reptn", "named": true }, { "type": "string_literal", "named": true }, { "type": "symbol", "named": true }, { "type": "unary_expression", "named": true } ] } } }, { "type": "include", "named": true, "fields": { "path": { "multiple": false, "required": true, "types": [ { "type": "path", "named": true } ] } }, "children": { "multiple": false, "required": true, "types": [ { "type": "directive_mnemonic", "named": true } ] } }, { "type": "include_bin", "named": true, "fields": { "length": { "multiple": false, "required": false, "types": [ { "type": "binary_expression", "named": true }, { "type": "binary_literal", "named": true }, { "type": "carg", "named": true }, { "type": "decimal_literal", "named": true }, { "type": "hexadecimal_literal", "named": true }, { "type": "interpolated", "named": true }, { "type": "macro_arg", "named": true }, { "type": "narg", "named": true }, { "type": "octal_literal", "named": true }, { "type": "parenthesized_expression", "named": true }, { "type": "pc", "named": true }, { "type": "reptn", "named": true }, { "type": "string_literal", "named": true }, { "type": "symbol", "named": true }, { "type": "unary_expression", "named": true } ] }, "offset": { "multiple": false, "required": false, "types": [ { "type": "binary_expression", "named": true }, { "type": "binary_literal", "named": true }, { "type": "carg", "named": true }, { "type": "decimal_literal", "named": true }, { "type": "hexadecimal_literal", "named": true }, { "type": "interpolated", "named": true }, { "type": "macro_arg", "named": true }, { "type": "narg", "named": true }, { "type": "octal_literal", "named": true }, { "type": "parenthesized_expression", "named": true }, { "type": "pc", "named": true }, { "type": "reptn", "named": true }, { "type": "string_literal", "named": true }, { "type": "symbol", "named": true }, { "type": "unary_expression", "named": true } ] }, "path": { "multiple": false, "required": true, "types": [ { "type": "path", "named": true } ] } }, "children": { "multiple": false, "required": true, "types": [ { "type": "directive_mnemonic", "named": true } ] } }, { "type": "include_dir", "named": true, "fields": { "path": { "multiple": false, "required": true, "types": [ { "type": "path", "named": true } ] } }, "children": { "multiple": false, "required": true, "types": [ { "type": "directive_mnemonic", "named": true } ] } }, { "type": "indirect_address", "named": true, "fields": { "register": { "multiple": false, "required": true, "types": [ { "type": "address_register", "named": true }, { "type": "carg", "named": true }, { "type": "interpolated", "named": true }, { "type": "macro_arg", "named": true }, { "type": "named_register", "named": true }, { "type": "narg", "named": true }, { "type": "pc", "named": true }, { "type": "reptn", "named": true }, { "type": "symbol", "named": true } ] } } }, { "type": "indirect_address_postinc", "named": true, "fields": { "register": { "multiple": false, "required": true, "types": [ { "type": "address_register", "named": true }, { "type": "carg", "named": true }, { "type": "interpolated", "named": true }, { "type": "macro_arg", "named": true }, { "type": "named_register", "named": true }, { "type": "narg", "named": true }, { "type": "pc", "named": true }, { "type": "reptn", "named": true }, { "type": "symbol", "named": true } ] } } }, { "type": "indirect_address_predec", "named": true, "fields": { "register": { "multiple": false, "required": true, "types": [ { "type": "address_register", "named": true }, { "type": "carg", "named": true }, { "type": "interpolated", "named": true }, { "type": "macro_arg", "named": true }, { "type": "named_register", "named": true }, { "type": "narg", "named": true }, { "type": "pc", "named": true }, { "type": "reptn", "named": true }, { "type": "symbol", "named": true } ] } } }, { "type": "instruction", "named": true, "fields": { "mnemonic": { "multiple": false, "required": true, "types": [ { "type": "instruction_mnemonic", "named": true } ] }, "operands": { "multiple": false, "required": false, "types": [ { "type": "operand_list", "named": true } ] }, "size": { "multiple": false, "required": false, "types": [ { "type": "macro_arg", "named": true }, { "type": "size", "named": true } ] } } }, { "type": "interpolated", "named": true, "fields": {}, "children": { "multiple": true, "required": true, "types": [ { "type": "macro_arg", "named": true } ] } }, { "type": "label", "named": true, "fields": { "name": { "multiple": false, "required": true, "types": [ { "type": "carg", "named": true }, { "type": "interpolated", "named": true }, { "type": "macro_arg", "named": true }, { "type": "narg", "named": true }, { "type": "pc", "named": true }, { "type": "reptn", "named": true }, { "type": "symbol", "named": true } ] } } }, { "type": "macro_arg", "named": true, "fields": {} }, { "type": "macro_call", "named": true, "fields": { "arguments": { "multiple": false, "required": false, "types": [ { "type": "argument_list", "named": true } ] }, "name": { "multiple": false, "required": true, "types": [ { "type": "carg", "named": true }, { "type": "interpolated", "named": true }, { "type": "macro_arg", "named": true }, { "type": "narg", "named": true }, { "type": "pc", "named": true }, { "type": "reptn", "named": true }, { "type": "symbol", "named": true } ] }, "qualifier": { "multiple": false, "required": false, "types": [ { "type": "binary_expression", "named": true }, { "type": "binary_literal", "named": true }, { "type": "carg", "named": true }, { "type": "decimal_literal", "named": true }, { "type": "hexadecimal_literal", "named": true }, { "type": "interpolated", "named": true }, { "type": "macro_arg", "named": true }, { "type": "narg", "named": true }, { "type": "octal_literal", "named": true }, { "type": "parenthesized_expression", "named": true }, { "type": "pc", "named": true }, { "type": "reptn", "named": true }, { "type": "string_literal", "named": true }, { "type": "symbol", "named": true }, { "type": "unary_expression", "named": true } ] } } }, { "type": "macro_definition", "named": true, "fields": { "body": { "multiple": false, "required": false, "types": [ { "type": "element_list", "named": true } ] }, "name": { "multiple": false, "required": true, "types": [ { "type": "carg", "named": true }, { "type": "interpolated", "named": true }, { "type": "macro_arg", "named": true }, { "type": "narg", "named": true }, { "type": "pc", "named": true }, { "type": "reptn", "named": true }, { "type": "symbol", "named": true } ] } }, "children": { "multiple": true, "required": true, "types": [ { "type": "comment", "named": true }, { "type": "control_mnemonic", "named": true }, { "type": "external_label", "named": true }, { "type": "label", "named": true } ] } }, { "type": "memory_type", "named": true, "fields": {} }, { "type": "named_register", "named": true, "fields": {} }, { "type": "offset_address", "named": true, "fields": { "offset": { "multiple": false, "required": true, "types": [ { "type": "binary_expression", "named": true }, { "type": "binary_literal", "named": true }, { "type": "carg", "named": true }, { "type": "decimal_literal", "named": true }, { "type": "hexadecimal_literal", "named": true }, { "type": "interpolated", "named": true }, { "type": "macro_arg", "named": true }, { "type": "narg", "named": true }, { "type": "octal_literal", "named": true }, { "type": "parenthesized_expression", "named": true }, { "type": "pc", "named": true }, { "type": "reptn", "named": true }, { "type": "string_literal", "named": true }, { "type": "symbol", "named": true }, { "type": "unary_expression", "named": true } ] }, "register": { "multiple": false, "required": true, "types": [ { "type": "address_register", "named": true }, { "type": "carg", "named": true }, { "type": "interpolated", "named": true }, { "type": "macro_arg", "named": true }, { "type": "named_register", "named": true }, { "type": "narg", "named": true }, { "type": "pc", "named": true }, { "type": "reptn", "named": true }, { "type": "symbol", "named": true } ] } } }, { "type": "offset_address_idx", "named": true, "fields": { "idx": { "multiple": false, "required": true, "types": [ { "type": "idx", "named": true } ] }, "offset": { "multiple": false, "required": false, "types": [ { "type": "binary_expression", "named": true }, { "type": "binary_literal", "named": true }, { "type": "carg", "named": true }, { "type": "decimal_literal", "named": true }, { "type": "hexadecimal_literal", "named": true }, { "type": "interpolated", "named": true }, { "type": "macro_arg", "named": true }, { "type": "narg", "named": true }, { "type": "octal_literal", "named": true }, { "type": "parenthesized_expression", "named": true }, { "type": "pc", "named": true }, { "type": "reptn", "named": true }, { "type": "string_literal", "named": true }, { "type": "symbol", "named": true }, { "type": "unary_expression", "named": true } ] }, "register": { "multiple": false, "required": true, "types": [ { "type": "address_register", "named": true }, { "type": "carg", "named": true }, { "type": "interpolated", "named": true }, { "type": "macro_arg", "named": true }, { "type": "named_register", "named": true }, { "type": "narg", "named": true }, { "type": "pc", "named": true }, { "type": "reptn", "named": true }, { "type": "symbol", "named": true } ] } } }, { "type": "offset_definition", "named": true, "fields": { "length": { "multiple": false, "required": true, "types": [ { "type": "binary_expression", "named": true }, { "type": "binary_literal", "named": true }, { "type": "carg", "named": true }, { "type": "decimal_literal", "named": true }, { "type": "hexadecimal_literal", "named": true }, { "type": "interpolated", "named": true }, { "type": "macro_arg", "named": true }, { "type": "narg", "named": true }, { "type": "octal_literal", "named": true }, { "type": "parenthesized_expression", "named": true }, { "type": "pc", "named": true }, { "type": "reptn", "named": true }, { "type": "string_literal", "named": true }, { "type": "symbol", "named": true }, { "type": "unary_expression", "named": true } ] }, "name": { "multiple": false, "required": true, "types": [ { "type": "carg", "named": true }, { "type": "interpolated", "named": true }, { "type": "macro_arg", "named": true }, { "type": "narg", "named": true }, { "type": "pc", "named": true }, { "type": "reptn", "named": true }, { "type": "symbol", "named": true } ] }, "size": { "multiple": false, "required": false, "types": [ { "type": "macro_arg", "named": true }, { "type": "size", "named": true } ] } }, "children": { "multiple": true, "required": true, "types": [ { "type": "comment", "named": true }, { "type": "directive_mnemonic", "named": true } ] } }, { "type": "operand_list", "named": true, "fields": {}, "children": { "multiple": true, "required": true, "types": [ { "type": "absolute_value", "named": true }, { "type": "address_register", "named": true }, { "type": "binary_expression", "named": true }, { "type": "binary_literal", "named": true }, {