I shall explain here how the separators are handled by the Amool compiler/parser.
(Whites include spaces, tabs and linefeeds. More white stuff might be added depending on implementation)
As you should now know, an amool code is a sequence of lexical elements separated
by white symbols.
This means that you are forced to put at least one white between each pair of lexical elements.
There are three (simple, I hope) rules which the compiler/parser uses for deciding which separator should be output.
1: The two characters adjacent to a definition delimiter (header or footer)
(like &=super or && or &+dong)
We can somehow say that these two adjacent characters are part of each of these symbols.
2: If two definitions are only separated by whites, then these are all
A defintion being a &(+/=)... ... && block, if two definitions are only separated by whites, then none of these whites will be output at execution.
This allows you to have a lot of definition, to arrange them as you want, without having Amool output all the linefeeds you put between these definitions.
An example, where I
In this case, all stuff between one and yadd is removed
(because it's only white), but not between yadd and last.
If you want to define a symbol to be a space, then you can for instance put three spaces
3: The two extreme characters of an argument value (inside a class call) are
When you are calling a class with arguments, you are forced to put at least a separator at the left and the right of the values you give. So Amool will take these two extreme separators away before transmitting them to the class.
For instance: (Again, I wrote spaces as tildes for readability)
The arguments transmitted here are (unquoted, of course) "abc", "~@d", "", "" (two spaces, both are removed), "~" (three separators, the extreme ones are removed, and only the central space is kept)
Although these rules might look a bit arbitrary at first look, you should find them quite natural when used :-)