diff --git a/examples/phrasebook/WordsDan.gf b/examples/phrasebook/WordsDan.gf index 97d7a6467..b44ba3dcd 100644 --- a/examples/phrasebook/WordsDan.gf +++ b/examples/phrasebook/WordsDan.gf @@ -212,11 +212,17 @@ concrete WordsDan of Words = SentencesDan ** -- transports - HowFar place = mkQS (mkQCl long_IAdv (mkCl (mkVP (SyntaxDan.mkAdv to_Prep place.name)))) ; - HowFarFrom place x = mkQS (mkQCl long_IAdv (mkCl place.name (SyntaxDan.mkAdv from_Prep x.name))) ; + HowFar place = + mkQS (mkQCl far_IAdv (mkCl (mkVP place.to))) ; + HowFarFrom x y = + mkQS (mkQCl far_IAdv (mkCl (mkVP (mkVP y.to) + (SyntaxDan.mkAdv from_Prep x.name)))) ; HowFarFromBy x y t = - mkQS (mkQCl long_IAdv (mkNP (mkNP y.name (SyntaxDan.mkAdv from_Prep x.name)) t)) ; - HowFarBy y t = mkQS (mkQCl long_IAdv (mkNP y.name t)) ; + mkQS (mkQCl far_IAdv (mkCl (mkVP (mkVP (mkVP y.to) + (SyntaxDan.mkAdv from_Prep x.name)) t))) ; + HowFarBy place t = + mkQS (mkQCl far_IAdv (mkCl (mkVP (mkVP place.to) t))) ; + -- not sure ! WhichTranspPlace trans place = mkQS (mkQCl (mkIP which_IDet trans.name) (mkVP (mkVP L.go_V) place.to)) ; @@ -250,7 +256,6 @@ concrete WordsDan of Words = SentencesDan ** by = SyntaxDan.mkAdv by8means_Prep (mkNP n) } ; - far_IAdv = ExtraDan.IAdvAdv L.far_Adv ; - long_IAdv : IAdv = ss "hvor langt" ** {lock_IAdv = <>}; + far_IAdv : IAdv = ss "hvor langt" ** {lock_IAdv = <>}; how8much_IAdv : IAdv = ss "hvad" ** {lock_IAdv = <>}; } diff --git a/examples/phrasebook/WordsFin.gf b/examples/phrasebook/WordsFin.gf index 8b5681cb8..b36461c7a 100644 --- a/examples/phrasebook/WordsFin.gf +++ b/examples/phrasebook/WordsFin.gf @@ -214,11 +214,11 @@ concrete WordsFin of Words = SentencesFin ** -- modifiers of places TheBest = mkSuperl L.good_A ; - TheClosest = mkSuperl L.near_A ; - TheCheapest = mkSuperl (mkA "halpa") ; - TheMostExpensive = mkSuperl (mkA "kallis") ; + TheClosest = mkSuperl (mkA (mkN "läheinen") "lähempi" "lähin") ; + TheCheapest = mkSuperl (mkA (mkN "halpa") "halvempi" "halvin") ; + TheMostExpensive = mkSuperl (mkA (mkN "kallis") "kalliimpi" "kallein") ; TheMostPopular = mkSuperl (mkA "suosittu") ; - TheWorst = mkSuperl L.bad_A ; + TheWorst = mkSuperl (mkA "huono") ; SuperlPlace sup p = placeNP sup p ; @@ -267,7 +267,7 @@ concrete WordsFin of Words = SentencesFin ** by = SyntaxFin.mkAdv (casePrep adessive) (mkNP n) } ; - mkSuperl : A -> Det = \a -> mkDet the_Art (mkOrd a) ; + mkSuperl : A -> Det = \a -> mkDet the_Quant (mkOrd a) ; far_IAdv = E.IAdvAdv L.far_Adv ; } diff --git a/examples/phrasebook/WordsNor.gf b/examples/phrasebook/WordsNor.gf index 20b074ed9..2504602e4 100644 --- a/examples/phrasebook/WordsNor.gf +++ b/examples/phrasebook/WordsNor.gf @@ -213,11 +213,11 @@ concrete WordsNor of Words = SentencesNor ** HowFar place = mkQS (mkQCl far_IAdv (mkCl (mkVP place.to))) ; - HowFarFrom place x = - mkQS (mkQCl far_IAdv (mkCl (mkVP (mkVP place.to) + HowFarFrom x y = + mkQS (mkQCl far_IAdv (mkCl (mkVP (mkVP y.to) (SyntaxNor.mkAdv from_Prep x.name)))) ; - HowFarFromBy place x t = - mkQS (mkQCl far_IAdv (mkCl (mkVP (mkVP (mkVP place.to) + HowFarFromBy x y t = + mkQS (mkQCl far_IAdv (mkCl (mkVP (mkVP (mkVP y.to) (SyntaxNor.mkAdv from_Prep x.name)) t))) ; HowFarBy place t = mkQS (mkQCl far_IAdv (mkCl (mkVP (mkVP place.to) t))) ; diff --git a/examples/phrasebook/WordsSwe.gf b/examples/phrasebook/WordsSwe.gf index edf038029..fcf460103 100644 --- a/examples/phrasebook/WordsSwe.gf +++ b/examples/phrasebook/WordsSwe.gf @@ -191,11 +191,11 @@ concrete WordsSwe of Words = SentencesSwe ** HowFar place = mkQS (mkQCl far_IAdv (mkCl (mkVP place.to))) ; - HowFarFrom place x = - mkQS (mkQCl far_IAdv (mkCl (mkVP (mkVP place.to) + HowFarFrom x y = + mkQS (mkQCl far_IAdv (mkCl (mkVP (mkVP y.to) (SyntaxSwe.mkAdv from_Prep x.name)))) ; - HowFarFromBy place x t = - mkQS (mkQCl far_IAdv (mkCl (mkVP (mkVP (mkVP place.to) + HowFarFromBy x y t = + mkQS (mkQCl far_IAdv (mkCl (mkVP (mkVP (mkVP y.to) (SyntaxSwe.mkAdv from_Prep x.name)) t))) ; HowFarBy place t = mkQS (mkQCl far_IAdv (mkCl (mkVP (mkVP place.to) t))) ; diff --git a/lib/src/finnish/NounFin.gf b/lib/src/finnish/NounFin.gf index 63ab64fc3..6aa4a5811 100644 --- a/lib/src/finnish/NounFin.gf +++ b/lib/src/finnish/NounFin.gf @@ -82,8 +82,8 @@ concrete NounFin of Noun = CatFin ** open ResFin, MorphoFin, Prelude in { } ; DetQuantOrd quant num ord = { - s1 = \\c => quant.s1 ! num.n ! c ++ num.s ! Sg ! c ++ ord.s ! NCase Pl c ; - sp = \\c => quant.sp ! num.n ! c ++ num.s ! Sg ! c ++ ord.s ! NCase Pl c ; + s1 = \\c => quant.s1 ! num.n ! c ++ num.s ! Sg ! c ++ ord.s ! NCase num.n c ; + sp = \\c => quant.sp ! num.n ! c ++ num.s ! Sg ! c ++ ord.s ! NCase num.n c ; s2 = quant.s2 ; n = num.n ; isNum = num.isNum ; diff --git a/lib/src/german/ParadigmsGer.gf b/lib/src/german/ParadigmsGer.gf index 5a50fe363..859eae270 100644 --- a/lib/src/german/ParadigmsGer.gf +++ b/lib/src/german/ParadigmsGer.gf @@ -385,7 +385,8 @@ mkV2 : overload { regA : Str -> A = \a -> case a of { teu + "er" => mk3A a (teu + "rer") (teu + "reste") ; _ + "e" => mk3A a (a + "r") (a + "ste") ; - _ => mk3A a (a + "er") (a + "este") + _ + ("t" | "d" | "s" | "sch" | "z") => mk3A a (a + "er") (a + "este") ; + _ => mk3A a (a + "er") (a + "ste") } ; invarA = \s -> {s = \\_,_ => s ; lock_A = <>} ; ---- comparison diff --git a/lib/src/german/ResGer.gf b/lib/src/german/ResGer.gf index 2bb8a1125..0662ab519 100644 --- a/lib/src/german/ResGer.gf +++ b/lib/src/german/ResGer.gf @@ -320,7 +320,12 @@ resource ResGer = ParamX ** open Prelude in { mkN wein wein wein weines weine weinen ; regA : Str -> Adjective = \blau -> - mkA blau blau (blau + "er") (blau + "est") ; + let blauest : Str = case blau of { + _ + ("t" | "d" | "s" | "sch" | "z") => blau + "est" ; + _ => blau + "st" + } + in + mkA blau blau (blau + "er") blauest ; regV : Str -> Verb = \legen -> let