program: { section | statement } section: "." WORD newline newline: [ space ] NEWLINE space: SPACE { SPACE } statement: ( function | space [ instruction ] ) newline function: name [ space ] ":" name: WORD instruction: operator [ operand_list ] operator: WORD operand_list: operand { "," operand } operand: [ space ] ( value | address ) [ space ] value: symbol | register | immediate symbol: WORD register: "%" WORD immediate: "$" NUMBER address: "[" [ space ] value [ value ] [ "+" [ space ] offset [ space ] ] "]"