This is pretty badly wrong with regard to the definition of compilation. In the world of C compilers, the term compilation is often used to mean the transformation of the output of the C preprocessor into assembly, but this is far from universal. In general, cpp, gas, and gcc are all compilers. It's easy to see this by considering compilers for other languages with macro systems, such as Common Lisp, where the "compiler" includes macro expansion, and also the term "JIT compiler", which usually refers to the transformation of a low-level bytecode directly into a binary instruction stream.
If you look up the Dragon book, you'll see that they write "a compiler is a program that reads a program written in one language -- the source language -- and translates it into an equivalent program in another language -- the target language". This fits cpp and gas just as it does gcc.