11 Step_1a Step_1b Step_1c Step_2 Step_3 Step_4 Step_5
18 groupings ( v v_WXY valid_LI )
23 define v_WXY v + 'wxY'
25 define valid_LI 'cdeghkmnrt'
30 do ( ['y'] <-'Y' set Y_found)
31 do repeat(goto (v ['y']) <-'Y' set Y_found)
34 define mark_regions as (
40 'commun' // added May 2005
41 'arsen' // added Nov 2006 (arsenic/arsenal)
42 // ... extensions possible here ...
43 ) or (gopast v gopast non-v)
45 gopast v gopast non-v setmark p2
57 define R1 as $p1 <= cursor
58 define R2 as $p2 <= cursor
63 '{'}' '{'}s' '{'}s{'}'
70 ((hop 2 <-'i') or <-'ie')
71 's' (next gopast v delete)
80 'ed' 'edly' 'ing' 'ingly'
86 'bb' 'dd' 'ff' 'gg' 'mm' 'nn' 'pp' 'rr' 'tt'
87 // ignoring double c, h, j, k, q, v, w, and x
89 '' (atmark p1 test shortv <+ 'e')
102 [substring] R1 among (
110 'ational' 'ation' 'ator'
112 'alism' 'aliti' 'alli'
124 'li' (valid_LI delete)
129 [substring] R1 among (
133 'icate' 'iciti' 'ical'
138 (R2 delete) // 'R2' added Dec 2001
143 [substring] R2 among (
144 'al' 'ance' 'ence' 'er' 'ic' 'able' 'ible' 'ant' 'ement'
145 'ment' 'ent' 'ism' 'ate' 'iti' 'ous' 'ive' 'ize'
147 'ion' ('s' or 't' delete)
153 'e' (R2 or (R1 not shortv) delete)
158 define exception2 as (
160 [substring] atlimit among(
161 'inning' 'outing' 'canning' 'herring' 'earring'
162 'proceed' 'exceed' 'succeed'
164 // ... extensions possible here ...
170 define exception1 as (
172 [substring] atlimit among(
174 /* special changes: */
182 /* special -LY cases */
191 // ... extensions possible here ...
193 /* invariant forms: */
199 'atlas' 'cosmos' 'bias' 'andes' // not plural forms
201 // ... extensions possible here ...
205 define postlude as (Y_found repeat(goto (['Y']) <-'y'))