Support: quest -f cjk_ngram
[xapian.git] / xapian-core / languages / swedish.sbl
blob9e1e6ab0e879063d0519fafb6f08d658980d4c6b
1 // Alias: sv
3 routines (
4            mark_regions
5            main_suffix
6            consonant_pair
7            other_suffix
10 externals ( stem )
12 integers ( p1 x )
14 groupings ( v s_ending )
16 stringescapes {}
18 /* special characters (in ISO Latin I) */
20 stringdef a"   hex 'E4'
21 stringdef ao   hex 'E5'
22 stringdef o"   hex 'F6'
24 define v 'aeiouy{a"}{ao}{o"}'
26 define s_ending  'bcdfghjklmnoprtvy'
28 define mark_regions as (
30     $p1 = limit
31     test ( hop 3 setmark x )
32     goto v gopast non-v  setmark p1
33     try ( $p1 < x  $p1 = x )
36 backwardmode (
38     define main_suffix as (
39         setlimit tomark p1 for ([substring])
40         among(
42             'a' 'arna' 'erna' 'heterna' 'orna' 'ad' 'e' 'ade' 'ande' 'arne'
43             'are' 'aste' 'en' 'anden' 'aren' 'heten' 'ern' 'ar' 'er' 'heter'
44             'or' 'as' 'arnas' 'ernas' 'ornas' 'es' 'ades' 'andes' 'ens' 'arens'
45             'hetens' 'erns' 'at' 'andet' 'het' 'ast'
46                 (delete)
47             's'
48                 (s_ending delete)
49         )
50     )
52     define consonant_pair as setlimit tomark p1 for (
53         among('dd' 'gd' 'nn' 'dt' 'gt' 'kt' 'tt')
54         and ([next] delete)
55     )
57     define other_suffix as setlimit tomark p1 for (
58         [substring] among(
59             'lig' 'ig' 'els' (delete)
60             'l{o"}st'        (<-'l{o"}s')
61             'fullt'          (<-'full')
62         )
63     )
66 define stem as (
68     do mark_regions
69     backwards (
70         do main_suffix
71         do consonant_pair
72         do other_suffix
73     )