At this level of generality, the assembler goes from being a trivial
program, to an N-pass assembler (if you limit the expressions) or a
symbolic algebra program (if you have no limits). Of course I'd like
to see someone implement a completely general assembler :-)