compiler written in C, one step at a time