static char * print_flat_constituents(con_context_t *ctxt, Linkage linkage) { int num_words; Sentence sent; Postprocessor * pp; int s, numcon_total, numcon_subl, num_subl; char * q; sent = linkage_get_sentence(linkage); ctxt->phrase_ss = string_set_create(); pp = linkage->sent->dict->constituent_pp; numcon_total = 0; count_words_used(ctxt, linkage); num_subl = linkage->num_sublinkages; if(num_subl > MAXSUBL) { num_subl=MAXSUBL; if(verbosity>=2) printf("Number of sublinkages exceeds maximum: only considering first %d sublinkages\n", MAXSUBL); } if(linkage->unionized==1 && num_subl>1) num_subl--; for (s=0; s<num_subl; s++) { linkage_set_current_sublinkage(linkage, s); linkage_post_process(linkage, pp); num_words = linkage_get_num_words(linkage); generate_misc_word_info(ctxt, linkage); numcon_subl = read_constituents_from_domains(ctxt, linkage, numcon_total, s); numcon_total = numcon_total + numcon_subl; } numcon_total = merge_constituents(ctxt, linkage, numcon_total); numcon_total = last_minute_fixes(ctxt, linkage, numcon_total); q = exprint_constituent_structure(ctxt, linkage, numcon_total); string_set_delete(ctxt->phrase_ss); ctxt->phrase_ss = NULL; return q; }
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; }