Beispiel #1
0
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;
}
Beispiel #2
0
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);
}