The SEP() generating function itself would call a function toretrieve
an operand, which would in turn call the appropriate function toI forgot to mention that this type of structure is a kind of recursive
descent parser, where the grammar is built in to the subroutine
calling tree structure. For an assembler, it is probably easier than
a table-driven parser (generated from a grammar file, as YACC might
generate.) Dealing with "*" for the current address, and for
multiplication shouldn't be an issue, since it's meaning depends on
where you are in the parsing tree. Similarly, an unexpected "*"
(i.e., the code that gets it expects other stuff) is easily recognized
as an error.