mirror of https://gitee.com/bigwinds/arangodb
73 lines
1.5 KiB
Plaintext
73 lines
1.5 KiB
Plaintext
routines (
|
|
mark_regions
|
|
main_suffix
|
|
consonant_pair
|
|
other_suffix
|
|
)
|
|
|
|
externals ( stem )
|
|
|
|
integers ( p1 x )
|
|
|
|
groupings ( v s_ending )
|
|
|
|
stringescapes {}
|
|
|
|
/* special characters (in ISO Latin I) */
|
|
|
|
stringdef a" hex 'E4'
|
|
stringdef ao hex 'E5'
|
|
stringdef o" hex 'F6'
|
|
|
|
define v 'aeiouy{a"}{ao}{o"}'
|
|
|
|
define s_ending 'bcdfghjklmnoprtvy'
|
|
|
|
define mark_regions as (
|
|
|
|
$p1 = limit
|
|
test ( hop 3 setmark x )
|
|
goto v gopast non-v setmark p1
|
|
try ( $p1 < x $p1 = x )
|
|
)
|
|
|
|
backwardmode (
|
|
|
|
define main_suffix as (
|
|
setlimit tomark p1 for ([substring])
|
|
among(
|
|
|
|
'a' 'arna' 'erna' 'heterna' 'orna' 'ad' 'e' 'ade' 'ande' 'arne'
|
|
'are' 'aste' 'en' 'anden' 'aren' 'heten' 'ern' 'ar' 'er' 'heter'
|
|
'or' 'as' 'arnas' 'ernas' 'ornas' 'es' 'ades' 'andes' 'ens' 'arens'
|
|
'hetens' 'erns' 'at' 'andet' 'het' 'ast'
|
|
(delete)
|
|
's'
|
|
(s_ending delete)
|
|
)
|
|
)
|
|
|
|
define consonant_pair as setlimit tomark p1 for (
|
|
among('dd' 'gd' 'nn' 'dt' 'gt' 'kt' 'tt')
|
|
and ([next] delete)
|
|
)
|
|
|
|
define other_suffix as setlimit tomark p1 for (
|
|
[substring] among(
|
|
'lig' 'ig' 'els' (delete)
|
|
'l{o"}st' (<-'l{o"}s')
|
|
'fullt' (<-'full')
|
|
)
|
|
)
|
|
)
|
|
|
|
define stem as (
|
|
|
|
do mark_regions
|
|
backwards (
|
|
do main_suffix
|
|
do consonant_pair
|
|
do other_suffix
|
|
)
|
|
)
|