Calling a mnemonic should let the mnemonic append itself
to its target
.
This way, the Program
has kind of a syntax tree that it can (post-)process
later. It should be possible for with
-blocks to alter the mnemonics’ targets
in order to capture the mnemonics in their blocks to customize program
behaviour. For that, the mnemonics should receive a callable (e. g. a method
of Program
) that returns the actual target
so that the target itself can
be easily replaced for all mnemonics.
A cleaner solution than the current new_label
approach would be to capture
labels generated by macros and remove them from the Program.labels
dict
after the macro has finished executing (or to prevent them from entering
the labels
dict).