void NJD_remove_silent_node(NJD * njd) { NJDNode *node; for (node = njd->head; node != NULL;) if (NJDNode_get_pron(node) == NULL || strcmp(NJDNode_get_pron(node), "") == 0) node = NJD_remove_node(njd, node); else node = node->next; }
void NJDNode_sprint(NJDNode * node, char *buff, const char *split_code) { sprintf(buff, "%s%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%d/%d,%s,%d%s", buff, NJDNode_get_string(node), NJDNode_get_pos(node), NJDNode_get_pos_group1(node), NJDNode_get_pos_group2(node), NJDNode_get_pos_group3(node), NJDNode_get_ctype(node), NJDNode_get_cform(node), NJDNode_get_orig(node), NJDNode_get_read(node), NJDNode_get_pron(node), NJDNode_get_acc(node), NJDNode_get_mora_size(node), NJDNode_get_chain_rule(node), NJDNode_get_chain_flag(node), split_code); }
void NJDNode_fprint(NJDNode * node, FILE * fp) { fprintf(fp, "%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%d/%d,%s,%d\n", NJDNode_get_string(node), NJDNode_get_pos(node), NJDNode_get_pos_group1(node), NJDNode_get_pos_group2(node), NJDNode_get_pos_group3(node), NJDNode_get_ctype(node), NJDNode_get_cform(node), NJDNode_get_orig(node), NJDNode_get_read(node), NJDNode_get_pron(node), NJDNode_get_acc(node), NJDNode_get_mora_size(node), NJDNode_get_chain_rule(node), NJDNode_get_chain_flag(node)); }
static void convert_numerative_pron(const char *list[], NJDNode * node1, NJDNode * node2) { int i, j; int type = 0; const char *str = NJDNode_get_string(node1); char buff[MAXBUFLEN]; if (strcmp(str, "*") == 0) return; for (i = 0; list[i] != NULL; i += 2) { if (strcmp(list[i], str) == 0) { type = atoi(list[i + 1]); break; } } if (type == 1) { for (i = 0; njd_set_digit_rule_voiced_sound_symbol_list[i] != NULL; i += 2) { str = NJDNode_get_pron(node2); j = strtopcmp(str, njd_set_digit_rule_voiced_sound_symbol_list[i]); if (j >= 0) { strcpy(buff, njd_set_digit_rule_voiced_sound_symbol_list[i + 1]); strcat(buff, &str[j]); NJDNode_set_pron(node2, buff); break; } } } else if (type == 2) { for (i = 0; njd_set_digit_rule_semivoiced_sound_symbol_list[i] != NULL; i += 2) { str = NJDNode_get_pron(node2); j = strtopcmp(str, njd_set_digit_rule_semivoiced_sound_symbol_list[i]); if (j >= 0) { strcpy(buff, njd_set_digit_rule_semivoiced_sound_symbol_list[i + 1]); strcat(buff, &str[j]); NJDNode_set_pron(node2, buff); break; } } } }
void njd_set_pronunciation(NJD * njd) { NJDNode *node; const char *str; int i, j = 0; int pos; int len; for (node = njd->head; node != NULL; node = node->next) { if (NJDNode_get_mora_size(node) == 0) { NJDNode_set_read(node, NULL); NJDNode_set_pron(node, NULL); if (strcmp(NJDNode_get_pos(node), NJD_SET_PRONUNCIATION_KIGOU) == 0 || strcmp(NJDNode_get_pos_group1(node), NJD_SET_PRONUNCIATION_KAZU) == 0) { /* for symbol */ for (i = 0; njd_set_pronunciation_symbol_list[i] != NULL; i += 2) if (strcmp(NJDNode_get_string(node), njd_set_pronunciation_symbol_list[i]) == 0) { NJDNode_set_read(node, (char *) njd_set_pronunciation_symbol_list[i + 1]); NJDNode_set_pron(node, (char *) njd_set_pronunciation_symbol_list[i + 1]); break; } } else if (strcmp(NJDNode_get_pron(node), "*") == 0) { /* for others */ str = NJDNode_get_string(node); len = strlen(str); for (pos = 0; pos < len;) { for (i = 0, j = 0; njd_set_pronunciation_list[i] != NULL; i += 3) { j = strtopcmp(&str[pos], njd_set_pronunciation_list[i]); if (j > 0) break; } if (j > 0) { pos += j; NJDNode_add_read(node, (char *) njd_set_pronunciation_list[i + 1]); NJDNode_add_pron(node, (char *) njd_set_pronunciation_list[i + 1]); NJDNode_add_mora_size(node, atoi(njd_set_pronunciation_list[i + 2])); } else { pos++; } } } } } NJD_remove_silent_node(njd); for (node = njd->head; node != NULL; node = node->next) { if (node->next != NULL && strcmp(NJDNode_get_pron(node->next), NJD_SET_PRONUNCIATION_U) == 0 && strcmp(NJDNode_get_pos(node->next), NJD_SET_PRONUNCIATION_JODOUSHI) == 0 && (strcmp(NJDNode_get_pos(node), NJD_SET_PRONUNCIATION_DOUSHI) == 0 || strcmp(NJDNode_get_pos(node), NJD_SET_PRONUNCIATION_JODOUSHI) == 0) && NJDNode_get_mora_size(node) > 0) { NJDNode_set_pron(node->next, NJD_SET_PRONUNCIATION_CHOUON); } if (node->next != NULL && strcmp(NJDNode_get_pos(node), NJD_SET_PRONUNCIATION_JODOUSHI) == 0 && strcmp(NJDNode_get_string(node->next), NJD_SET_PRONUNCIATION_QUESTION) == 0) { if (strcmp(NJDNode_get_string(node), NJD_SET_PRONUNCIATION_DESU_STR) == 0) NJDNode_set_pron(node, NJD_SET_PRONUNCIATION_DESU_PRON); else if (strcmp(NJDNode_get_string(node), NJD_SET_PRONUNCIATION_MASU_STR) == 0) NJDNode_set_pron(node, NJD_SET_PRONUNCIATION_MASU_PRON); } } }