From cd3cca4aa2a58351b0ecf5d8115ca94a5238aee5 Mon Sep 17 00:00:00 2001 From: "kr.angelov" Date: Thu, 6 Sep 2012 14:52:19 +0000 Subject: [PATCH] bugfix in the C parser --- src/runtime/c/pgf/data.h | 2 +- src/runtime/c/pgf/parser.c | 4 ++-- src/runtime/c/pgf/reader.c | 7 +++++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/runtime/c/pgf/data.h b/src/runtime/c/pgf/data.h index f1cd2bafc..552613c55 100644 --- a/src/runtime/c/pgf/data.h +++ b/src/runtime/c/pgf/data.h @@ -148,7 +148,7 @@ typedef GuMap PgfMetaChildMap; extern GU_DECLARE_TYPE(PgfMetaChildMap, GuMap); struct PgfCat { - // TODO: Add cid here + PgfCId name; PgfHypos context; float meta_prob; diff --git a/src/runtime/c/pgf/parser.c b/src/runtime/c/pgf/parser.c index 54121b18a..15eb96414 100644 --- a/src/runtime/c/pgf/parser.c +++ b/src/runtime/c/pgf/parser.c @@ -1042,7 +1042,7 @@ pgf_parsing_meta_predict(GuMapItor* fn, const void* key, void* value, GuExn* err { (void) (err); - PgfCId abscat = *((PgfCId*) key); + PgfCat* abscat = (PgfCat*) key; float meta_prob = *((float*) value); PgfMetaPredictFn* clo = (PgfMetaPredictFn*) fn; PgfParseState* before = clo->before; @@ -1050,7 +1050,7 @@ pgf_parsing_meta_predict(GuMapItor* fn, const void* key, void* value, GuExn* err PgfItem* meta_item = clo->meta_item; PgfCncCat* cnccat = - gu_map_get(before->ps->concr->cnccats, &abscat, PgfCncCat*); + gu_map_get(before->ps->concr->cnccats, &abscat->name, PgfCncCat*); if (cnccat == NULL) return; diff --git a/src/runtime/c/pgf/reader.c b/src/runtime/c/pgf/reader.c index 166dc9bd2..8e2a634e8 100644 --- a/src/runtime/c/pgf/reader.c +++ b/src/runtime/c/pgf/reader.c @@ -648,10 +648,13 @@ typedef struct { static void pgf_compute_meta_probs(GuMapItor* fn, const void* key, void* value, GuExn* err) { - (void) (key && err); + (void) (err); + PgfCId name = *((PgfCId*) key); PgfCat* cat = *((PgfCat**) value); - + + cat->name = name; + double mass = 0; for (size_t i = 0; i < cat->n_functions; i++) { mass += cat->functions[i].prob;