%% Normally, context is treated by the m2contest.otp.  However, Yiddish
%% is filtered before we get to the m2contest OTP.  Thus, we've got to
%% do it here!
input:
       1;
output:
       1;
aliases:
       VALIDNONALPH    = (39|96|`^'|`_'|`.')
               ;
       VALIDVWL        = (`a'|`o'|`u')
               ;
       VALIDCONS       =(`c'|`d'|`f'|`g'|`h'|`k'|`l'|`m'|`n'|`p'|`q'|
                               `r'|`s'|`t'|`v'|`w'|`y'|`z')
                       ;
       VALIDYID        = (128-130|132-135)
                       ;
       VALIDBEGINS     = (`y'|129|130|133|`w')
                       ;
       VALID           =  ({VALIDNONALPH}|{VALIDVWL}|{VALIDCONS}|{VALIDYID})
                       ;
       INVALID = ^({VALIDNONALPH}|{VALIDVWL}|{VALIDCONS}|{VALIDYID})
                       ;
expressions:
%% In all these cases, we include the case of a leading underscore to
%% suppress a beginning alef.

%% The troublesome case of yod...
      `_' `y' `y' `w'  => `y' `w'
                       ;
      {VALID} `y' `y' `w'      => \1 `y' `w'
                       ;
      `y' `y' `w'      => `y' `w'
                       ;
      `_' `y' `y'      => `y'
                       ;
      {VALID} `y' `y'  => \1 `y'
                       ;
      `y' `y'  => `y'
                       ;
      `_' `y' `w'      => \2 \3
               ;
      {VALID} `y' `w'      => \*
               ;
       `_' `y' => \$
               ;
       {VALID} `y'     => \*
               ;
      `y' `w'      => \*
               ;
       `y'     => `^' 39 \*
               ;
%% Next, the silly special case that a pair of yid glyphs is
%%      together.
       `_' {VALIDBEGINS}{VALIDBEGINS}  => \2 \3
                                               ;
       {VALID}{VALIDBEGINS}{VALIDBEGINS}       => \*
                                               ;
       {VALIDBEGINS}{VALIDBEGINS}                      => `^' 39 "\/" \*
                                               ;
%% `oi' glyph
       `_' 129       => \$
                       ;
       {VALID} 129       => \*
                       ;
       129       => `^' 39 "\/" 129
                       ;
%% patahtsveyyudn
       `_' 133 => 133
               ;
       {VALID} 133     => \1 133
               ;
       133     => `^' 39 "\/" 133
               ;
%% tsvayyudn
       `_' 130 => 130
               ;
       {VALID} 130     => \1 130
               ;
       130     => `^' 39 "\/"  130
               ;
%% oo/u
       `_' `w' => `w'
                       ;
       {VALID} `w'     => \1 `w'
                       ;
       `w'     => `^' 39 "\/"  `w'
                       ;
%% Everything else!
       .     => \*
             ;