static void plist PROTO( (void (*)(/*NOT WORTH IT: void * */), list) );
static void pmaybe PROTO( (void (*)(), maybe) );
static void pmaybe_list PROTO( (void (*)(), maybe) );
-static void ppbinding PROTO((pbinding));
/* static void ppragma PROTO( (hpragma) ); */
static void pqid PROTO( (qid) );
static void prbind PROTO( (binding) );
static void pstr PROTO( (char *) );
static void ptree PROTO( (tree) );
+static void ppgdexp PROTO( (gdexp) );
+static void pgrhsb PROTO( (grhsb) );
+static void ppmatch PROTO( (match) );
static void pttype PROTO( (ttype) );
static void plineno PROTO( (long) );
plist(prbind, ghimplist(t));
pmaybe_list(pentid, ghexplist(t));
break;
- case fixop:
- PUTTAG('I');
- pqid(gfixop(t));
- printf("%lu\t%lu",gfixinfx(t),gfixprec(t));
- break;
case ident:
PUTTAG('i');
pqid(gident(t));
break;
case lambda:
PUTTAG('l');
- plineno(glamline(t));
- plist(ptree,glampats(t));
- ptree(glamexpr(t));
+ ppmatch(glammatch(t));
break;
case let:
PUTTAG('c');
plineno(gcaseline(t));
ptree(gcaseexpr(t));
- plist(ppbinding, gcasebody(t));
+ plist(ppmatch, gcasebody(t));
break;
case ife:
PUTTAG('b');
break;
case pbind :
PUTTAG('p');
+ ptree( gpbindl(b) );
+ pgrhsb( gpbindr(b) );
plineno(gpline(b));
- plist(ppbinding, gpbindl(b));
break;
case fbind :
PUTTAG('f');
+ plist(ppmatch, gfbindm(b));
plineno(gfline(b));
- plist(ppbinding, gfbindl(b));
break;
case abind :
PUTTAG('A');
PUTTAG('B');
break;
+ case fixd:
+ PUTTAG('I');
+ pqid(gfixop(b));
+ printf("%lu\t%lu",gfixinfx(b),gfixprec(b));
+ break;
+
case import:
PUTTAG('e');
plineno(gibindline(b));
case ispec_uprag:
PUTTAGSTR("SS");
plineno(gispec_line(b));
- pqid(gispec_clas(b));
pttype(gispec_ty(b));
break;
case inline_uprag:
pqid(gtypeid(t));
break;
case namedtvar : PUTTAG('y');
- pqid(gnamedtvar(t));
+ pstr(gnamedtvar(t));
break;
case tllist : PUTTAG(':');
pttype(gtlist(t));
case tbang : PUTTAG('!');
pttype(gtbang(t));
break;
- case context : PUTTAG('3');
- plist(pttype,gtcontextl(t));
- pttype(gtcontextt(t));
+ case forall : PUTTAG('3');
+ plist(pstr, gtforalltv(t));
+ plist(pttype,gtforallctxt(t));
+ pttype(gtforallt(t));
break;
default : error("bad pttype");
}
}
-static void
-ppbinding(p)
- pbinding p;
-{
- switch(tpbinding(p)) {
- case pgrhs : PUTTAG('W');
- plineno(ggline(p));
- pqid(ggfuncname(p));
- ptree(ggpat(p));
- ppbinding(ggdexprs(p));
- prbind(ggbind(p));
- break;
- case pnoguards :
- PUTTAG('6');
- ptree(gpnoguard(p));
- break;
- case pguards :
- PUTTAG('9');
- plist(ptree, gpguards(p));
- break;
- case pgdexp :
- PUTTAG('&');
- plist(ptree, gpguard(p)); /* Experimental: pattern guards */
- ptree(gpexp(p));
- break;
- default :
- error("Bad pbinding");
- }
-}
-
+static void ppmatch(l) match l; { fprintf( stderr, "printtree.c: ppmatch" ); }
+static void ppgdexp(l) gdexp l; { fprintf( stderr, "printtree.c: ppgdexp" ); }
+static void pgrhsb(l) grhsb l; { fprintf( stderr, "printtree.c: pgrhsb" ); }
static void
pgrhses(l)