static int ru_syl_boundary(const cst_item *i,const cst_val *v) { const char *p; const char *n; const char *nn; if (v == NULL) return TRUE; n=val_string(val_car(v)); if (is_silence(n)) return TRUE; if (!has_vowel_in_list(v)) return FALSE; if (!has_vowel_in_syl(i)) return FALSE; if (is_vowel(n)) return TRUE; if (val_cdr(v) == NULL) return FALSE; p = item_feat_string(i,"name"); nn = val_string(val_car(val_cdr(v))); if(is_vowel(p)) { if(is_vowel(nn)) return TRUE; if(is_sonorant(n)&&!is_sonorant(nn)) return FALSE; if(is_j(n)) return FALSE; return TRUE; } if(is_sonorant(p)) return TRUE; if(is_j(p)) return TRUE; return FALSE; }
t_shape *is_valid_shape(char *s) { t_shape *tmp; tmp = NULL; if ((tmp = is_i(s)) != NULL) return (tmp); if ((tmp = is_o(s)) != NULL) return (tmp); if ((tmp = is_t(s)) != NULL) return (tmp); if ((tmp = is_l(s)) != NULL) return (tmp); if ((tmp = is_j(s)) != NULL) return (tmp); if ((tmp = is_z(s)) != NULL) return (tmp); if ((tmp = is_s(s)) != NULL) return (tmp); return (NULL); }