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