[ci] Fix clang-santisers job for GHA change
[xapian.git] / xapian-core / languages / german2.sbl
blob45d3ae12c8109e075aec3f29c3d66810db7cbcb0
1 // Alias:
3 /*
4     Extra rule for -nisse ending added 11 Dec 2009
5 */
7 routines (
8            prelude postlude
9            mark_regions
10            R1 R2
11            standard_suffix
14 externals ( stem )
16 integers ( p1 p2 x )
18 groupings ( v s_ending st_ending )
20 stringescapes {}
22 /* special characters */
24 stringdef a"   '{U+00E4}'
25 stringdef o"   '{U+00F6}'
26 stringdef u"   '{U+00FC}'
27 stringdef ss   '{U+00DF}'
29 define v 'aeiouy{a"}{o"}{u"}'
31 define s_ending  'bdfghklmnrt'
32 define st_ending s_ending - 'r'
34 define prelude as (
36     test repeat goto (
37         v [('u'] v <- 'U') or
38            ('y'] v <- 'Y')
39     )
41     repeat (
42         [substring] among(
43             '{ss}' (<- 'ss')
44             'ae'   (<- '{a"}')
45             'oe'   (<- '{o"}')
46             'ue'   (<- '{u"}')
47             'qu'   (hop 2)
48             ''     (next)
49         )
50     )
54 define mark_regions as (
56     $p1 = limit
57     $p2 = limit
59     test(hop 3 setmark x)
61     gopast v  gopast non-v  setmark p1
62     try($p1 < x  $p1 = x)  // at least 3
63     gopast v  gopast non-v  setmark p2
67 define postlude as repeat (
69     [substring] among(
70         'Y'    (<- 'y')
71         'U'    (<- 'u')
72         '{a"}' (<- 'a')
73         '{o"}' (<- 'o')
74         '{u"}' (<- 'u')
75         ''     (next)
76     )
80 backwardmode (
82     define R1 as $p1 <= cursor
83     define R2 as $p2 <= cursor
85     define standard_suffix as (
86         do (
87             [substring] R1 among(
88                 'em' 'ern' 'er'
89                 (   delete
90                 )
91                 'e' 'en' 'es'
92                 (   delete
93                     try (['s'] 'nis' delete)
94                 )
95                 's'
96                 (   s_ending delete
97                 )
98             )
99         )
100         do (
101             [substring] R1 among(
102                 'en' 'er' 'est'
103                 (   delete
104                 )
105                 'st'
106                 (   st_ending hop 3 delete
107                 )
108             )
109         )
110         do (
111             [substring] R2 among(
112                 'end' 'ung'
113                 (   delete
114                     try (['ig'] not 'e' R2 delete)
115                 )
116                 'ig' 'ik' 'isch'
117                 (   not 'e' delete
118                 )
119                 'lich' 'heit'
120                 (   delete
121                     try (
122                         ['er' or 'en'] R1 delete
123                     )
124                 )
125                 'keit'
126                 (   delete
127                     try (
128                         [substring] R2 among(
129                             'lich' 'ig'
130                             (   delete
131                             )
132                         )
133                     )
134                 )
135             )
136         )
137     )
140 define stem as (
141     do prelude
142     do mark_regions
143     backwards
144         do standard_suffix
145     do postlude