/* * C preprocessor library */ :PACKAGE: ast LICENSE = since=1986,author=gsf ID = pp DEBUG == IDNAME = "$(ID)" $(ID) 2.0 :LIBRARY: BUGS NOTES RELEASE HISTORY pp.3 \ pp.h ppfsm.h ppkey.h pplib.h pp.tab \ ppargs.c ppbuiltin.c ppcall.c ppcomment.c \ ppcontext.c ppcontrol.c ppcpp.c ppdata.c \ pperror.c ppexpr.c ppfsm.c ppincref.c ppinput.c ppkey.c \ pplex.c ppline.c ppmacref.c ppmisc.c ppop.c pppragma.c \ ppprintf.c ppproto.c ppsearch.c pptrace.c "hp.pa*" :NOOPTIMIZE: ppfsm.c "osf.alpha*" :NOOPTIMIZE: ppcall.c "sol*.i386*" :NOOPTIMIZE: ppcpp.c pplex.c ppdef.h : gentab pp.tab $(*:N=*gentab:P=A) -d $(*:N=*.tab) > $(<) pptab.h : gentab pp.tab $(*:N=*gentab:P=A) -t $(*:N=*.tab) > $(<) :INSTALLDIR: gentab ppsym gentab :: gentab.sh ppsym :: ppsym.c +last /* MAM workaround */ if "$(-mam)" .ALL : .INSERT ppsym end $(INCLUDEDIR) :INSTALLPROTO: pp.h ppkey.h $(INCLUDEDIR) :INSTALLDIR: pp.yacc ppkey.yacc C $(ID) :PROBE: pp.probe pp.def pp.key ppsym probe.ini probe.ini : (CC.HOSTTYPE) probe.win32 t=$(CC.HOSTTYPE) ifs=$IFS IFS=. set x $t IFS=$ifs t=$2 set x $(*) while : do shift case $# in 0) break ;; esac case $1 in *probe.$t) break esac done case $1 in ?*) cmp -s $1 $(<) || cp $1 $(<) ;; *) : > $(<) esac %.yacc : %.h pp.h $(RM) -f $(<) { $(*:N!=$(>):?$(SED) -n -e '/^#define T_TOKEN/p' -e '/^#define N_/p' $(*:N!=$(>))$("\n")??)cat $(>) } > 1.$(tmp).c $(STDED|ED) $(STDEDFLAGS|EDFLAGS) 1.$(tmp).c <<'!' g/^#define N_/m0 v/^#define [NT]_/d 1,$s/^#define \(T_[A-Z0-9_]*\).*/&\ printf(" \1 %d", \1);/ g/^printf.*T_HEADER/d g/^printf.*T_KEYWORD/d g/^printf.*T_TOKCAT/d g/^printf.*T_TOKEN/d 0a $("#")include int main(argc, argv) int argc; char** argv; { printf("%%token /*generated from $(>)*/"); . $a printf("\n"); return 0; } . w q ! $(CC.NATIVE|CC) -o $(tmp).exe 1.$(tmp).c ./$(tmp).exe > $(<) $(RM) -f 1.$(tmp).c $(tmp).exe ppdebug.h : ppfsm.h ppdef.h pplib.h : > 1.$(tmp).c $(STDED|ED) $(STDEDFLAGS|EDFLAGS) 1.$(tmp).c <<'!' r $(*:N=*fsm.h) 1,/^#define PROTO/-d /^#define LAST/,$d v/^#define/d g/PROTOMAIN/d 1,$s/^#define // 1,$s/[^A-Za-z0-9_].*// 1,$s/.*/ "&", &,/ 1i $("/")* * preprocessor library debug maps *$("/") struct map { char* nam; long val; }; static struct map pplexmap[] = { . $a }; . ka r $(*:N=*def.h) $("'")a+1,/^#define ADD/-d /^$/,$d $("'")a+1,$s/^#define // $("'")a+1,$s/[ ].*// $("'")a+1,$s/.*/ "&", &,/ $("'")aa static struct map ppstatemap[] = { . $a }; . ka r $(*:N=*def.h) $("'")a+1,/^#define ALLMULTIPLE/-d /^$/,$d $("'")a+1,$s/^#define // $("'")a+1,$s/[ ].*// $("'")a+1,$s/.*/ "&", &,/ $("'")aa static struct map ppmodemap[] = { . $a }; . ka r $(*:N=*def.h) $("'")a+1,/^#define ELSEIF/-d /^$/,$d $("'")a+1,$s/^#define // $("'")a+1,$s/[ ].*// $("'")a+1,$s/.*/ "&", &,/ $("'")aa static struct map ppoptionmap[] = { . $a }; . ka r $(*:N=*lib.h) $("'")a+1,/^#define IN_BUFFER/-d /^$/,$d $("'")a+1,$s/^#define IN_// $("'")a+1,$s/[ ].*// $("'")a+1,$s/.*/ "&", IN_&,/ $("'")aa static struct map ppinmap[] = { . $a }; . w q ! if $(CMP) -s 1.$(tmp).c $(<) then $(RM) -f 1.$(tmp).c else $(MV) 1.$(tmp).c $(<) fi