Pre-Parsers concept ...
RosAsm being a 'True Assembler', means that it does not include any internal hidden Macros that would enhance the basics of Assembly Syntax, and that all HLL features are to be implemented via user defined Macros. You are not constrained in any way, other than the microprocessor's instruction set, and, are in full control at all times.
When you are writing a set of .If / .Else / .EndIf, in, say, MASM, you are using a Compiler, because these features are hidden inside, being an integral part of the Compiler itself. When you are doing exactly the same thing with RosAsm, you are using a ''True Assembler'', because you defined the Macros in order to enable this.
But, RosAsm being a true Assembler does not mean that it may not include selectable Pre-Parsers, that the user may -or not- run in order to include the HLL statements he may want, in his Sources, just the reverse of what most HLLs do with Inline Assembly. Even if, one day, a volunteer wants to write a Basic Pre-Parser for RosAsm, you will be allowed to run it with:
> PEPARSE Basic
And, this will not change an inch about RosAsm being and remaining a True Assembler, in its internals, and running as such by default. So 'PREPARSE' tells what Pre-Parser(s) to run when compiling your Source, adding alternates or HLL capabilities on the Top of the Assembler, just like any external ''Front-End'' would do. Though it might seem a bit of a strange formulation, RosAsm is internally open to Pre-Parsers.
Four Pre-Parsers are actually available. See Alternate_Syntaxes , Equal_Parser, and BinIncluder_Parser, IncIncluder_Parser.
I hope that my way of introducing these Pre-Parsers makes it as clear as possible. Once you run a Pre-Parser you are no longer running a ''True Assembler'', but, at least, a Compiler, if not a real HLL, and the way it is done perfectly respects the Bottom-Up Approach and organization of RosAsm.
Like the TITLE reserved word (see 'TITLE' in Source_Editor), the PREPARSE Statement is to be written in upper case only, must begin at the first Position on a Line, and cannot hold anything else than what is expected.
PREPARSE writing convention is:
PREPARSE Option(s)
; where 'Option(s) ' may actually be: 'Alternates' , 'Equal' and 'Includer':
PREPARSE Alternates
PREPARSE Equal
PREPARSE Includer
PREPARSE Alternates, Equal, Includer
The purpose of this recently added KeyWord is to allow the implementations of any number of Pre-Parsers, without any Compilation time penalty, for the Sources making no use of these Parsers. In the future, we will possibly add an OOA Pre-Parser, a Basic Pre-Parser, and so on, without any quantity limitation and with possible conflicts management in case of multi-selections (for example, if we implement various conflicting flavors of HLL Pre-Parsers).
~~~~~~~