Range check winsock2's socket() return value
[xapian.git] / xapian-core / languages / spanish.sbl
blob9dc403fdf69029b95350bf467ee10ab01914bc27
1 // Alias: es
3 routines (
4            postlude mark_regions
5            RV R1 R2
6            attached_pronoun
7            standard_suffix
8            y_verb_suffix
9            verb_suffix
10            residual_suffix
13 externals ( stem )
15 integers ( pV p1 p2 )
17 groupings ( v )
19 stringescapes {}
21 /* special characters (in ISO Latin I) */
23 stringdef a'   hex 'E1'  // a-acute
24 stringdef e'   hex 'E9'  // e-acute
25 stringdef i'   hex 'ED'  // i-acute
26 stringdef o'   hex 'F3'  // o-acute
27 stringdef u'   hex 'FA'  // u-acute
28 stringdef u"   hex 'FC'  // u-diaeresis
29 stringdef n~   hex 'F1'  // n-tilde
31 define v 'aeiou{a'}{e'}{i'}{o'}{u'}{u"}'
33 define mark_regions as (
35     $pV = limit
36     $p1 = limit
37     $p2 = limit  // defaults
39     do (
40         ( v (non-v gopast v) or (v gopast non-v) )
41         or
42         ( non-v (non-v gopast v) or (v next) )
43         setmark pV
44     )
45     do (
46         gopast v gopast non-v setmark p1
47         gopast v gopast non-v setmark p2
48     )
51 define postlude as repeat (
52     [substring] among(
53         '{a'}' (<- 'a')
54         '{e'}' (<- 'e')
55         '{i'}' (<- 'i')
56         '{o'}' (<- 'o')
57         '{u'}' (<- 'u')
58         // and possibly {u"}->u here, or in prelude
59         ''     (next)
60     ) //or next
63 backwardmode (
65     define RV as $pV <= cursor
66     define R1 as $p1 <= cursor
67     define R2 as $p2 <= cursor
69     define attached_pronoun as (
70         [substring] among(
71             'me' 'se'  'sela' 'selo' 'selas' 'selos' 'la' 'le' 'lo'
72             'las' 'les' 'los' 'nos'
73         )
74         substring RV among(
75             'i{e'}ndo' (] <- 'iendo')
76             '{a'}ndo'  (] <- 'ando')
77             '{a'}r'    (] <- 'ar')
78             '{e'}r'    (] <- 'er')
79             '{i'}r'    (] <- 'ir')
80             'ando'
81             'iendo'
82             'ar' 'er' 'ir'
83                        (delete)
84             'yendo'    ('u' delete)
85         )
86     )
88     define standard_suffix as (
89         [substring] among(
91             'anza' 'anzas'
92             'ico' 'ica' 'icos' 'icas'
93             'ismo' 'ismos'
94             'able' 'ables'
95             'ible' 'ibles'
96             'ista' 'istas'
97             'oso' 'osa' 'osos' 'osas'
98             'amiento' 'amientos'
99             'imiento' 'imientos'
100             (
101                 R2 delete
102             )
103             'adora' 'ador' 'aci{o'}n'
104             'adoras' 'adores' 'aciones'
105             'ante' 'antes' 'ancia' 'ancias'// Note 1
106             (
107                 R2 delete
108                 try ( ['ic'] R2 delete )
109             )
110             'log{i'}a'
111             'log{i'}as'
112             (
113                 R2 <- 'log'
114             )
115             'uci{o'}n' 'uciones'
116             (
117                 R2 <- 'u'
118             )
119             'encia' 'encias'
120             (
121                 R2 <- 'ente'
122             )
123             'amente'
124             (
125                 R1 delete
126                 try (
127                     [substring] R2 delete among(
128                         'iv' (['at'] R2 delete)
129                         'os'
130                         'ic'
131                         'ad'
132                     )
133                 )
134             )
135             'mente'
136             (
137                 R2 delete
138                 try (
139                     [substring] among(
140                         'ante' // Note 1
141                         'able'
142                         'ible' (R2 delete)
143                     )
144                 )
145             )
146             'idad'
147             'idades'
148             (
149                 R2 delete
150                 try (
151                     [substring] among(
152                         'abil'
153                         'ic'
154                         'iv'   (R2 delete)
155                     )
156                 )
157             )
158             'iva' 'ivo'
159             'ivas' 'ivos'
160             (
161                 R2 delete
162                 try (
163                     ['at'] R2 delete // but not a further   ['ic'] R2 delete
164                 )
165             )
166         )
167     )
169     define y_verb_suffix as (
170         setlimit tomark pV for ([substring]) among(
171             'ya' 'ye' 'yan' 'yen' 'yeron' 'yendo' 'yo' 'y{o'}'
172             'yas' 'yes' 'yais' 'yamos'
173                 ('u' delete)
174         )
175     )
177     define verb_suffix as (
178         setlimit tomark pV for ([substring]) among(
180             'en' 'es' '{e'}is' 'emos'
181                 (try ('u' test 'g') ] delete)
183             'ar{i'}an' 'ar{i'}as' 'ar{a'}n' 'ar{a'}s' 'ar{i'}ais'
184             'ar{i'}a' 'ar{e'}is' 'ar{i'}amos' 'aremos' 'ar{a'}'
185             'ar{e'}'
186             'er{i'}an' 'er{i'}as' 'er{a'}n' 'er{a'}s' 'er{i'}ais'
187             'er{i'}a' 'er{e'}is' 'er{i'}amos' 'eremos' 'er{a'}'
188             'er{e'}'
189             'ir{i'}an' 'ir{i'}as' 'ir{a'}n' 'ir{a'}s' 'ir{i'}ais'
190             'ir{i'}a' 'ir{e'}is' 'ir{i'}amos' 'iremos' 'ir{a'}'
191             'ir{e'}'
193             'aba' 'ada' 'ida' '{i'}a' 'ara' 'iera' 'ad' 'ed'
194             'id' 'ase' 'iese' 'aste' 'iste' 'an' 'aban' '{i'}an'
195             'aran' 'ieran' 'asen' 'iesen' 'aron' 'ieron' 'ado'
196             'ido' 'ando' 'iendo' 'i{o'}' 'ar' 'er' 'ir' 'as'
197             'abas' 'adas' 'idas' '{i'}as' 'aras' 'ieras' 'ases'
198             'ieses' '{i'}s' '{a'}is' 'abais' '{i'}ais' 'arais'
199             'ierais'  'aseis' 'ieseis' 'asteis' 'isteis' 'ados'
200             'idos' 'amos' '{a'}bamos' '{i'}amos' 'imos'
201             '{a'}ramos' 'i{e'}ramos' 'i{e'}semos' '{a'}semos'
202                 (delete)
203         )
204     )
206     define residual_suffix as (
207         [substring] among(
208             'os'
209             'a' 'o' '{a'}' '{i'}' '{o'}'
210                 ( RV delete )
211             'e' '{e'}'
212                 ( RV delete try( ['u'] test 'g' RV delete ) )
213         )
214     )
217 define stem as (
218     do mark_regions
219     backwards (
220         do attached_pronoun
221         do ( standard_suffix or
222              y_verb_suffix or
223              verb_suffix
224            )
225         do residual_suffix
226     )
227     do postlude
231     Note 1: additions of 15 Jun 2005