Sentence sentence_create(const char *input_string, Dictionary dict) { Sentence sent; sent = (Sentence) xalloc(sizeof(struct Sentence_s)); memset(sent, 0, sizeof(struct Sentence_s)); sent->dict = dict; sent->string_set = string_set_create(); sent->rand_state = global_rand_state; sent->postprocessor = post_process_new(dict->base_knowledge); /* Make a copy of the input */ sent->orig_sentence = string_set_add (input_string, sent->string_set); return sent; }
static char * do_print_flat_constituents(con_context_t *ctxt, Linkage linkage) { int numcon_total= 0, numcon_subl; char * q; Sentence sent = linkage->sent; assert(NULL != sent->lnkages, "No linkages"); /* Sentence already free()'d */ ctxt->phrase_ss = string_set_create(); generate_misc_word_info(ctxt, linkage); if (NULL == sent->constituent_pp) /* First time for this sentence */ sent->constituent_pp = post_process_new(sent->dict->hpsg_knowledge); do_post_process(sent->constituent_pp, linkage, linkage->is_sent_long); /** No-op. If we wanted to debug domain names, we could do this... * linkage_free_pp_info(linkage); * linkage_set_domain_names(sent->constituent_pp, linkage); */ linkage->hpsg_pp_data = sent->constituent_pp->pp_data; pp_new_domain_array(&linkage->hpsg_pp_data); numcon_subl = read_constituents_from_domains(ctxt, linkage, numcon_total); numcon_total += numcon_subl; assert (numcon_total < ctxt->conlen, "Too many constituents (c)"); numcon_total = merge_constituents(ctxt, linkage, numcon_total); assert (numcon_total < ctxt->conlen, "Too many constituents (d)"); numcon_total = new_style_conjunctions(ctxt, linkage, numcon_total); assert (numcon_total < ctxt->conlen, "Too many constituents (e)"); numcon_total = last_minute_fixes(ctxt, linkage, numcon_total); assert (numcon_total < ctxt->conlen, "Too many constituents (f)"); q = exprint_constituent_structure(ctxt, linkage, numcon_total); string_set_delete(ctxt->phrase_ss); ctxt->phrase_ss = NULL; return q; }
/* ------ Deprecated functions, remove these someday ------ */ PostProcessor * post_process_open(const char *path) { pp_knowledge *kno = pp_knowledge_open(path); return post_process_new(kno); }