Document xapian-compact --blocksize takes an argument
[xapian.git] / xapian-core / languages / earlyenglish.sbl
blobf930822b57c90e3069e23ef16816ec05e49ba0fc
1 // Alias:
3 integers ( p1 p2 )
4 booleans ( Y_found )
6 routines (
7    shortv
8    R1 R2
9    Step_1a Step_1b Step_1c Step_2 Step_3 Step_4 Step_5a Step_5b
12 externals ( stem )
14 groupings ( v v_WXY )
16 define v        'aeiouy'
17 define v_WXY    v + 'wxY'
19 backwardmode (
21     define shortv as ( non-v_WXY v non-v )
23     define R1 as $p1 <= cursor
24     define R2 as $p2 <= cursor
26     define Step_1a as (
27         [substring] among (
28             'sses' (<-'ss')
29             'ies'  (<-'i')
30             'ss'   ()
31             's'    (delete)
32         )
33     )
35     define Step_1b as (
36         [substring] among (
37             'eed'  (R1 <-'ee')
38             'ed'
39             'est'
40             'eth'
41             'ing' (
42                 test gopast v  delete
43                 test substring among(
44                     'at' 'bl' 'iz'
45                          (<+ 'e')
46                     'bb' 'dd' 'ff' 'gg' 'mm' 'nn' 'pp' 'rr' 'tt'
47                     // ignoring double c, h, j, k, q, v, w, and x
48                          ([next]  delete)
49                     ''   (atmark p1  test shortv  <+ 'e')
50                 )
51             )
52         )
53     )
55     define Step_1c as (
56         ['y' or 'Y']
57         gopast v
58         <-'i'
59     )
61     define Step_2 as (
62         [substring] R1 among (
63             'tional'  (<-'tion')
64             'enci'    (<-'ence')
65             'anci'    (<-'ance')
66             'abli'    (<-'able')
67             'entli'   (<-'ent')
68             'eli'     (<-'e')
69             'izer' 'ization'
70                       (<-'ize')
71             'ational' 'ation' 'ator'
72                       (<-'ate')
73             'alli'    (<-'al')
74             'alism' 'aliti'
75                       (<-'al')
76             'fulness' (<-'ful')
77             'ousli' 'ousness'
78                       (<-'ous')
79             'iveness' 'iviti'
80                       (<-'ive')
81             'biliti'  (<-'ble')
82         )
83     )
85     define Step_3 as (
86         [substring] R1 among (
87             'alize'   (<-'al')
88             'icate' 'iciti' 'ical'
89                       (<-'ic')
90             'ative' 'ful' 'ness'
91                       (delete)
92         )
93     )
95     define Step_4 as (
96         [substring] R2 among (
97             'al' 'ance' 'ence' 'er' 'ic' 'able' 'ible' 'ant' 'ement'
98             'ment' 'ent' 'ou' 'ism' 'ate' 'iti' 'ous' 'ive' 'ize'
99                       (delete)
100             'ion'     ('s' or 't' delete)
101         )
102     )
104     define Step_5a as (
105         ['e']
106         R2 or (R1 not shortv)
107         delete
108     )
110     define Step_5b as (
111         ['l']
112         R2 'l'
113         delete
114     )
117 define stem as (
119     unset Y_found
120     do ( ['y'] <-'Y' set Y_found)
121     do repeat(goto (v ['y']) <-'Y' set Y_found)
123     $p1 = limit
124     $p2 = limit
125     do(
126         gopast v  gopast non-v  setmark p1
127         gopast v  gopast non-v  setmark p2
128     )
130     backwards (
131         do Step_1a
132         do Step_1b
133         do Step_1c
134         do Step_2
135         do Step_3
136         do Step_4
137         do Step_5a
138         do Step_5b
139     )
141     do(Y_found  repeat(goto (['Y']) <-'y'))