66 lines
1.3 KiB
C
66 lines
1.3 KiB
C
/*****************************************************************************
|
|
*
|
|
* predef.c
|
|
*
|
|
* Predefined macros.
|
|
*
|
|
*****************************************************************************/
|
|
|
|
#include "m4.h"
|
|
|
|
OP rgop[] = {
|
|
#define x(cop, lop) op##cop,
|
|
EachOpX()
|
|
#undef x
|
|
};
|
|
|
|
PTCH mptchptch[] = {
|
|
#define x(cop, lop) #lop,
|
|
EachOp()
|
|
#undef x
|
|
};
|
|
|
|
/*****************************************************************************
|
|
*
|
|
* opEof, opEoi
|
|
*
|
|
* Doesn't actually do anything.
|
|
*
|
|
*****************************************************************************/
|
|
|
|
DeclareOp(opEof)
|
|
{
|
|
}
|
|
|
|
DeclareOp(opEoi)
|
|
{
|
|
}
|
|
|
|
/*****************************************************************************
|
|
*
|
|
* InitPredefs
|
|
*
|
|
* Add definitions for all the predefined macros.
|
|
*
|
|
*****************************************************************************/
|
|
|
|
void STDCALL
|
|
InitPredefs(void)
|
|
{
|
|
TCH rgtch[2];
|
|
TOK tokSym;
|
|
TOK tokVal;
|
|
#define tch rgtch[1]
|
|
PMAC pmac;
|
|
|
|
rgtch[0] = tchMagic;
|
|
for (tch = 0; tch < tchEof; tch++) {
|
|
SetStaticPtokPtchCtch(&tokSym, mptchptch[tch], strlen(mptchptch[tch]));
|
|
SetStaticPtokPtchCtch(&tokVal, rgtch, 2);
|
|
pmac = pmacGetPtok(&tokSym);
|
|
Assert(!pmac->pval); /* Should be a fresh token */
|
|
PushdefPmacPtok(pmac, &tokVal);
|
|
}
|
|
}
|
|
#undef tch
|