A compiler doesn't have to emit machine code. It just needs to translate one language into another, which the author's program does.
Also, a parser implies having an internal, structured representation. As the C language is neither internal nor structured, I'd say the program is more likely a compiler.