| parrotcode: does macro substitution | |
| Contents | Language Implementations | M4 |

src/macro.pir - does macro substitution

Copyright: 2004-2005 Bernhard Schmalhofer. All Rights Reserved. CVS Info: $Id$ History: Ported from GNU m4 1.4 References: http://www.gnu.org/software/m4/m4.html


Loop through some input files. TODO: read files in next_token()

Expand one token, according to its type. Potential macro names (TOKEN_WORD) are looked up in the symbol table, to see if they have a macro definition. If they have, they are expanded as macros, otherwise the text are just copied to the output.

The macro expansion is handled by expand_macro(). It parses the arguments in collect_arguments() and builds a ResizablePMCArray containing the arguments. The arguments themselves are stored on a local obstack. expand_macro() uses call_macro() to do the call of the macro.
expand_macro() is potentially recursive, since it calls expand_argument(), which might call expand_token (), which might call expand_macro().

Apply macro to a token.
TODO: distinguish between TOKEN_FUNC and TOKEN_WORD

Collect all the arguments to a call of a macro.
|
|
|