[ci] Fix clang-santisers job for GHA change
[xapian.git] / xapian-core / languages / italian.sbl
blobae1171547b38e154f64ea6bb1158084c9b391325
1 // Alias: it
3 routines (
4            prelude postlude mark_regions
5            RV R1 R2
6            attached_pronoun
7            standard_suffix
8            verb_suffix
9            vowel_suffix
12 externals ( stem )
14 integers ( pV p1 p2 )
16 groupings ( v AEIO CG )
18 stringescapes {}
20 /* special characters */
22 stringdef a'   '{U+00E1}'
23 stringdef a`   '{U+00E0}'
24 stringdef e'   '{U+00E9}'
25 stringdef e`   '{U+00E8}'
26 stringdef i'   '{U+00ED}'
27 stringdef i`   '{U+00EC}'
28 stringdef o'   '{U+00F3}'
29 stringdef o`   '{U+00F2}'
30 stringdef u'   '{U+00FA}'
31 stringdef u`   '{U+00F9}'
33 define v 'aeiou{a`}{e`}{i`}{o`}{u`}'
35 define prelude as (
36     test repeat (
37         [substring] among(
38             '{a'}' (<- '{a`}')
39             '{e'}' (<- '{e`}')
40             '{i'}' (<- '{i`}')
41             '{o'}' (<- '{o`}')
42             '{u'}' (<- '{u`}')
43             'qu'   (<- 'qU')
44             ''     (next)
45         )
46     )
47     repeat goto (
48         v [ ('u' ] v <- 'U') or
49             ('i' ] v <- 'I')
50     )
53 define mark_regions as (
55     $pV = limit
56     $p1 = limit
57     $p2 = limit // defaults
59     do (
60         ( v (non-v gopast v) or (v gopast non-v) )
61         or
62         ( non-v (non-v gopast v) or (v next) )
63         setmark pV
64     )
65     do (
66         gopast v gopast non-v setmark p1
67         gopast v gopast non-v setmark p2
68     )
71 define postlude as repeat (
73     [substring] among(
74         'I'  (<- 'i')
75         'U'  (<- 'u')
76         ''   (next)
77     )
81 backwardmode (
83     define RV as $pV <= cursor
84     define R1 as $p1 <= cursor
85     define R2 as $p2 <= cursor
87     define attached_pronoun as (
88         [substring] among(
89             'ci' 'gli' 'la' 'le' 'li' 'lo'
90             'mi' 'ne' 'si'  'ti' 'vi'
91             // the compound forms are:
92             'sene' 'gliela' 'gliele' 'glieli' 'glielo' 'gliene'
93             'mela' 'mele' 'meli' 'melo' 'mene'
94             'tela' 'tele' 'teli' 'telo' 'tene'
95             'cela' 'cele' 'celi' 'celo' 'cene'
96             'vela' 'vele' 'veli' 'velo' 'vene'
97         )
98         among( (RV)
99             'ando' 'endo'   (delete)
100             'ar' 'er' 'ir'  (<- 'e')
101         )
102     )
104     define standard_suffix as (
105         [substring] among(
107             'anza' 'anze' 'ico' 'ici' 'ica' 'ice' 'iche' 'ichi' 'ismo'
108             'ismi' 'abile' 'abili' 'ibile' 'ibili' 'ista' 'iste' 'isti'
109             'ist{a`}' 'ist{e`}' 'ist{i`}' 'oso' 'osi' 'osa' 'ose' 'mente'
110             'atrice' 'atrici'
111             'ante' 'anti' // Note 1
112                ( R2 delete )
113             'azione' 'azioni' 'atore' 'atori'
114                ( R2 delete
115                  try ( ['ic'] R2 delete )
116                )
117             'logia' 'logie'
118                ( R2 <- 'log' )
119             'uzione' 'uzioni' 'usione' 'usioni'
120                ( R2 <- 'u' )
121             'enza' 'enze'
122                ( R2 <- 'ente' )
123             'amento' 'amenti' 'imento' 'imenti'
124                ( RV delete )
125             'amente' (
126                 R1 delete
127                 try (
128                     [substring] R2 delete among(
129                         'iv' ( ['at'] R2 delete )
130                         'os' 'ic' 'abil'
131                     )
132                 )
133             )
134             'it{a`}' (
135                 R2 delete
136                 try (
137                     [substring] among(
138                         'abil' 'ic' 'iv' (R2 delete)
139                     )
140                 )
141             )
142             'ivo' 'ivi' 'iva' 'ive' (
143                 R2 delete
144                 try ( ['at'] R2 delete ['ic'] R2 delete )
145             )
146         )
147     )
149     define verb_suffix as setlimit tomark pV for (
150         [substring] among(
151             'ammo' 'ando' 'ano' 'are' 'arono' 'asse' 'assero' 'assi'
152             'assimo' 'ata' 'ate' 'ati' 'ato' 'ava' 'avamo' 'avano' 'avate'
153             'avi' 'avo' 'emmo' 'enda' 'ende' 'endi' 'endo' 'er{a`}' 'erai'
154             'eranno' 'ere' 'erebbe' 'erebbero' 'erei' 'eremmo' 'eremo'
155             'ereste' 'eresti' 'erete' 'er{o`}' 'erono' 'essero' 'ete'
156             'eva' 'evamo' 'evano' 'evate' 'evi' 'evo' 'Yamo' 'iamo' 'immo'
157             'ir{a`}' 'irai' 'iranno' 'ire' 'irebbe' 'irebbero' 'irei'
158             'iremmo' 'iremo' 'ireste' 'iresti' 'irete' 'ir{o`}' 'irono'
159             'isca' 'iscano' 'isce' 'isci' 'isco' 'iscono' 'issero' 'ita'
160             'ite' 'iti' 'ito' 'iva' 'ivamo' 'ivano' 'ivate' 'ivi' 'ivo'
161             'ono' 'uta' 'ute' 'uti' 'uto'
163             'ar' 'ir' // but 'er' is problematical
164                 (delete)
165         )
166     )
168     define AEIO 'aeio{a`}{e`}{i`}{o`}'
169     define CG 'cg'
171     define vowel_suffix as (
172         try (
173             [AEIO] RV delete
174             ['i'] RV delete
175         )
176         try (
177             ['h'] CG RV delete
178         )
179     )
182 define stem as (
183     do prelude
184     do mark_regions
185     backwards (
186         do attached_pronoun
187         do (standard_suffix or verb_suffix)
188         do vowel_suffix
189     )
190     do postlude
194     Note 1: additions of 15 Jun 2005