The preprocessor, as I understand it, is the first pass of the "compiler" or tokeniser. It take the code from the .bas file and enables/disables code according the directives, expands macros and resolves symbols and labels so that, in a subsequent pass, all of the source is available to be literally tokenised. PICAXE code is not compiled or assembled but is tokenised. The PICAXE firmware is a runtime interpreter of the tokens.