rewrote parts of compiler.y