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