Alphabet а б в г д е ё ж з и і й к к6:к л л6:л м н о ӧ п р с т у ф х ц ч ш щ ъ ы ь э ю я #:0 %- %_:0 Z1:0 ; Diacritics %+ ; Sets ! All Consonants C1 = б в г д ж з й к л м н п р с т ф х ц ч ш щ ; ! All Consonants followed by primary Cyrillic vowels C2 = б в г ж й к м п ф х ч ш щ ; ! Vowels V1 = ӧ ы а я о ё у ю и і е э ; ! Marks M1 = ъ ь ; ! Letter Segm = C1 V1 M1 ; ! Word Boundary ("-" in hyphenated tokens, "_" in tokens written with white-space joiner) WB = # %- %_ ; Rules "л:в" л:в <=> V1 _ [WB: |Z1: | %+: [C1:|ъ:]] ; "м:0" м:0 <=> н _ [WB: |Z1: | %+: [C1:|ъ:]] ; "к:0" к:0 <=> [с| ш| с ь| ч] _ [WB: |Z1: | %+: [C1:|ъ:]] ; "т:0" т:0 <=> п _ [WB: |Z1: | %+: [C1:|ъ:]] ; "ы:0" ы:0 <=> V1:+ C1:* _ %+: V1: ; "л:0" л:0 <=> л _ ь [WB: |Z1: | %+: [C1:|ъ:]] ; "д:0" д:0 <=> д _ [ь|з] [WB: |Z1: | %+: [C1:|ъ:]] ; "й:0" й:0 <=> [б|в|г|д|ж|з|к|м|н|п|р|т] _ [WB: |Z1: | %+: [C1:|ъ:]] ; "ъяс:ьяс" ъ:ь <=> [д: з:| ч:0*] %+: _ я с ; "ъяс:яс" ъ:0 <=> [V1 (й:)|ь] %+: _ я с ; "ь+а:00я, й+а:ъ0я etc. (1)" X:Y <=> [\[:з|:ч]| \:д :з] [ь: | й:] V1:0* %+: _ ; where X in (а о у) Y in (я ё ю) matched ; "ь+а:00я etc. (2)" ь:0 <=> _ V1:0* %+: [а:|о:|у:|і:] ; "й+а:ъ0я etc. (2)" й:ъ <=> C1 _ V1:0* %+: [а:|о:|у:] ; "й+а:00я etc. (2)" й:0 <=> V1 _ V1:0* %+: [а:|о:|у:] ; "і:и" і:и <=> [V1|C2|ь:|:д з] :0* %+: _ ;