I could not resist

to add my part to this thread...as I started with PB a few days ago and looked at some (visible) syntax of it and then discovered that I would like to expand/add my features...
During the last 2 days I have created a "Join-lines" tool (can be used standalone and certainly also as plugin). it is a small exe (with about 517 KB) but i did not see an option here to attach it...perhaps someone can point me to such an option. The tool expects 1 mandatory parameter = the root file name to scan through (there are additional debug options...). It will scan through that file for $Multiline directives as in that starting example and act on such "joined lines" properly, creating a separated output file with "Pre_" prefixed to the original file name IF there were lines to join. If the file does not contain $Multiline directives and no lines to join, no output file is created.
The $Multiline drirective can be used repeatedly to switch to different join settings (default is "_").
The tool will process all embedded IncludeFile and XIncludefile directives recursively and will create one single large Pre_xxxxx.pb file while scanning for any join cases. By creating one "flat" output file I did not need to modify the "included files sources" and also swap the IncludeFile directives.
The tool seems to be fairly fast in executing....
OK, but this is only the starting point for this tool:
1) I check the IncludeFile / XIncludeFile directives - had to do it in any case - for more (!?) "parameters following the file name. If there are some, I keep them in an internal list and match those "call options" against $xxxxx = vvvvvv directives inside of the included file. When the included file is the scanned, I check alll source lines for words contained like " ...... $xxxxx ......" and in those lines I will repplace the option-name with its value...yielding some simply preprocessing substitution. The "vvvvvvv" is the "default value" if the IncludeFile directive does not provide a fitting option itself.
This processing allows to have two (or more) IncludeFile directives for the same include file creating DIFFERENT embedded sources easily. This may overlap a bit with PB Macro....EndMacro handling, but I discovered that this processing is "a bit limited" relative to my IncludeFile processing.
2) Now for the Macro directive
The normal directive is something like "Macro mmmm (p1, ... po=vvv)"
where first are some "mandatory" parms and the optional parms with default values. The Macro reference always has to be like "...... mmmm(c1,.... ) ...."
What I wanted is some "more relaxed syntax" (I am investigating in expanding PB to allow "local expansions" of its grammar for new syntactical elements (for specific features extensions). My first goal with the Macro is to allow a source line like
...... mmmm v1 .... o=vvv o=wwww .....
where the parameters for the macro are not needed and optional parms can be given in arbitrary sequence. A Macro reference inside of a source line is then complete, when all mandatory values are recognized and any possibly following word is not fitting a optional parm name "= vvv" value.
Internally I reformat the Macro definition statements to be PB syntax again and the ref-source-lines to have proper PB macro ref clauses. So far everything is "staying within PB" for the time being...
A very primitive example:
...
Macro Circle x=0 y=0 r=1
.... just call some 2D-painting with x, y, and r values
EndMacro
...
Circle r=12
...
Circle r=2 x=100 y=100
...
any source line can have any number of such (and normal) Macro refs.
Currently all that works - I did simple tests and therefore will have found only trivial errors. If I get an upload option, I will provide a ZIP with the exe, some readme and small examples.
Feedback

???