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');
case ibind :
PUTTAG('%');
plineno(giline(b));
- plist(pttype,gibindc(b));
- pqid(gibindid(b));
pttype(gibindi(b));
prbind(gibindw(b));
/* ppragma(gipragma(b)); */
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));
/* pid(gibindfile(b)); */
pid(gibindimod(b));
printf("#%lu\t",gibindqual(b)); /* 1 -- qualified */
+ printf("#%lu\t",gibindsource(b)); /* 1 -- from source */
pmaybe(pid, gibindas(b));
pmaybe(pconstr, gibindspec(b));
/* plist(pentid,giebindexp(b)); ??? */
case ispec_uprag:
PUTTAGSTR("SS");
plineno(gispec_line(b));
- pqid(gispec_clas(b));
pttype(gispec_ty(b));
break;
case inline_uprag:
plineno(ginline_line(b));
pqid(ginline_id(b));
break;
- case deforest_uprag:
- PUTTAGSTR("Sd");
- plineno(gdeforest_line(b));
- pqid(gdeforest_id(b));
- break;
case magicuf_uprag:
PUTTAGSTR("Su");
plineno(gmagicuf_line(b));
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('&');
- ptree(gpguard(p));
- 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)
case igen_pragma: PUTTAGSTR("Pg");
ppragma(gprag_arity(p));
ppragma(gprag_update(p));
- ppragma(gprag_deforest(p));
ppragma(gprag_strictness(p));
ppragma(gprag_unfolding(p));
plist(ppragma, gprag_specs(p));
case iupdate_pragma: PUTTAGSTR("Pu");
pid(gprag_update_val(p));
break;
- case ideforest_pragma: PUTTAGSTR("PD");
- break;
case istrictness_pragma: PUTTAGSTR("PS");
print_string(gprag_strict_spec(p));
ppragma(gprag_strict_wrkr(p));