version 1.29, 2001/06/13 12:20:43 |
version 1.30, 2001/09/18 13:52:58 |
|
|
static void dosub __P((const char *[], int)); |
static void dosub __P((const char *[], int)); |
static void map __P((char *, const char *, const char *, const char *)); |
static void map __P((char *, const char *, const char *, const char *)); |
static const char *handledash __P((char *, char *, const char *)); |
static const char *handledash __P((char *, char *, const char *)); |
|
static void expand_builtin __P((const char *[], int, int)); |
|
static void expand_macro __P((const char *[], int)); |
|
|
|
|
/* |
/* |
* eval - evaluate built-in macros. |
* eval - eval all macros and builtins calls |
|
*/ |
|
void |
|
eval(argv, argc, td) |
|
const char *argv[]; |
|
int argc; |
|
int td; |
|
{ |
|
if (td & RECDEF) |
|
errx(1, "%s at line %lu: expanding recursive definition for %s", |
|
CURRENT_NAME, CURRENT_LINE, argv[1]); |
|
if (td == MACRTYPE) |
|
expand_macro(argv, argc); |
|
else |
|
expand_builtin(argv, argc, td); |
|
} |
|
|
|
/* |
|
* expand_builtin - evaluate built-in macros. |
* argc - number of elements in argv. |
* argc - number of elements in argv. |
* argv - element vector : |
* argv - element vector : |
* argv[0] = definition of a user |
* argv[0] = definition of a user |
|
|
*/ |
*/ |
|
|
void |
void |
eval(argv, argc, td) |
expand_builtin(argv, argc, td) |
const char *argv[]; |
const char *argv[]; |
int argc; |
int argc; |
int td; |
int td; |
|
|
printf("argv[%d] = %s\n", n, argv[n]); |
printf("argv[%d] = %s\n", n, argv[n]); |
#endif |
#endif |
|
|
if (td & RECDEF) |
|
errx(1, "%s at line %lu: expanding recursive definition for %s", |
|
CURRENT_NAME, CURRENT_LINE, argv[1]); |
|
/* |
/* |
* if argc == 3 and argv[2] is null, then we |
* if argc == 3 and argv[2] is null, then we |
* have macro-or-builtin() type call. We adjust |
* have macro-or-builtin() type call. We adjust |
|
|
char *dumpfmt = "`%s'\t`%s'\n"; /* format string for dumpdef */ |
char *dumpfmt = "`%s'\t`%s'\n"; /* format string for dumpdef */ |
|
|
/* |
/* |
* expand - user-defined macro expansion |
* expand_macro - user-defined macro expansion |
*/ |
*/ |
void |
void |
expand(argv, argc) |
expand_macro(argv, argc) |
const char *argv[]; |
const char *argv[]; |
int argc; |
int argc; |
{ |
{ |