4 prelude postlude mark_regions
7 standard_suffix combo_suffix
18 booleans ( standard_suffix_removed )
22 /* special characters */
24 stringdef a^ hex '0E2' // a circumflex
25 stringdef i^ hex '0EE' // i circumflex
26 stringdef a+ hex '103' // a breve
27 stringdef s, hex '15F' // s cedilla
28 stringdef t, hex '163' // t cedilla
30 define v 'aeiou{a^}{i^}{a+}'
34 v [ ('u' ] v <- 'U') or
39 define mark_regions as (
43 $p2 = limit // defaults
46 ( v (non-v gopast v) or (v gopast non-v) )
48 ( non-v (non-v gopast v) or (v next) )
52 gopast v gopast non-v setmark p1
53 gopast v gopast non-v setmark p2
57 define postlude as repeat (
69 define RV as $pV <= cursor
70 define R1 as $p1 <= cursor
71 define R2 as $p2 <= cursor
81 'ii' 'iua' 'iei' 'iile' 'iilor' 'ilor'
92 define combo_suffix as test (
95 /* 'IST'. alternative: include the following
97 'alist' 'alista' 'aliste' 'alisti' 'alist{a+}' 'ali{s,}ti' (
101 'abilitate' 'abilitati' 'abilit{a+}i' 'abilit{a+}{t,}i' (
107 'ivitate' 'ivitati' 'ivit{a+}i' 'ivit{a+}{t,}i' (
110 'icitate' 'icitati' 'icit{a+}i' 'icit{a+}{t,}i'
112 'iciv' 'iciva' 'icive' 'icivi' 'iciv{a+}'
113 'ical' 'icala' 'icale' 'icali' 'ical{a+}' (
116 'ativ' 'ativa' 'ative' 'ativi' 'ativ{a+}' 'a{t,}iune'
117 'atoare' 'ator' 'atori'
118 '{a+}toare' '{a+}tor' '{a+}tori' (
121 'itiv' 'itiva' 'itive' 'itivi' 'itiv{a+}' 'i{t,}iune'
122 'itoare' 'itor' 'itori' (
126 set standard_suffix_removed
130 define standard_suffix as (
131 unset standard_suffix_removed
136 // past participle is treated here, rather than
138 'at' 'ata' 'at{a+}' 'ati' 'ate'
139 'ut' 'uta' 'ut{a+}' 'uti' 'ute'
140 'it' 'ita' 'it{a+}' 'iti' 'ite'
142 'ic' 'ica' 'ice' 'ici' 'ic{a+}'
143 'abil' 'abila' 'abile' 'abili' 'abil{a+}'
144 'ibil' 'ibila' 'ibile' 'ibili' 'ibil{a+}'
145 'oasa' 'oas{a+}' 'oase' 'os' 'osi' 'o{s,}i'
146 'ant' 'anta' 'ante' 'anti' 'ant{a+}'
148 'itate' 'itati' 'it{a+}i' 'it{a+}{t,}i'
149 'iv' 'iva' 'ive' 'ivi' 'iv{a+}' (
156 'ist' 'ista' 'iste' 'isti' 'ist{a+}' 'i{s,}ti' (
158 /* 'IST'. alternative: remove with <- '' */
161 set standard_suffix_removed
165 define verb_suffix as setlimit tomark pV for (
167 // 'long' infinitive:
168 'are' 'ere' 'ire' '{a^}re'
177 'ez' 'ezi' 'eaz{a+}' 'esc' 'e{s,}ti'
179 '{a+}sc' '{a+}{s,}ti'
184 'eam' 'eai' 'ea' 'ea{t,}i' 'eau'
185 'iam' 'iai' 'ia' 'ia{t,}i' 'iau'
187 // past: // (not 'ii')
189 'a{s,}i' 'ar{a+}m' 'ar{a+}{t,}i' 'ar{a+}'
190 'u{s,}i' 'ur{a+}m' 'ur{a+}{t,}i' 'ur{a+}'
191 'i{s,}i' 'ir{a+}m' 'ir{a+}{t,}i' 'ir{a+}'
192 '{a^}i' '{a^}{s,}i' '{a^}r{a+}m' '{a^}r{a+}{t,}i' '{a^}r{a+}'
195 'asem' 'ase{s,}i' 'ase' 'aser{a+}m' 'aser{a+}{t,}i' 'aser{a+}'
196 'isem' 'ise{s,}i' 'ise' 'iser{a+}m' 'iser{a+}{t,}i' 'iser{a+}'
197 '{a^}sem' '{a^}se{s,}i' '{a^}se' '{a^}ser{a+}m' '{a^}ser{a+}{t,}i'
199 'usem' 'use{s,}i' 'use' 'user{a+}m' 'user{a+}{t,}i' 'user{a+}'
201 ( non-v or 'u' delete )
210 'se{s,}i' 'ser{a+}m' 'ser{a+}{t,}i' 'ser{a+}'
214 'sesem' 'sese{s,}i' 'sese' 'seser{a+}m' 'seser{a+}{t,}i' 'seser{a+}'
219 define vowel_suffix as (
220 [substring] RV among (
221 'a' 'e' 'i' 'ie' '{a+}' ( delete )
232 do ( standard_suffix_removed or verb_suffix )