17 groupings ( c v s_ending )
21 /* special characters */
23 stringdef ae '{U+00E6}'
24 stringdef ao '{U+00E5}'
25 stringdef o/ '{U+00F8}'
27 define c 'bcdfghjklmnpqrstvwxz'
29 define v 'aeiouy{ae}{ao}{o/}'
31 define s_ending 'abcdfghjklmnoprtvyz{ao}'
33 define mark_regions as (
37 test ( hop 3 setmark x )
38 goto v gopast non-v setmark p1
39 try ( $p1 < x $p1 = x )
44 define main_suffix as (
45 setlimit tomark p1 for ([substring])
48 'hed' 'ethed' 'ered' 'e' 'erede' 'ende' 'erende' 'ene' 'erne' 'ere'
49 'en' 'heden' 'eren' 'er' 'heder' 'erer' 'heds' 'es' 'endes'
50 'erendes' 'enes' 'ernes' 'eres' 'ens' 'hedens' 'erens' 'ers' 'ets'
58 define consonant_pair as (
60 setlimit tomark p1 for ([substring])
62 'gd' // significant in the call from other_suffix
69 define other_suffix as (
70 do ( ['st'] 'ig' delete )
71 setlimit tomark p1 for ([substring])
73 'ig' 'lig' 'elig' 'els'
74 (delete do consonant_pair)
80 setlimit tomark p1 for ([c] ->ch)