tree-sitter-m68k
Version:
Motorola 68000 family assembly grammar for tree-sitter
484 lines (457 loc) • 10.3 kB
Plain Text
============================================
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)))