You can read all what the preprocessor does in GitHub > src/com/rfo/basic/AddProgramLine.java
Thanks for that nudge Nicolas.
I tried reading that file despite my lack of familiarity with Java.
For instance I would have thought that there would be no point in two successive assignments as here:
String stmt = parts;
stmt = "endif\n"; // complete it now
Or am I missing something?
That bit of code is commented (thank goodness for lots of comments!) that it adds ENDIF to IF statements of the short form. This makes me wonder if new-lines get added as well as removed by pre-processing, making the mapping of line numbers more complex still.
Similarly with removal of line-continuation characters "~".