Morphology of Khalkha/АА vowel harmony issue

From Apertium
Jump to navigation Jump to search

There is a rule (or set of rules?) that's acting up in the Khalkha transducer.

The main rule involved is that which turns the second {А} archiphoneme in {А}{А} to one of a series of vowels that isn't the default {А}. There is another series of rules which then adjust the first {А} based on the second {А} and are sensitive to segments which may precede the {А}s as well.

Expected behaviour

  • нүд<n><abl>нүд>{Н}{А}{А}снүднээс
  • i.e., н:н ү:ү д:д >:0 {Н}:н {А}:э {А}:э с:с

By "the rule doesn't work", I mean that the transducer outputs the defaults of {А}: нүднаас.

The main rule

"{A} vowel harmony for second {А} in {А}{А}"
%{А%}:Vy <=> [ :Vx - %{А%}: ] [ :NonVow* %>: :NonVow ]/[ %>: | :0* | :%  ] [ %{А%}: - :0 ] _ ;
         except
             _ %{А%}: ;  ! if {A}{A}, only do second {A}
             ь:/:0 _ ;
         where Vx in ( ү э ө о )
               Vy in ( э э ө о )
         matched ;

Variants of the crucial line

That work

Specifically with the example above.

  • %{А%}:Vy <=> [ :Vx - %{А%}: ] [ :NonVow* %>: :NonVow ]/[ :0* | :% ] [ %{А%}: - :0 ] _ ;
  • %{А%}:Vy <=> [ :Vx - %{А%}: ] [ :NonVow* %>:* :NonVow ]/[ %>: | :0* | :% ] [ %{А%}: - :0 ] _ ;

That don't work

Specifically with the example above.

  • %{А%}:Vy <=> [ :Vx - %{А%}: ] [ :NonVow* :NonVow ]/[ %>: | :0* | :% ] [ %{А%}: - :0 ] _ ;
  • %{А%}:Vy <=> [ :Vx - %{А%}: ] [ :NonVow* :NonVow ]/[ %>:* | :0* | :% ] [ %{А%}: - :0 ] _ ;
  • %{А%}:Vy <=> [ :Vx - %{А%}: ] [ :NonVow* %>: :NonVow ]/[ :0 | :% ] [ %{А%}: - :0 ] _ ;


Other potentially relevant rules


"{А} vowel harmony for first {А} in {A}{A}"
%{А%}:Vy <=> _ %{А%}:Vx ;
         except
             ь:/:0 _ %{А%}: ;
             :и/:0 _ %{А%}: ;
         where Vx in ( э ө о )
               Vy in ( э ө о )
         matched ;

!! ёс>{А}{А}c:ёсоос, жил>{А}{А}c:жилээс
"{А} vowel harmony for Y ''vowels''"
%{А%}:Vy <=> .#. (:NonVow) [ :Vx - %{А%}: ] [ [ :NonVow - Y: ] ( [ :NonVow - Y: ]*) ]/[ :0 | :% ] %{А%}: _ ;
         except
             _ %{А%}: ;  ! if {A}{A}, only do second {A}
             ь:/:0 _ ;
         where Vx in ( е ё и )
               Vy in ( э о э )
         matched ;

!! анги>{А}{А}с:ангиас, морь>{А}{А}с:мориос
"first {А} deletes after и or ь:и"
%{А%}:0 <=> [ :и | ь:и ]/:0 _ %{А%}: ;

Some defaults

 %{ң%}:н %{В%}:в %{Т%}:т %{Д%}:д %{Н%}:н ! consonants
 %{г%}:0 %{й%}:0 %{а%}:0 %{ь%}:0 %{н%}:0 ! disappearing stuff
 %{ъ%}:0                                 ! "
 %{А%}:а %{I%}:ы %{У%}:у                 ! Vowels
 ° %% %, %. %- %>:0 %