However, JPlus is not merely a “preprocessor.” It actually parses Java source like a compiler, performs null-safety checks and boilerplate code generation on the generated parse tree, and finally produces standard Java code. In that sense, JPlus should be considered a compiler. The only difference is that its output is Java code
A preprocessor is basically a compiler which produces input for another compiler. Yes, it's a compiler. The difference is that it produces source files, not bytecode.
From Wikipedia:
In computer science, a preprocessor (or precompiler)[1] is a program that processes its input data to produce output that is used as input in another program. [...], which is often used by some subsequent programs like compilers.
The emphasis is mine.
Both Typescript and SASS are examples of preprocessors.