diff options
Diffstat (limited to 'parse.c')
-rw-r--r-- | parse.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/parse.c b/parse.c index 738ec5b..ae7f785 100644 --- a/parse.c +++ b/parse.c @@ -1077,7 +1077,7 @@ parsedatstr(Dat *d) } static void -parsedat(void cb(Dat *), Lnk *lnk) +parsedat(void cb(Dat *, FILE *), Lnk *lnk, FILE *outf) { char name[NString] = {0}; int t; @@ -1097,7 +1097,7 @@ parsedat(void cb(Dat *), Lnk *lnk) d.type = DStart; d.name = name; d.lnk = lnk; - cb(&d); + cb(&d, outf); if (t != Tlbrace) err("expected data contents in { .. }"); @@ -1130,7 +1130,7 @@ parsedat(void cb(Dat *), Lnk *lnk) parsedatstr(&d); else err("constant literal expected"); - cb(&d); + cb(&d, outf); t = nextnl(); } while (t == Tint || t == Tflts || t == Tfltd || t == Tstr || t == Tglo); if (t == Trbrace) @@ -1140,7 +1140,7 @@ parsedat(void cb(Dat *), Lnk *lnk) } Done: d.type = DEnd; - cb(&d); + cb(&d, outf); } static int @@ -1177,7 +1177,8 @@ parselnk(Lnk *lnk) } void -parse(FILE *f, char *path, void dbgfile(char *), void data(Dat *), void func(Fn *)) +parse(FILE *f, char *path, FILE *outf, + void data(Dat *, FILE *), void func(Fn *, FILE *)) { Lnk lnk; uint n; @@ -1196,13 +1197,13 @@ parse(FILE *f, char *path, void dbgfile(char *), void data(Dat *), void func(Fn err("top-level definition expected"); case Tdbgfile: expect(Tstr); - dbgfile(tokval.str); + emitdbgfile(tokval.str, outf); break; case Tfunc: - func(parsefn(&lnk)); + func(parsefn(&lnk), outf); break; case Tdata: - parsedat(data, &lnk); + parsedat(data, &lnk, outf); break; case Ttype: parsetyp(); |