/*** TTC Assembly Syntax *** *** Ben Thorner (August 2012) ***/ // Non-Terminals prog ::= prog stmt | stmt stmt ::= lab | instr instr ::= (opgen)? func_regs (rotate)? (skip)? | jmp func_regs (rotate)? | jmp reg reg reg | rot reg (reg)? rotate | lc reg id | lc reg imm | ldin reg (skip)? | stout reg | bgez reg reg reg | bnez reg reg reg func_regs ::= func_bin reg reg reg | func_un reg (reg)? // Terminals lab ::= id ":" opgen ::= "ldin" | "lddm" | "stout" | "stdm" | "stim" | "normal" rotate ::= "rot0" | "rot1" | "rot8" | "rot16" skip ::= "sez" | "sltz" | "noskip" | "sin" reg ::= "r" decimal_integer_literal id ::= [a-zA-Z][a-zA-Z0-9]* func_un ::= "inc" | "dec" func_bin ::= "add" | "sub" | "and" | "or" | "xor" | "fpmul" comment ::= "#" .* (ignored) line_terminator ::= \r | \n | \r\n (ignored) whitespace ::= [ \t\v\f] (ignored) decimal_integer_literal ::= 0 | [1-9][0-9]*