public static Rule Rule1f() { return(R.Rule(c => c .Id("p1c23r1f") .From(1100).To(1200) .Query(q => q.Match(m => m.Twice(t => t .Phon(p => IPA.IsConsonant(p))))) .Rules(r => r .Named("Dégémination") .Phono(px => new[] { px[0] })))); }
public static Rule Rule1b() { return(R.Rule(c => c .Id("p1c23r1b") .From(600).To(700) .Query(q => q.Match(m => m.Twice(t => t .Phon(p => IPA.IsConsonant(p) && p != "r")))) .Rules(r => r .Named("Dégémination en intervocalique (excepté /rr/)") .Phono(px => new[] { px[0] })))); }
public static Rule Rule2a() { return(R.Rule(c => c .Id("p1c18r2a") .From(250).To(300) .Query(q => q .Match(m => m.Phon("l")) .After(a => a.Phon(p => IPA.IsConsonant(p) && p != "l"))) .Rules(r => r .Named("Vélarisation de /l/ en coda") .Phono(px => new[] { "ɫ" })))); }
/// <summary> /// Réduction des groupes intérieurs de 3 consonnes /// </summary> public static Rule Rule1() { return(R.Rule(c => c .Id("p1c17r1") .Query( q => q.Match(m => m.Seq( s => s.Phon(p => IPA.IsConsonant(p) && !IPA.IsLiquide(p) && !IPA.IsFricative(p) && !IPA.IsGlide(p)), s => s.Phon(IPA.IsConsonant), s => s.Phon(IPA.IsConsonant))), q => q.Match(m => m.Seq( s => s.Phon(IPA.IsConsonant), s => s.Phon(IPA.IsConsonant), s => s.Phon(p => IPA.IsConsonant(p) && !IPA.IsLiquide(p) && !IPA.IsFricative(p) && !IPA.IsGlide(p))))) .Rules(r => r .Named("Réduction des groupes intérieurs de 3 consonnes") .Phono(px => new[] { px[0], px[2] }) .Rewrite(_ => _) .Rewrite(g => $"{g[0]} {g[2]}")))); }