what i should probably do is add 'hooks' just before newlines have been yielded so you can look at the previous line and say hey it's an include let's start lexing that instead unify/optimize ascii/asciiz/byte/halfword/word into BIN directives also lex strings to binary strings, why not ;pseudo-instr for offsets not within 0x8000 range? addiu at, t0, 0x7FFF sb t1, 0x62FE(at) ;versus sb t1, r0+0xE2FD(t0) directive aliases, are these right? DB = 'BYTE', DH = 'HALFWORD', DW = 'WORD', add basic command-line interface (patch.lua) improve writer performance (just copypaste what you did in patch.lua) procrastinating the heck over: write tests for everything (try to focus on code paths and edge cases) low priority: improve parser terminology add delay slot warnings externally document more stuff like syntax