123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
-
- /*
- Extra rule for -nisse ending added 11 Dec 2009
- */
-
- routines (
- prelude postlude
- mark_regions
- R1 R2
- standard_suffix
- )
-
- externals ( stem )
-
- integers ( p1 p2 x )
-
- groupings ( v s_ending st_ending )
-
- stringescapes {}
-
- /* special characters (in ISO Latin I) */
-
- stringdef a" hex 'E4'
- stringdef o" hex 'F6'
- stringdef u" hex 'FC'
- stringdef ss hex 'DF'
-
- define v 'aeiouy{a"}{o"}{u"}'
-
- define s_ending 'bdfghklmnrt'
- define st_ending s_ending - 'r'
-
- define prelude as (
-
- test repeat (
- (
- ['{ss}'] <- 'ss'
- ) or next
- )
-
- repeat goto (
- v [('u'] v <- 'U') or
- ('y'] v <- 'Y')
- )
- )
-
- define mark_regions as (
-
- $p1 = limit
- $p2 = limit
-
- test(hop 3 setmark x)
-
- gopast v gopast non-v setmark p1
- try($p1 < x $p1 = x) // at least 3
- gopast v gopast non-v setmark p2
-
- )
-
- define postlude as repeat (
-
- [substring] among(
- 'Y' (<- 'y')
- 'U' (<- 'u')
- '{a"}' (<- 'a')
- '{o"}' (<- 'o')
- '{u"}' (<- 'u')
- '' (next)
- )
-
- )
-
- backwardmode (
-
- define R1 as $p1 <= cursor
- define R2 as $p2 <= cursor
-
- define standard_suffix as (
- do (
- [substring] R1 among(
- 'em' 'ern' 'er'
- ( delete
- )
- 'e' 'en' 'es'
- ( delete
- try (['s'] 'nis' delete)
- )
- 's'
- ( s_ending delete
- )
- )
- )
- do (
- [substring] R1 among(
- 'en' 'er' 'est'
- ( delete
- )
- 'st'
- ( st_ending hop 3 delete
- )
- )
- )
- do (
- [substring] R2 among(
- 'end' 'ung'
- ( delete
- try (['ig'] not 'e' R2 delete)
- )
- 'ig' 'ik' 'isch'
- ( not 'e' delete
- )
- 'lich' 'heit'
- ( delete
- try (
- ['er' or 'en'] R1 delete
- )
- )
- 'keit'
- ( delete
- try (
- [substring] R2 among(
- 'lich' 'ig'
- ( delete
- )
- )
- )
- )
- )
- )
- )
- )
-
- define stem as (
- do prelude
- do mark_regions
- backwards
- do standard_suffix
- do postlude
- )
|