MipC Language
assg := reg = num
| reg = hex
| reg = reg op reg
| reg = reg op num
| reg = reg op hex
mems := reg = reg[num]
| reg[num] = reg
seln := if (reg == reg) { stmt }
| if (reg == reg) { stmt } else { stmt }
| if (reg != reg) { stmt }
| if (reg != reg) { stmt } else { stmt }
iter := wlop | flop | dlop
dlop := do { stmt } while (reg == reg);
| do { stmt } while (reg != reg);
wlop := while (reg == reg) { stmt }
| while (reg != reg) { stmt }
flop := for(assg; reg == reg; assg) { stmt }
| for(assg; reg != reg; assg) { stmt }
stmt := assg | seln | iter