5 /* the 32 Cyrillic letters in Unicode */
10 stringdef g '{U+0433}'
11 stringdef d '{U+0434}'
12 stringdef e '{U+0435}'
13 stringdef zh '{U+0436}'
14 stringdef z '{U+0437}'
15 stringdef i '{U+0438}'
16 stringdef i` '{U+0439}'
17 stringdef k '{U+043A}'
18 stringdef l '{U+043B}'
19 stringdef m '{U+043C}'
20 stringdef n '{U+043D}'
21 stringdef o '{U+043E}'
22 stringdef p '{U+043F}'
23 stringdef r '{U+0440}'
24 stringdef s '{U+0441}'
25 stringdef t '{U+0442}'
26 stringdef u '{U+0443}'
27 stringdef f '{U+0444}'
28 stringdef kh '{U+0445}'
29 stringdef ts '{U+0446}'
30 stringdef ch '{U+0447}'
31 stringdef sh '{U+0448}'
32 stringdef shch '{U+0449}'
33 stringdef " '{U+044A}'
34 stringdef y '{U+044B}'
35 stringdef ' '{U+044C}'
36 stringdef e` '{U+044D}'
37 stringdef iu '{U+044E}'
38 stringdef ia '{U+044F}'
40 routines ( mark_regions R2
57 define v '{a}{e}{i}{o}{u}{y}{e`}{iu}{ia}'
59 define mark_regions as (
64 gopast v setmark pV gopast non-v
65 gopast v gopast non-v setmark p2
71 define R2 as $p2 <= cursor
73 define perfective_gerund as (
78 ('{a}' or '{ia}' delete)
91 '{e}{e}' '{i}{e}' '{y}{e}' '{o}{e}' '{i}{m}{i}' '{y}{m}{i}'
92 '{e}{i`}' '{i}{i`}' '{y}{i`}' '{o}{i`}' '{e}{m}' '{i}{m}'
93 '{y}{m}' '{o}{m}' '{e}{g}{o}' '{o}{g}{o}' '{e}{m}{u}'
94 '{o}{m}{u}' '{i}{kh}' '{y}{kh}' '{u}{iu}' '{iu}{iu}' '{a}{ia}'
97 '{o}{iu}' // - which is somewhat archaic
98 '{e}{iu}' // - soft form of {o}{iu}
103 define adjectival as (
106 /* of the participle forms, em, vsh, ivsh, yvsh are readily removable.
107 nn, {iu}shch, shch, u{iu}shch can be removed, with a small proportion of
108 errors. Removing im, uem, enn creates too many errors.
113 '{e}{m}' // present passive participle
114 '{n}{n}' // adjective from past passive participle
115 '{v}{sh}' // past active participle
116 '{iu}{shch}' '{shch}' // present active participle
117 ('{a}' or '{ia}' delete)
119 //but not '{i}{m}' '{u}{e}{m}' // present passive participle
120 //or '{e}{n}{n}' // adjective from past passive participle
122 '{i}{v}{sh}' '{y}{v}{sh}'// past active participle
123 '{u}{iu}{shch}' // present active participle
130 define reflexive as (
140 '{l}{a}' '{n}{a}' '{e}{t}{e}' '{i`}{t}{e}' '{l}{i}' '{i`}'
141 '{l}' '{e}{m}' '{n}' '{l}{o}' '{n}{o}' '{e}{t}' '{iu}{t}'
142 '{n}{y}' '{t}{'}' '{e}{sh}{'}'
145 ('{a}' or '{ia}' delete)
147 '{i}{l}{a}' '{y}{l}{a}' '{e}{n}{a}' '{e}{i`}{t}{e}'
148 '{u}{i`}{t}{e}' '{i}{t}{e}' '{i}{l}{i}' '{y}{l}{i}' '{e}{i`}'
149 '{u}{i`}' '{i}{l}' '{y}{l}' '{i}{m}' '{y}{m}' '{e}{n}'
150 '{i}{l}{o}' '{y}{l}{o}' '{e}{n}{o}' '{ia}{t}' '{u}{e}{t}'
151 '{u}{iu}{t}' '{i}{t}' '{y}{t}' '{e}{n}{y}' '{i}{t}{'}'
152 '{y}{t}{'}' '{i}{sh}{'}' '{u}{iu}' '{iu}'
154 /* note the short passive participle tests:
155 '{n}{a}' '{n}' '{n}{o}' '{n}{y}'
156 '{e}{n}{a}' '{e}{n}' '{e}{n}{o}' '{e}{n}{y}'
163 '{a}' '{e}{v}' '{o}{v}' '{i}{e}' '{'}{e}' '{e}'
164 '{i}{ia}{m}{i}' '{ia}{m}{i}' '{a}{m}{i}' '{e}{i}' '{i}{i}'
165 '{i}' '{i}{e}{i`}' '{e}{i`}' '{o}{i`}' '{i}{i`}' '{i`}'
166 '{i}{ia}{m}' '{ia}{m}' '{i}{e}{m}' '{e}{m}' '{a}{m}' '{o}{m}'
167 '{o}' '{u}' '{a}{kh}' '{i}{ia}{kh}' '{ia}{kh}' '{y}' '{'}'
168 '{i}{iu}' '{'}{iu}' '{iu}' '{i}{ia}' '{'}{ia}' '{ia}'
170 /* the small class of neuter forms '{e}{n}{i}' '{e}{n}{e}{m}'
171 '{e}{n}{a}' '{e}{n}' '{e}{n}{a}{m}' '{e}{n}{a}{m}{i}' '{e}{n}{a}{x}'
172 omitted - they only occur on 12 words.
177 define derivational as (
178 [substring] R2 among (
189 '{e}{i`}{sh}{e}' // superlative forms
194 ('{n}' delete) // e.g. -nno endings
196 (delete) // with some slight false conflations
204 backwards setlimit tomark pV for (
208 adjectival or verb or noun
211 try([ '{i}' ] delete)
212 // because noun ending -i{iu} is being treated as verb ending -{iu}