~snowball-yiddish-dev/snowball-yiddish/trunk

« back to all changes in this revision

Viewing changes to website/italian/stem-MS-DOS-Latin-I.sbl

  • Committer: Jason Spashett
  • Date: 2012-04-14 13:12:57 UTC
  • Revision ID: jason@spashett.com-20120414131257-rv3ugy4u2iyoczdk
Add ISO 639-2, and 639-1 language codes

Show diffs side-by-side

added added

removed removed

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