%% A Makor-Omega otp file to do preliminary analysis for Yiddish input.
%% The sequential file m2yidcon.otd does contextual analysis of some
%% word-initial forms.

input:
       1;
output:
       1;
states:
       WORD_INIT
       ;
aliases:
       VALIDNONALPH    = (39|`^'|`.')
               ;
       VALIDVWL        = (`a'|`o'|`u'|`i'|`e')
               ;
       VALIDCONS       =(`b'|`v'|`g'|`d'|`h'|`y'|`z'|`k'|`t'|
                               `l'|`m'|`n'|`s'|`p'|`f'|`r'|`c'|`j')
                       ;
       VALIDYID        = (128-135)
                       ;
       VALID           =  ({VALIDNONALPH}|{VALIDVWL}|{VALIDCONS}|{VALIDYID})
                       ;
       INVALID = ^({VALIDNONALPH}|{VALIDVWL}|{VALIDCONS}|{VALIDYID})
                       ;
expressions:
%% Handle `f' first...
        `f' {INVALID}  => `f' `^' \$
                       ;
         `f'                   => 135
                       ;
%% These certain vowels will be the subject of contextual analysis,
%% since they must be preceded with an alef at word-beginnings.
       `o'`y'       => 129
                       ;
       `o'`i'       => 129
                       ;
       `o'`o'  => `w'
                       ;
       `u'     => `w'
                       ;
       `a'`y'  => 133
               ;
       `e'`i'  => 133
               ;
       `e'`y'  => 130
               ;
       `i'     => `y'
               ;
%% 3-char input conventions...
       `v'`o'`o'       => 128 `o' `o'
                       ;
       `.'`k'`h'       => `c' `h'
                       ;
%% 2-char input conventions...
       `.'`v'  => 134
               ;
       `v'`u'  => 128 `o' `o'
               ;
       `o'`o'  => `w'
               ;
       `e'`e'  => 131
               ;
       `y'`i'  => 132
               ;
       `k'`h'  => \*
               ;
       `.'`k'  => `k'
               ;
       `t'`s'  => \*
               ;
       `^'`s'  => \*
               ;
       `s'`h'  => \*
               ;
       `.'`t'  => `t'
               ;
       `.'`s'  => `t'`h'
               ;
       `d'`z'  => \*
               ;
       `z'`h'  => `z'`s'`h'
               ;
       `c'`h'  => `.'`t'`s'`h'
               ;
%% 1-char input conventions...
       `j'     => `d'`z'`s'`h'
               ;
       39      => "^" 39
               ;
       `a'     => "^" 39 `a'
               ;
       `o'     => "^" 39 `a'`u'
               ;
       `b'     => `v'
               ;
       `g'     => \*
               ;
       `d'     => \*
               ;
       `h'     => \*
               ;
       `v'     => 128
               ;
       `u'     => `w'
               ;
       `z'     => \*
               ;
       `t'     => `.'`t'
               ;
       `y'     => `y'`y' % a flag for m2yidcon otp
               ;
       `l'     => \*
               ;
       `m'     => \*
               ;
       `n'     => \*
               ;
       `s'     => `.' `s'
               ;
       `e'     => 96
               ;
       `p'     => `p' `_'
               ;
       `k'     => `q'
               ;
       `r'     => \*
               ;

%% Everything else!
       .     => \*
             ;