1%%%%%%%%%%%%%%%%%%%%%%%%%%% hescan.sty %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2% yiddish.sty
3% experimental scanner for Yiddish ASCII files
4% to activate it, say "\setcode {yiddish}
5% 14.06.2000
6%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7% (c) Klaus Lagally
8%     Institut fuer Informatik
9%     Universitaet Stuttgart
10%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11
12\ifx \yidatcode \undefined \else \xpa \endinput \fi
13
14\chardef \yidatcode = \catcode`\@  \catcode`\@ = 11
15
16\a@ident {yiddish.sty}
17{3.10 scanner for YIVO Yiddish encoding} {14.06.2000}
18
19%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
20% dynamic definitions for Hebrew
21{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
22%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
23\gdef \setyid@codes {\seta@codes % activate and change some codes
24\globaldefs=1
25%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
26\def \sc@a {Q"a}	\def \sc@b {b}
27\def \sc@c {@}	\def \sc@d {d}
28\def \sc@e {P}	\def \sc@f {f\n@xp\a@Zo}
29\def \sc@g {g}	\def \sc@h {h}
30\def \sc@i {y}	\def \sc@j {@}
31\def \sc@k {q}	\def \sc@l {l}
32\def \sc@m {m}	\def \sc@n {n}
33\def \sc@o {Q"A}\def \sc@p {\n@xp\a@f}
34\def \sc@q {@}	\def \sc@r {r}
35\def \sc@s {s}	\def \sc@t {t}
36\def \sc@u {w}	\def \sc@v {\n@xp\a@w}
37\def \sc@w {w}	\def \sc@x {@}
38\def \sc@y {y}	\def \sc@z {z}
39%
40\xpa \def \csname sc@`\endcsname {Q}
41\a@digits = {0123456789}	\a@paren  = {()[]}	\a@first = {}
42\globaldefs=0
43}
44%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
45}% end of dynamic definitions for Hebrew: oldcode and pccode
46%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
47
48\def \yid@scan #1>{% modified scanner call: token sequence -> \a@tokens
49\iftest@scan \tracingmacros = 1
50\ifshow \else \lowercase {\a@verb #1>}\fi\fi
51\global\def \a@rest {}\global\a@tokens = {}\@ssimfalse
52\novocalize \lowercase {\sc@beg #1\@ \@@ }% transform
53\iftest@scan \tracingmacros = 0 \xpa \a@verb \xpa (\the\a@tokens )>\fi }
54
55%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
56
57\gdef \yid@beg #1{% start \ArabTeX scanner
58	\def \next {\yid@word #1}%
59\case #1\of
60{iu 	{\def \sc@char {Q}\sc@put }%
61a 	{\def \next {\y@d@a}}%
62e 	{\def \next {\y@d@e}}%
63o 	{\def \next {\y@d@o}}%
64\default{\def \sc@char {@}}%
65}\endcase \next }
66
67\def \yid@word #1{% transform input into internal notation
68%	\def \next {\yid@word }%
69\ifx #1\@ \def \next {\sc@endscan }\else
70\ifcat \nxp #1\relax \def \next {\yid@cs #1}\else	% control sequence
71\apply \yid@next \tocase #1\of
72{	a{\yid@a }%
73	e{\yid@e }%
74	y{\yid@y }%
75	o{\yid@o }%
76	k{\yid@k }%
77	t{\yid@t }%
78	s{\yid@s }%
79	z{\yid@z }%
80	-{\yid@B }%
81\default {\yid@@word #1}%
82}\endcase
83\fi\fi \next }
84
85\def \yid@next #1{\def \next {#1}}
86
87\def \yid@@word #1{% transform input into internal notation
88\case #1\of
89{	`{\def \sc@char {Q}}%
90	"{\def \sc@char {\a@dq}}%
91\default {\ifcat \noexpand #1a\edef \sc@char {\csname sc@#1\endcsname }%
92	  \else \def \sc@char {#1}\fi}%
93}\endcase
94\sc@put \yid@word }%
95
96\def \y@d@cs #1#2{% test word end
97\def \sc@char {#1}\sc@put
98\ifx #2\@ \def \next {\sc@endscan #2}\else
99\ifcat -\nxp #2 \def \next {\yid@word #2}\else
100\def \next {\sc@back #2}\fi \fi \next }
101
102\def \yid@cs #1#2{% control sequence within a word; push back?
103\xpa \ifx #1\closegeresh \def \next {\y@d@cs {\nxp \lq }#2}\else
104\xpa \ifx #1\closequote \def \next {\y@d@cs {`}#2}\else
105	\def \next {\sc@back #1#2}%
106\fi\fi \next }
107
108\def \yid@endscan \@@ {\global\let \a@scan \yid@scan }
109
110%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
111
112\def \y@d@a #1{% `ay ?
113\ifx #1y\def \sc@char {Q"\nxp\a@ZA}\def \next {\yid@word }\else
114\def \sc@char {Q"a}\def \next {\yid@word #1}%
115\fi \sc@put \next }
116
117\def \y@d@e #1{% `ey ?
118\ifx #1y\def \sc@char {Q"\nxp\a@ZE}\def \next {\yid@word }\else
119\def \sc@char {P}\def \next {\yid@word #1}%
120\fi \sc@put \next }
121
122\def \y@d@o #1{% `oy ?
123\ifx #1y\def \sc@char {Q"\nxp\a@ZO}\def \next {\yid@word }\else
124\def \sc@char {Q"A}\def \next {\yid@word #1}%
125\fi \sc@put \next }
126
127%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
128
129\def \yid@a #1{% ay ?
130\ifx #1y\def \sc@char {"\nxp\a@ZA}\def \next {\yid@word }\else
131\def \sc@char {Q"a}\def \next {\yid@word #1}%
132\fi \sc@put \next }
133
134\def \yid@e #1{% ey ?
135\ifx #1y\def \sc@char {"\nxp\a@ZE}\def \next {\yid@word }\else
136\def \sc@char {P}\def \next {\yid@word #1}%
137\fi \sc@put \next }
138
139\def \yid@y #1{% yi ?
140\ifx #1i\def \sc@char {yy"i}\def \next {\yid@word }\else
141\def \sc@char {y}\def \next {\yid@word #1}%
142\fi \sc@put \next }
143
144\def \yid@o #1{% oy ?
145\ifx #1y\def \sc@char {"\nxp\a@ZO}\def \next {\yid@word }\else
146\def \sc@char {Q"A}\def \next {\yid@word #1}%
147\fi \sc@put \next }
148
149\def \yid@k #1{% kh ?
150\ifx #1h\def \sc@char {k}\def \next {\yid@word }\else
151\def \sc@char {q}\def \next {\yid@word #1}%
152\fi \sc@put \next }
153
154\def \yid@t #1{% ts ?
155\ifx #1s\def \sc@char {S}\def \next {\yid@word }\else
156\def \sc@char {C}\def \next {\yid@word #1}%
157\fi \sc@put \next }
158
159\def \yid@s #1{% sh ?
160\ifx #1h\def \sc@char {\nxp\a@S}\def \next {\yid@word }\else
161\def \sc@char {s}\def \next {\yid@word #1}%
162\fi \sc@put \next }
163
164\def \yid@z #1{% zh ?
165\ifx #1h\def \sc@char {z\nxp\a@S}\def \next {\yid@word }\else
166\def \sc@char {z}\def \next {\yid@word #1}%
167\fi \sc@put \next }
168
169\def \yid@B #1{% -- ?
170\ifx #1-\def \sc@char {\a@end}\def \next {\yid@word }\else
171\def \sc@char {B}\def \next {\yid@word #1}%
172\fi \sc@put \next }
173
174%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
175
176\def \yid@select {% select the new scanner
177\heb@catcodes			% inside hebtex.sty; to make sure
178\let \sc@beg \yid@beg 		\let \sc@word \yid@word
179\let \sc@back \sc@@back		\let \sc@endscan \yid@endscan
180\setyid@codes			\global\let \a@scan \yid@scan
181\a@message {input encoding set to YIVO Yiddish conventions}}
182
183%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
184
185\xpa \def \xpa \sc@table \xpa {\sc@table % add the Hebrew encodings
186yiddish\yid@select }
187
188%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
189
190\a@message {scanner for YIVO Yiddish installed.}
191
192\catcode `\@ = \yidatcode
193\endinput
194%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
195
196