An embedded pre-processor having dynamic macro types is disclosed. After a lexer
receives an identifier token from source code, the lexer compares the identifier
token with the macro names stored in the symbol table. If the identifier token
matches a macro name stored in the symbol table, the lexer replaces the identifier
token with a macro form token. The lexer then sends the macro form token to a glue
routine. The glue routine invokes a macro invocation parser. The lexer continues
to transfer tokens to the macro invocation parser via the glue routine until the
completion of the macro invocation. The macro invocation parser subsequently sends
a macro body definition of the macro to the lexer.