UNPKG

tree-sitter-m68k

Version:

Motorola 68000 family assembly grammar for tree-sitter

484 lines (457 loc) 10.3 kB
============================================ Repeat ============================================ rept 6 move d0,d1 move d1,d2 endr REPT foo comment here move d0,d1 move d1,d2 ENDR; comment REPT foo comment here move d0,d1 move d1,d2 ENDR comment rept 6 endr --- (source_file (repeat (control_mnemonic) (decimal_literal) (element_list (instruction (instruction_mnemonic) (operand_list (data_register) (data_register))) (instruction (instruction_mnemonic) (operand_list (data_register) (data_register)))) (control_mnemonic)) (repeat (control_mnemonic) (symbol) (comment) (element_list (instruction (instruction_mnemonic) (operand_list (data_register) (data_register))) (instruction (instruction_mnemonic) (operand_list (data_register) (data_register)))) (control_mnemonic) (comment)) (repeat (control_mnemonic) (symbol) (comment) (element_list (instruction (instruction_mnemonic) (operand_list (data_register) (data_register))) (instruction (instruction_mnemonic) (operand_list (data_register) (data_register)))) (control_mnemonic) (comment)) (repeat (control_mnemonic) (decimal_literal) (control_mnemonic)) ) ============================================ Conditional expression ============================================ ifeq foo-1 move d0,d1 move d0,d1 move d0,d1 endc IFEQ foo move d0,d1 ENDIF IFEQ foo ENDIF --- (source_file (conditional mnemonic: (control_mnemonic) test: (binary_expression left: (symbol) operator: (operator) right: (decimal_literal)) consequent: (element_list (instruction mnemonic: (instruction_mnemonic) operands: (operand_list (data_register) (data_register))) (instruction mnemonic: (instruction_mnemonic) operands: (operand_list (data_register) (data_register))) (instruction mnemonic: (instruction_mnemonic) operands: (operand_list (data_register) (data_register)))) (control_mnemonic)) (conditional mnemonic: (control_mnemonic) test: (symbol) consequent: (element_list (instruction mnemonic: (instruction_mnemonic) operands: (operand_list (data_register) (data_register)))) (control_mnemonic)) (conditional mnemonic: (control_mnemonic) test: (symbol) (control_mnemonic)) ) ============================================ Else ============================================ ifeq foo move d0,d1 move d0,d1 move d0,d1 else move d0,d1 endc ifeq foo; foo move d0,d1 move d0,d1 move d0,d1 elseif ; bar baz move d0,d1 endif --- (source_file (conditional mnemonic: (control_mnemonic) test: (symbol) consequent: (element_list (instruction mnemonic: (instruction_mnemonic) operands: (operand_list (data_register) (data_register))) (instruction mnemonic: (instruction_mnemonic) operands: (operand_list (data_register) (data_register))) (instruction mnemonic: (instruction_mnemonic) operands: (operand_list (data_register) (data_register)))) (control_mnemonic) alternate: (element_list (instruction mnemonic: (instruction_mnemonic) operands: (operand_list (data_register) (data_register)))) (control_mnemonic)) (conditional mnemonic: (control_mnemonic) test: (symbol) (comment) consequent: (element_list (instruction mnemonic: (instruction_mnemonic) operands: (operand_list (data_register) (data_register))) (instruction mnemonic: (instruction_mnemonic) operands: (operand_list (data_register) (data_register))) (instruction mnemonic: (instruction_mnemonic) operands: (operand_list (data_register) (data_register)))) (control_mnemonic) (comment) alternate: (element_list (instruction mnemonic: (instruction_mnemonic) operands: (operand_list (data_register) (data_register)))) (control_mnemonic))) ============================================ Conditional no operand ============================================ if1 move d0,d1 move d0,d1 endc --- (source_file (conditional mnemonic: (control_mnemonic) consequent: (element_list (instruction mnemonic: (instruction_mnemonic) operands: (operand_list (data_register) (data_register))) (instruction mnemonic: (instruction_mnemonic) operands: (operand_list (data_register) (data_register)))) (control_mnemonic))) ============================================ Conditional comparison ============================================ ifc "foo",bar move d0,d1 move d0,d1 endc --- (source_file (conditional mnemonic: (control_mnemonic) left: (string_literal) right: (symbol) consequent: (element_list (instruction mnemonic: (instruction_mnemonic) operands: (operand_list (data_register) (data_register))) (instruction mnemonic: (instruction_mnemonic) operands: (operand_list (data_register) (data_register)))) (control_mnemonic))) ============================================ Conditional symbol ============================================ ifd foo move d0,d1 move d0,d1 endc --- (source_file (conditional mnemonic: (control_mnemonic) test: (symbol) consequent: (element_list (instruction mnemonic: (instruction_mnemonic) operands: (operand_list (data_register) (data_register))) (instruction mnemonic: (instruction_mnemonic) operands: (operand_list (data_register) (data_register)))) (control_mnemonic))) ============================================ Inline ============================================ iif foo move d0,d1 --- (source_file (conditional_instruction (control_mnemonic) test: (symbol) consequent: (instruction mnemonic: (instruction_mnemonic) operands: (operand_list (data_register) (data_register)))) ) ============================================ Conditional nested ============================================ ifeq 0 move d0,d1 ifeq 0 move d0,d1 endc move d0,d1 endc --- (source_file (conditional mnemonic: (control_mnemonic) test: (decimal_literal) consequent: (element_list (instruction mnemonic: (instruction_mnemonic) operands: (operand_list (data_register) (data_register))) (conditional mnemonic: (control_mnemonic) test: (decimal_literal) consequent: (element_list (instruction mnemonic: (instruction_mnemonic) operands: (operand_list (data_register) (data_register)))) (control_mnemonic)) (instruction mnemonic: (instruction_mnemonic) operands: (operand_list (data_register) (data_register)))) (control_mnemonic))) ============================================ Rem ============================================ rem foo foo erem move d0,d1 --- (source_file (rem (control_mnemonic) (comment) (control_mnemonic)) (instruction mnemonic: (instruction_mnemonic) operands: (operand_list (data_register) (data_register))) ) ============================================ End ============================================ end Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam dictum sollicitudin eliteu ullamcorper lacus vehicula non. Pellentesque id tristique ex. --- (source_file (end (control_mnemonic))) ============================================ Nested repeating ============================================ IFND MACROS_I ifnd PROFILE rts endc ifnd PROFILE rts endc ifnd PROFILE rts endc ifnd PROFILE rts endc ifnd PROFILE rts endc ifnd PROFILE rts endc ifnd PROFILE rts endc ifnd PROFILE rts endc ifnd PROFILE rts endc ENDC --- (source_file (conditional (control_mnemonic) (symbol) (element_list (conditional (control_mnemonic) (symbol) (element_list (instruction (instruction_mnemonic))) (control_mnemonic)) (conditional (control_mnemonic) (symbol) (element_list (instruction (instruction_mnemonic))) (control_mnemonic)) (conditional (control_mnemonic) (symbol) (element_list (instruction (instruction_mnemonic))) (control_mnemonic)) (conditional (control_mnemonic) (symbol) (element_list (instruction (instruction_mnemonic))) (control_mnemonic)) (conditional (control_mnemonic) (symbol) (element_list (instruction (instruction_mnemonic))) (control_mnemonic)) (conditional (control_mnemonic) (symbol) (element_list (instruction (instruction_mnemonic))) (control_mnemonic)) (conditional (control_mnemonic) (symbol) (element_list (instruction (instruction_mnemonic))) (control_mnemonic)) (conditional (control_mnemonic) (symbol) (element_list (instruction (instruction_mnemonic))) (control_mnemonic)) (conditional (control_mnemonic) (symbol) (element_list (instruction (instruction_mnemonic))) (control_mnemonic))) (control_mnemonic)))