diff options
Diffstat (limited to 'src/runtime/c')
| -rw-r--r-- | src/runtime/c/pgf/aligner.c | 4 | ||||
| -rw-r--r-- | src/runtime/c/pgf/graphviz.c | 2 | ||||
| -rw-r--r-- | src/runtime/c/pgf/linearizer.c | 38 | ||||
| -rw-r--r-- | src/runtime/c/pgf/linearizer.h | 4 | ||||
| -rw-r--r-- | src/runtime/c/pgf/literals.c | 23 | ||||
| -rw-r--r-- | src/runtime/c/pgf/lookup.c | 4 | ||||
| -rw-r--r-- | src/runtime/c/pgf/parser.c | 5 | ||||
| -rw-r--r-- | src/runtime/c/pgf/parseval.c | 12 | ||||
| -rw-r--r-- | src/runtime/c/pgf/pgf.h | 4 |
9 files changed, 50 insertions, 46 deletions
diff --git a/src/runtime/c/pgf/aligner.c b/src/runtime/c/pgf/aligner.c index 53209bb4c..e75743d99 100644 --- a/src/runtime/c/pgf/aligner.c +++ b/src/runtime/c/pgf/aligner.c @@ -142,14 +142,14 @@ pgf_aligner_lzn_symbol_token(PgfLinFuncs** funcs, PgfToken tok) } static void -pgf_aligner_lzn_begin_phrase(PgfLinFuncs** funcs, PgfCId cat, int fid, size_t lindex, PgfCId fun) +pgf_aligner_lzn_begin_phrase(PgfLinFuncs** funcs, PgfCId cat, int fid, GuString ann, PgfCId fun) { PgfAlignerLin* alin = gu_container(funcs, PgfAlignerLin, funcs); gu_buf_push(alin->parent_stack, int, fid); } static void -pgf_aligner_lzn_end_phrase(PgfLinFuncs** funcs, PgfCId cat, int fid, size_t lindex, PgfCId fun) +pgf_aligner_lzn_end_phrase(PgfLinFuncs** funcs, PgfCId cat, int fid, GuString ann, PgfCId fun) { PgfAlignerLin* alin = gu_container(funcs, PgfAlignerLin, funcs); gu_buf_pop(alin->parent_stack, int); diff --git a/src/runtime/c/pgf/graphviz.c b/src/runtime/c/pgf/graphviz.c index 66e203dbc..a404ed009 100644 --- a/src/runtime/c/pgf/graphviz.c +++ b/src/runtime/c/pgf/graphviz.c @@ -155,7 +155,7 @@ pgf_bracket_lzn_symbol_token(PgfLinFuncs** funcs, PgfToken tok) } static void -pgf_bracket_lzn_begin_phrase(PgfLinFuncs** funcs, PgfCId cat, int fid, size_t lindex, PgfCId fun) +pgf_bracket_lzn_begin_phrase(PgfLinFuncs** funcs, PgfCId cat, int fid, GuString ann, PgfCId fun) { PgfBracketLznState* state = gu_container(funcs, PgfBracketLznState, funcs); diff --git a/src/runtime/c/pgf/linearizer.c b/src/runtime/c/pgf/linearizer.c index 12b047b13..a7ca6e764 100644 --- a/src/runtime/c/pgf/linearizer.c +++ b/src/runtime/c/pgf/linearizer.c @@ -606,7 +606,7 @@ typedef struct { PgfLzrCachedTag tag; PgfCId cat; int fid; - int lin_idx; + GuString ann; PgfCId fun; } PgfLzrCached; @@ -644,7 +644,7 @@ pgf_lzr_cache_flush(PgfLzrCache* cache, PgfSymbols* form) cache->lzr->funcs, event->cat, event->fid, - event->lin_idx, + event->ann, event->fun); } break; @@ -654,7 +654,7 @@ pgf_lzr_cache_flush(PgfLzrCache* cache, PgfSymbols* form) cache->lzr->funcs, event->cat, event->fid, - event->lin_idx, + event->ann, event->fun); } break; @@ -709,27 +709,27 @@ found: } static void -pgf_lzr_cache_begin_phrase(PgfLinFuncs** funcs, PgfCId cat, int fid, size_t lin_idx, PgfCId fun) +pgf_lzr_cache_begin_phrase(PgfLinFuncs** funcs, PgfCId cat, int fid, GuString ann, PgfCId fun) { PgfLzrCache* cache = gu_container(funcs, PgfLzrCache, funcs); PgfLzrCached* event = gu_buf_extend(cache->events); - event->tag = PGF_CACHED_BEGIN; - event->cat = cat; - event->fid = fid; - event->lin_idx = lin_idx; - event->fun = fun; + event->tag = PGF_CACHED_BEGIN; + event->cat = cat; + event->fid = fid; + event->ann = ann; + event->fun = fun; } static void -pgf_lzr_cache_end_phrase(PgfLinFuncs** funcs, PgfCId cat, int fid, size_t lin_idx, PgfCId fun) +pgf_lzr_cache_end_phrase(PgfLinFuncs** funcs, PgfCId cat, int fid, GuString ann, PgfCId fun) { PgfLzrCache* cache = gu_container(funcs, PgfLzrCache, funcs); PgfLzrCached* event = gu_buf_extend(cache->events); - event->tag = PGF_CACHED_END; - event->cat = cat; - event->fid = fid; - event->lin_idx = lin_idx; - event->fun = fun; + event->tag = PGF_CACHED_END; + event->cat = cat; + event->fid = fid; + event->ann = ann; + event->fun = fun; } static void @@ -918,7 +918,7 @@ pgf_lzr_linearize_tree(PgfLzr* lzr, PgfCncTree ctree, size_t lin_idx) if ((*lzr->funcs)->begin_phrase && fapp->ccat != NULL) { (*lzr->funcs)->begin_phrase(lzr->funcs, fapp->ccat->cnccat->abscat->name, - fapp->fid, lin_idx, + fapp->fid, fapp->ccat->cnccat->labels[lin_idx], fapp->abs_id); } @@ -928,7 +928,7 @@ pgf_lzr_linearize_tree(PgfLzr* lzr, PgfCncTree ctree, size_t lin_idx) if ((*lzr->funcs)->end_phrase && fapp->ccat != NULL) { (*lzr->funcs)->end_phrase(lzr->funcs, fapp->ccat->cnccat->abscat->name, - fapp->fid, lin_idx, + fapp->fid, fapp->ccat->cnccat->labels[lin_idx], fapp->abs_id); } break; @@ -957,7 +957,7 @@ pgf_lzr_linearize_tree(PgfLzr* lzr, PgfCncTree ctree, size_t lin_idx) if ((*lzr->funcs)->begin_phrase && flit->fid >= 0) { (*lzr->funcs)->begin_phrase(lzr->funcs, - cat, flit->fid, 0, + cat, flit->fid, "s", ""); } @@ -989,7 +989,7 @@ pgf_lzr_linearize_tree(PgfLzr* lzr, PgfCncTree ctree, size_t lin_idx) if ((*lzr->funcs)->end_phrase && flit->fid >= 0) { (*lzr->funcs)->end_phrase(lzr->funcs, - cat, flit->fid, 0, + cat, flit->fid, "s", ""); } diff --git a/src/runtime/c/pgf/linearizer.h b/src/runtime/c/pgf/linearizer.h index 790dd5800..8a0562913 100644 --- a/src/runtime/c/pgf/linearizer.h +++ b/src/runtime/c/pgf/linearizer.h @@ -84,10 +84,10 @@ struct PgfLinFuncs void (*symbol_token)(PgfLinFuncs** self, PgfToken tok); /// Begin phrase - void (*begin_phrase)(PgfLinFuncs** self, PgfCId cat, int fid, size_t lindex, PgfCId fun); + void (*begin_phrase)(PgfLinFuncs** self, PgfCId cat, int fid, GuString ann, PgfCId fun); /// End phrase - void (*end_phrase)(PgfLinFuncs** self, PgfCId cat, int fid, size_t lindex, PgfCId fun); + void (*end_phrase)(PgfLinFuncs** self, PgfCId cat, int fid, GuString ann, PgfCId fun); /// handling nonExist void (*symbol_ne)(PgfLinFuncs** self); diff --git a/src/runtime/c/pgf/literals.c b/src/runtime/c/pgf/literals.c index a76b8ae77..a3116810a 100644 --- a/src/runtime/c/pgf/literals.c +++ b/src/runtime/c/pgf/literals.c @@ -6,11 +6,12 @@ static PgfExprProb* pgf_match_string_lit(PgfLiteralCallback* self, PgfConcr* concr, - size_t lin_idx, + GuString ann, GuString sentence, size_t* poffset, GuPool *out_pool) { - gu_assert(lin_idx == 0); + if (strcmp("ann","s") != 0) + return NULL; const uint8_t* buf = (uint8_t*) (sentence + *poffset); const uint8_t* p = buf; @@ -51,7 +52,7 @@ pgf_predict_empty_next(GuEnum* self, void* to, GuPool* pool) static GuEnum* pgf_predict_empty(PgfLiteralCallback* self, PgfConcr* concr, - size_t lin_idx, + GuString ann, GuString prefix, GuPool *out_pool) { @@ -67,11 +68,12 @@ static PgfLiteralCallback pgf_string_literal_callback = static PgfExprProb* pgf_match_int_lit(PgfLiteralCallback* self, PgfConcr* concr, - size_t lin_idx, + GuString ann, GuString sentence, size_t* poffset, GuPool *out_pool) { - gu_assert(lin_idx == 0); + if (strcmp("ann","s") != 0) + return NULL; const uint8_t* buf = (uint8_t*) (sentence + *poffset); const uint8_t* p = buf; @@ -121,11 +123,12 @@ static PgfLiteralCallback pgf_int_literal_callback = static PgfExprProb* pgf_match_float_lit(PgfLiteralCallback* self, PgfConcr* concr, - size_t lin_idx, + GuString ann, GuString sentence, size_t* poffset, GuPool *out_pool) { - gu_assert(lin_idx == 0); + if (strcmp("ann","s") != 0) + return NULL; const uint8_t* buf = (uint8_t*) (sentence + *poffset); const uint8_t* p = buf; @@ -226,11 +229,11 @@ pgf_match_name_morpho_callback(PgfMorphoCallback* self_, static PgfExprProb* pgf_match_name_lit(PgfLiteralCallback* self, PgfConcr* concr, - size_t lin_idx, + GuString ann, GuString sentence, size_t* poffset, GuPool *out_pool) { - if (lin_idx != 0) + if (strcmp("ann","s") != 0) return NULL; GuPool* tmp_pool = gu_local_pool(); @@ -349,7 +352,7 @@ pgf_match_unknown_morpho_callback(PgfMorphoCallback* self_, static PgfExprProb* pgf_match_unknown_lit(PgfLiteralCallback* self, PgfConcr* concr, - size_t lin_idx, + GuString ann, GuString sentence, size_t* poffset, GuPool *out_pool) { diff --git a/src/runtime/c/pgf/lookup.c b/src/runtime/c/pgf/lookup.c index 5918275c1..2ec385ee8 100644 --- a/src/runtime/c/pgf/lookup.c +++ b/src/runtime/c/pgf/lookup.c @@ -876,7 +876,7 @@ pgf_lookup_symbol_token(PgfLinFuncs** self, PgfToken token) } static void -pgf_lookup_begin_phrase(PgfLinFuncs** self, PgfCId cat, int fid, size_t lindex, PgfCId funname) +pgf_lookup_begin_phrase(PgfLinFuncs** self, PgfCId cat, int fid, GuString ann, PgfCId funname) { PgfLookupState* st = gu_container(self, PgfLookupState, funcs); @@ -890,7 +890,7 @@ pgf_lookup_begin_phrase(PgfLinFuncs** self, PgfCId cat, int fid, size_t lindex, } static void -pgf_lookup_end_phrase(PgfLinFuncs** self, PgfCId cat, int fid, size_t lindex, PgfCId fun) +pgf_lookup_end_phrase(PgfLinFuncs** self, PgfCId cat, int fid, GuString ann, PgfCId fun) { PgfLookupState* st = gu_container(self, PgfLookupState, funcs); st->curr_absfun = NULL; diff --git a/src/runtime/c/pgf/parser.c b/src/runtime/c/pgf/parser.c index ea5228bc1..5646becfc 100644 --- a/src/runtime/c/pgf/parser.c +++ b/src/runtime/c/pgf/parser.c @@ -9,7 +9,7 @@ #include <math.h> #include <stdlib.h> -//#define PGF_PARSER_DEBUG +#define PGF_PARSER_DEBUG //#define PGF_COUNTS_DEBUG //#define PGF_RESULT_DEBUG @@ -1370,7 +1370,7 @@ pgf_parsing_symbol(PgfParsing* ps, PgfItem* item, PgfSymbol sym) if (callback != NULL) { ep = callback->match(callback, ps->concr, - slit->r, + parg->ccat->cnccat->labels[slit->r], ps->sentence, &offset, ps->out_pool); } @@ -1480,6 +1480,7 @@ pgf_parsing_symbol(PgfParsing* ps, PgfItem* item, PgfSymbol sym) } case PGF_SYMBOL_CAPIT: case PGF_SYMBOL_ALL_CAPIT: { + printf("PGF_SYMBOL_CAPIT\n"); pgf_item_advance(item, ps->pool); pgf_parsing_symbol(ps, item, item->curr_sym); break; diff --git a/src/runtime/c/pgf/parseval.c b/src/runtime/c/pgf/parseval.c index 2882f7643..501430fda 100644 --- a/src/runtime/c/pgf/parseval.c +++ b/src/runtime/c/pgf/parseval.c @@ -6,7 +6,7 @@ typedef struct { int start, end; PgfCId cat; - size_t lin_idx; + GuString ann; } PgfPhrase; typedef struct { @@ -46,14 +46,14 @@ pgf_metrics_lzn_symbol_token(PgfLinFuncs** funcs, PgfToken tok) } static void -pgf_metrics_lzn_begin_phrase(PgfLinFuncs** funcs, PgfCId cat, int fid, size_t lin_index, PgfCId fun) +pgf_metrics_lzn_begin_phrase(PgfLinFuncs** funcs, PgfCId cat, int fid, GuString ann, PgfCId fun) { PgfMetricsLznState* state = gu_container(funcs, PgfMetricsLznState, funcs); gu_buf_push(state->marks, int, state->pos); } static void -pgf_metrics_lzn_end_phrase1(PgfLinFuncs** funcs, PgfCId cat, int fid, size_t lin_idx, PgfCId fun) +pgf_metrics_lzn_end_phrase1(PgfLinFuncs** funcs, PgfCId cat, int fid, GuString ann, PgfCId fun) { PgfMetricsLznState* state = gu_container(funcs, PgfMetricsLznState, funcs); @@ -65,7 +65,7 @@ pgf_metrics_lzn_end_phrase1(PgfLinFuncs** funcs, PgfCId cat, int fid, size_t lin phrase->start = start; phrase->end = end; phrase->cat = cat; - phrase->lin_idx = lin_idx; + phrase->ann = ann; gu_buf_push(state->phrases, PgfPhrase*, phrase); } } @@ -85,7 +85,7 @@ pgf_metrics_symbol_bind(PgfLinFuncs** funcs) } static void -pgf_metrics_lzn_end_phrase2(PgfLinFuncs** funcs, PgfCId cat, int fid, size_t lin_idx, PgfCId fun) +pgf_metrics_lzn_end_phrase2(PgfLinFuncs** funcs, PgfCId cat, int fid, GuString ann, PgfCId fun) { PgfMetricsLznState* state = gu_container(funcs, PgfMetricsLznState, funcs); @@ -100,7 +100,7 @@ pgf_metrics_lzn_end_phrase2(PgfLinFuncs** funcs, PgfCId cat, int fid, size_t lin if (phrase->start == start && phrase->end == end && strcmp(phrase->cat, cat) == 0 && - phrase->lin_idx == lin_idx) { + strcmp(phrase->ann, ann) == 0) { state->matches++; break; } diff --git a/src/runtime/c/pgf/pgf.h b/src/runtime/c/pgf/pgf.h index b40284a42..c0a64f01d 100644 --- a/src/runtime/c/pgf/pgf.h +++ b/src/runtime/c/pgf/pgf.h @@ -254,11 +254,11 @@ typedef struct PgfLiteralCallback PgfLiteralCallback; struct PgfLiteralCallback { PgfExprProb* (*match)(PgfLiteralCallback* self, PgfConcr* concr, - size_t lin_idx, + GuString ann, GuString sentence, size_t* poffset, GuPool *out_pool); GuEnum* (*predict)(PgfLiteralCallback* self, PgfConcr* concr, - size_t lin_idx, + GuString ann, GuString prefix, GuPool *out_pool); }; |
