1
0
forked from GitHub/gf-rgl

fix bugs in regAdjective and mkStem: now inflects correctly adjectives like blauw, and verbs with ≥2 syllables in the stem (ademen, rekenen, schakelen, ...)

This commit is contained in:
Inari Listenmaa
2018-01-11 16:13:26 +01:00
parent 20c5bcfc33
commit 233f7feb78

View File

@@ -101,6 +101,7 @@ resource ResDut = ParamX ** open Prelude, Predef in {
_ + ("i"|"u"|"ij") => endCons s + "e" ; _ + ("i"|"u"|"ij") => endCons s + "e" ;
b + v@("aa"|"ee"|"oo"|"uu") + c@? => b + shortVoc v c + "e" ; b + v@("aa"|"ee"|"oo"|"uu") + c@? => b + shortVoc v c + "e" ;
b + ("ei"|"eu"|"oe"|"ou"|"ie"|"ij"|"ui") + ? => endCons s + "e" ; b + ("ei"|"eu"|"oe"|"ou"|"ie"|"ij"|"ui") + ? => endCons s + "e" ;
b + v@("a"|"e"|"i"|"o"|"u" ) + "w" => s + "e" ; -- to prevent *blauwwe -- does this happen to other end consonants?
b + v@("a"|"e"|"i"|"o"|"u" ) + c@? => b + v + c + c + "e" ; b + v@("a"|"e"|"i"|"o"|"u" ) + c@? => b + v + c + c + "e" ;
_ => endCons s + "e" _ => endCons s + "e"
} ; } ;
@@ -200,6 +201,7 @@ param
-- If a stem ends on a double consonant then one of them disappears -- If a stem ends on a double consonant then one of them disappears
-- If a stem ends on a consonant but that consonant has exactly 1 vowel before it -- If a stem ends on a consonant but that consonant has exactly 1 vowel before it
-- then we have to double this vowel -- then we have to double this vowel
-- Only if it's a monosyllable stem!
mkStem : Str -> Str =\lopen -> mkStem : Str -> Str =\lopen ->
let let
lop = tk 2 lopen ; --drop the -en lop = tk 2 lopen ; --drop the -en
@@ -216,9 +218,10 @@ param
werk = lop -- no changes to stem werk = lop -- no changes to stem
in in
case lop of { case lop of { -- stress is on the first vowel, so latter one doesn't double.
_+ #vowel + #consonant + #vowel + _ => lop ; -- this catches ademen, rekenen, schakelen etc. / IL2018
#vowel + #consonant => loop ; #vowel + #consonant => loop ;
_+ #consonant + #vowel + #consonant => loop ; _+ #consonant + #vowel + #consonant => loop ; -- stressed vowel doubles.
_+ ("bb" | "dd" | "ff" | "gg" | "kk" | "ll" | "mm" | "nn" | "pp" | _+ ("bb" | "dd" | "ff" | "gg" | "kk" | "ll" | "mm" | "nn" | "pp" |
"rr" | "ss" | "tt") => zeg ; "rr" | "ss" | "tt") => zeg ;
_+ #consonant + ("v"|"z") => kerf ; _+ #consonant + ("v"|"z") => kerf ;