HoneyTable::read_item(): Read tag in one go
[xapian.git] / xapian-core / languages / dutch.sbl
blobcc23466545f589d582bfc92ad430bde53c3987d0
1 // Alias: nl
3 routines (
4            prelude postlude
5            e_ending
6            en_ending
7            mark_regions
8            R1 R2
9            undouble
10            standard_suffix
13 externals ( stem )
15 booleans ( e_found )
17 integers ( p1 p2 )
19 groupings ( v v_I v_j )
21 stringescapes {}
23 /* special characters (in ISO Latin I) */
25 stringdef a"   hex 'E4'
26 stringdef e"   hex 'EB'
27 stringdef i"   hex 'EF'
28 stringdef o"   hex 'F6'
29 stringdef u"   hex 'FC'
31 stringdef a'   hex 'E1'
32 stringdef e'   hex 'E9'
33 stringdef i'   hex 'ED'
34 stringdef o'   hex 'F3'
35 stringdef u'   hex 'FA'
37 stringdef e`   hex 'E8'
39 define v       'aeiouy{e`}'
40 define v_I     v + 'I'
41 define v_j     v + 'j'
43 define prelude as (
44     test repeat (
45         [substring] among(
46             '{a"}' '{a'}'
47                 (<- 'a')
48             '{e"}' '{e'}'
49                 (<- 'e')
50             '{i"}' '{i'}'
51                 (<- 'i')
52             '{o"}' '{o'}'
53                 (<- 'o')
54             '{u"}' '{u'}'
55                 (<- 'u')
56             ''  (next)
57         ) //or next
58     )
59     try(['y'] <- 'Y')
60     repeat goto (
61         v [('i'] v <- 'I') or
62            ('y']   <- 'Y')
63     )
66 define mark_regions as (
68     $p1 = limit
69     $p2 = limit
71     gopast v  gopast non-v  setmark p1
72     try($p1 < 3  $p1 = 3)  // at least 3
73     gopast v  gopast non-v  setmark p2
77 define postlude as repeat (
79     [substring] among(
80         'Y'  (<- 'y')
81         'I'  (<- 'i')
82         ''   (next)
83     ) //or next
87 backwardmode (
89     define R1 as $p1 <= cursor
90     define R2 as $p2 <= cursor
92     define undouble as (
93         test among('kk' 'dd' 'tt') [next] delete
94     )
96     define e_ending as (
97         unset e_found
98         ['e'] R1 test non-v delete
99         set e_found
100         undouble
101     )
103     define en_ending as (
104         R1 non-v and not 'gem' delete
105         undouble
106     )
108     define standard_suffix as (
109         do (
110             [substring] among(
111                 'heden'
112                 (   R1 <- 'heid'
113                 )
114                 'en' 'ene'
115                 (   en_ending
116                 )
117                 's' 'se'
118                 (   R1 non-v_j delete
119                 )
120             )
121         )
122         do e_ending
124         do ( ['heid'] R2 not 'c' delete
125              ['en'] en_ending
126            )
128         do (
129             [substring] among(
130                 'end' 'ing'
131                 (   R2 delete
132                     (['ig'] R2 not 'e' delete) or undouble
133                 )
134                 'ig'
135                 (   R2 not 'e' delete
136                 )
137                 'lijk'
138                 (   R2 delete e_ending
139                 )
140                 'baar'
141                 (   R2 delete
142                 )
143                 'bar'
144                 (   R2 e_found delete
145                 )
146             )
147         )
148         do (
149             non-v_I
150             test (
151                 among ('aa' 'ee' 'oo' 'uu')
152                 non-v
153             )
154             [next] delete
155         )
156     )
159 define stem as (
161         do prelude
162         do mark_regions
163         backwards
164             do standard_suffix
165         do postlude