void Expression(CPU &cpu, IO &io, struct Unit &unit){ Term(cpu, io, unit); io.skipWhitespace(); { expression_start: if(io.peek('+')) io.callWithPushNumber<Add>(cpu, "Expression", unit); else if(io.peek('-')) io.callWithPushNumber<Subtract>(cpu, "Expression", unit); else { io.skipWhitespace(); return; } io.skipWhitespace(); goto expression_start; } }