You yourself said &quot;there is really no rigid boundary&quot; between a compiler and a preprocessor. By most practical definitions of a compiler, the &quot;C amplifier&quot; discussed in the OP is a compiler, and is definitely similar enough to suffer many of the same issues as a compiler. In particular, I think what pcwalton is getting at is that in such a &quot;pre-processor&quot;, it&#x27;s likely that you&#x27;ll eventually want more expressive data structures than text can comfortable offer you.