public string GetPron(FrenchWord w) { Lexer.FindAllCombs(w); Parser.Parse(w); Announcer.Announce(w); return(w.Pron); }
protected virtual void MarkNasal(FrenchWord word) { LinkedListNode <FrenchCharComb> MergeNext(LinkedListNode <FrenchCharComb> comb) { var t = comb.Next.Value.Comb; word.CharCombList.Remove(comb.Next); if (comb.Previous != null) { var p = comb.Previous; word.CharCombList.Remove(comb); return(word.CharCombList.AddAfter(p, new FrenchCharComb(comb.Value.Comb + t, comb.Value.StartPos))); } else { word.CharCombList.Remove(comb); return(word.CharCombList.AddFirst(new FrenchCharComb(comb.Value.Comb + t, comb.Value.StartPos))); } } for (var comb = word.CharCombList.First; comb != null; comb = comb.Next) { // mm, nn, mn is char comb // will deal with e elsewhere if (IsNasalizable(comb.Value.Comb) && comb.Next != null && (comb.Next.Value.Comb == "m" || comb.Next.Value.Comb == "n")) { if (comb.Next.Next == null || !IsVowelComb(comb.Next.Next.Value)) { comb = MergeNext(comb); } } } }
public void Parse(FrenchWord word) { MarkSpecialMute(word); SplitBadCharComb(word); SplitCharComb(word); MarkNasal(word); MarkMuteTrail(word); MarkNearVowelSchwa(word); CutSyllable(word); MarkVCECVSchwa(word); Emphasize(word); }
public override string GetPron(LinkedListNode <FrenchCharComb> comb, FrenchWord word) { return(condition(comb, word) ? pron1 : pron2); }
public override string GetPron(LinkedListNode <FrenchCharComb> comb, FrenchWord word) { return(ins); }
public abstract string GetPron(LinkedListNode <FrenchCharComb> comb, FrenchWord word);