diff options
| author | kr.angelov <kr.angelov@gmail.com> | 2012-01-23 09:46:45 +0000 |
|---|---|---|
| committer | kr.angelov <kr.angelov@gmail.com> | 2012-01-23 09:46:45 +0000 |
| commit | 7fcaa81858959699938ae0f032583a498c63019a (patch) | |
| tree | 0bba5eae8acd2b9707b4148c4c83d159666cd0f0 /src/runtime/c/pgf/reader.c | |
| parent | 28bce1cdc01bff7a2caf1f30152b99827b907576 (diff) | |
libpgf: move the lindefs field from PgfCncCat to PgfCCat. display the list in the grammar printout
Diffstat (limited to 'src/runtime/c/pgf/reader.c')
| -rw-r--r-- | src/runtime/c/pgf/reader.c | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/src/runtime/c/pgf/reader.c b/src/runtime/c/pgf/reader.c index d902b698a..391a0e719 100644 --- a/src/runtime/c/pgf/reader.c +++ b/src/runtime/c/pgf/reader.c @@ -437,6 +437,7 @@ pgf_read_to_PgfCCatId(GuType* type, PgfReader* rdr, void* to) if (!ccat) { ccat = gu_new(PgfCCat, rdr->pool); ccat->cnccat = NULL; + ccat->lindefs = gu_map_get(rdr->curr_lindefs, &fid, PgfFunIds*); ccat->prods = gu_null_seq; ccat->fid = fid; @@ -449,14 +450,16 @@ pgf_read_to_PgfCCatId(GuType* type, PgfReader* rdr, void* to) static void pgf_read_to_PgfCCat(GuType* type, PgfReader* rdr, void* to) { - (void) type; - gu_enter("->"); - PgfCCat* cat = to; - cat->cnccat = NULL; - pgf_read_to(rdr, gu_type(PgfProductionSeq), &cat->prods); - int* fidp = rdr->curr_key; - cat->fid = *fidp; - gu_exit("<-"); + (void) type; + gu_enter("->"); + int* fidp = rdr->curr_key; + + PgfCCat* ccat = to; + ccat->cnccat = NULL; + ccat->lindefs = gu_map_get(rdr->curr_lindefs, fidp, PgfFunIds*); + pgf_read_to(rdr, gu_type(PgfProductionSeq), &ccat->prods); + ccat->fid = *fidp; + gu_exit("<-"); } // This is only needed because new_struct would otherwise override. @@ -736,6 +739,7 @@ pgf_read_new_PgfCncCat(GuType* type, PgfReader* rdr, GuPool* pool, if (!ccat) { ccat = gu_new(PgfCCat, rdr->pool); ccat->cnccat = NULL; + ccat->lindefs = gu_map_get(rdr->curr_lindefs, &fid, PgfFunIds*); ccat->prods = gu_null_seq; ccat->fid = fid; @@ -752,7 +756,6 @@ pgf_read_new_PgfCncCat(GuType* type, PgfReader* rdr, GuPool* pool, } cnccat->n_lins = n_lins == -1 ? 0 : (size_t) n_lins; cnccat->cats = cats; - cnccat->lindefs = gu_map_get(rdr->curr_lindefs, &first, PgfFunIds*); cnccat->labels = pgf_read_new(rdr, gu_type(GuStringL), pool, NULL); gu_exit("<-"); |
