Use https for tarball URLs in .spec files
[xapian.git] / xapian-core / languages / portuguese.sbl
blob4b93ece88b10db0800705eff7ea8308034433ccf
1 // Alias: pt
3 routines (
4            prelude postlude mark_regions
5            RV R1 R2
6            standard_suffix
7            verb_suffix
8            residual_suffix
9            residual_form
12 externals ( stem )
14 integers ( pV p1 p2 )
16 groupings ( v )
18 stringescapes {}
20 /* special characters */
22 stringdef a'   '{U+00E1}'  // a-acute
23 stringdef a^   '{U+00E2}'  // a-circumflex e.g. 'bota^nico
24 stringdef e'   '{U+00E9}'  // e-acute
25 stringdef e^   '{U+00EA}'  // e-circumflex
26 stringdef i'   '{U+00ED}'  // i-acute
27 stringdef o^   '{U+00F4}'  // o-circumflex
28 stringdef o'   '{U+00F3}'  // o-acute
29 stringdef u'   '{U+00FA}'  // u-acute
30 stringdef c,   '{U+00E7}'  // c-cedilla
32 stringdef a~   '{U+00E3}'  // a-tilde
33 stringdef o~   '{U+00F5}'  // o-tilde
36 define v 'aeiou{a'}{e'}{i'}{o'}{u'}{a^}{e^}{o^}'
38 define prelude as repeat (
39     [substring] among(
40         '{a~}' (<- 'a~')
41         '{o~}' (<- 'o~')
42         ''     (next)
43     ) //or next
46 define mark_regions as (
48     $pV = limit
49     $p1 = limit
50     $p2 = limit  // defaults
52     do (
53         ( v (non-v gopast v) or (v gopast non-v) )
54         or
55         ( non-v (non-v gopast v) or (v next) )
56         setmark pV
57     )
58     do (
59         gopast v gopast non-v setmark p1
60         gopast v gopast non-v setmark p2
61     )
64 define postlude as repeat (
65     [substring] among(
66         'a~' (<- '{a~}')
67         'o~' (<- '{o~}')
68         ''   (next)
69     ) //or next
72 backwardmode (
74     define RV as $pV <= cursor
75     define R1 as $p1 <= cursor
76     define R2 as $p2 <= cursor
78     define standard_suffix as (
79         [substring] among(
81             'eza' 'ezas'
82             'ico' 'ica' 'icos' 'icas'
83             'ismo' 'ismos'
84             '{a'}vel'
85             '{i'}vel'
86             'ista' 'istas'
87             'oso' 'osa' 'osos' 'osas'
88             'amento' 'amentos'
89             'imento' 'imentos'
91            'adora' 'ador' 'a{c,}a~o'
92            'adoras' 'adores' 'a{c,}o~es'  // no -ic test
93            'ante' 'antes' '{a^}ncia' // Note 1
94             (
95                 R2 delete
96             )
97             'logia'
98             'logias'
99             (
100                 R2 <- 'log'
101             )
102             'u{c,}a~o' 'u{c,}o~es'
103             (
104                 R2 <- 'u'
105             )
106             '{e^}ncia' '{e^}ncias'
107             (
108                 R2 <- 'ente'
109             )
110             'amente'
111             (
112                 R1 delete
113                 try (
114                     [substring] R2 delete among(
115                         'iv' (['at'] R2 delete)
116                         'os'
117                         'ic'
118                         'ad'
119                     )
120                 )
121             )
122             'mente'
123             (
124                 R2 delete
125                 try (
126                     [substring] among(
127                         'ante' // Note 1
128                         'avel'
129                         '{i'}vel' (R2 delete)
130                     )
131                 )
132             )
133             'idade'
134             'idades'
135             (
136                 R2 delete
137                 try (
138                     [substring] among(
139                         'abil'
140                         'ic'
141                         'iv'   (R2 delete)
142                     )
143                 )
144             )
145             'iva' 'ivo'
146             'ivas' 'ivos'
147             (
148                 R2 delete
149                 try (
150                     ['at'] R2 delete // but not a further   ['ic'] R2 delete
151                 )
152             )
153             'ira' 'iras'
154             (
155                 RV 'e'  // -eira -eiras usually non-verbal
156                 <- 'ir'
157             )
158         )
159     )
161     define verb_suffix as setlimit tomark pV for (
162         [substring] among(
163             'ada' 'ida' 'ia' 'aria' 'eria' 'iria' 'ar{a'}' 'ara' 'er{a'}'
164             'era' 'ir{a'}' 'ava' 'asse' 'esse' 'isse' 'aste' 'este' 'iste'
165             'ei' 'arei' 'erei' 'irei' 'am' 'iam' 'ariam' 'eriam' 'iriam'
166             'aram' 'eram' 'iram' 'avam' 'em' 'arem' 'erem' 'irem' 'assem'
167             'essem' 'issem' 'ado' 'ido' 'ando' 'endo' 'indo' 'ara~o'
168             'era~o' 'ira~o' 'ar' 'er' 'ir' 'as' 'adas' 'idas' 'ias'
169             'arias' 'erias' 'irias' 'ar{a'}s' 'aras' 'er{a'}s' 'eras'
170             'ir{a'}s' 'avas' 'es' 'ardes' 'erdes' 'irdes' 'ares' 'eres'
171             'ires' 'asses' 'esses' 'isses' 'astes' 'estes' 'istes' 'is'
172             'ais' 'eis' '{i'}eis' 'ar{i'}eis' 'er{i'}eis' 'ir{i'}eis'
173             '{a'}reis' 'areis' '{e'}reis' 'ereis' '{i'}reis' 'ireis'
174             '{a'}sseis' '{e'}sseis' '{i'}sseis' '{a'}veis' 'ados' 'idos'
175             '{a'}mos' 'amos' '{i'}amos' 'ar{i'}amos' 'er{i'}amos'
176             'ir{i'}amos' '{a'}ramos' '{e'}ramos' '{i'}ramos' '{a'}vamos'
177             'emos' 'aremos' 'eremos' 'iremos' '{a'}ssemos' '{e^}ssemos'
178             '{i'}ssemos' 'imos' 'armos' 'ermos' 'irmos' 'eu' 'iu' 'ou'
180             'ira' 'iras'
181                 (delete)
182         )
183     )
185     define residual_suffix as (
186         [substring] among(
187             'os'
188             'a' 'i' 'o' '{a'}' '{i'}' '{o'}'
189                 ( RV delete )
190         )
191     )
193     define residual_form as (
194         [substring] among(
195             'e' '{e'}' '{e^}'
196                 ( RV delete [('u'] test 'g') or
197                              ('i'] test 'c') RV delete )
198             '{c,}' (<-'c')
199         )
200     )
203 define stem as (
204     do prelude
205     do mark_regions
206     backwards (
207         do (
208             ( ( standard_suffix or verb_suffix )
209               and do ( ['i'] test 'c' RV delete )
210             )
211             or residual_suffix
212         )
213         do residual_form
214     )
215     do postlude
219     Note 1: additions of 15 Jun 2005