%% 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!
        .     => \*
              ;
