Transcribe(MSyl syl) { string start, end = ""; INIT i = syl.Initial; TONE t = syl.Tone; MED m = syl.Medial; RIME r = syl.Rime; //initial if (i == INIT.Void && m != MED._) //y w yu { return(_m0Trans[new MRt(r, t)]); } else if (syl.InitialGroup == INITGROUP.GGRP && syl.IsPalatized) //j q x { start = _specInit[i]; if (m == MED.IU && syl.Final != FIN.ENG) //ü -> u but not iong { r = (RIME)((byte)MED.U | (byte)syl.Final); //ju qu xu } } else if (syl.InitialGroup == INITGROUP.TZGRP && m == MED.I && syl.Final == FIN.ZERO) //zyi cyi syi { start = _specInit[i]; } else { start = _miTrans[i]; } //final _mfTrans.TryGetValue(new MRt(r, t), out end); return(start + end); }
public MRt(RIME rime, TONE tone) { _syl = new MSyl((byte)tone, (byte)rime); }