bugfix: use @name when prepending and appending
refactor cpp as a subclass of c
c: highlight `#if 0` as a comment
minor nit: use `yield_token` internally