diff --git a/lib/resource-1.0/danish/DiffDan.gf b/lib/resource-1.0/danish/DiffDan.gf index 60c14b4dd..91c7b453d 100644 --- a/lib/resource-1.0/danish/DiffDan.gf +++ b/lib/resource-1.0/danish/DiffDan.gf @@ -33,6 +33,7 @@ instance DiffDan of DiffScand = open CommonScand, Prelude in { conjThan = "end" ; conjAnd = "og" ; infMark = "at" ; + compMore = "mere" ; subjIf = "hvis" ; diff --git a/lib/resource-1.0/danish/ParadigmsDan.gf b/lib/resource-1.0/danish/ParadigmsDan.gf index 0b7ab0d11..c38810bdf 100644 --- a/lib/resource-1.0/danish/ParadigmsDan.gf +++ b/lib/resource-1.0/danish/ParadigmsDan.gf @@ -179,7 +179,7 @@ oper -- If comparison is formed by "mer, "mest", as in general for -- long adjective, the following pattern is used: - compoundADeg : A -> A ; -- -/mer/mest norsk + compoundA : A -> A ; -- -/mer/mest norsk --2 Adverbs @@ -346,18 +346,23 @@ oper mkA2 a p = a ** {c2 = p ; lock_A2 = <>} ; - mkADeg a b c d e = mkAdject a b c d e ** {lock_A = <>} ; + mkADeg a b c d e = mkAdject a b c d e ** {isComp = False ; lock_A = <>} ; regADeg a = case Predef.dp 2 a of { "sk" => aRask a ; _ => case last a of { "t" => aAbstrakt a ; _ => aRod a - }} ** {lock_A = <>} ; + }} ** {isComp = False ; lock_A = <>} ; - irregADeg a b c = mkAdject a (a + "t") (a + "e") b c ** {lock_A = <>} ; - mk3ADeg a b c = mkAdject a b c (c + "re") (c + "st") ** {lock_A = <>} ; - mk2ADeg a b = mkAdject a b (a + "e") (a + "ere") (a + "est") ** {lock_A = <>} ; + irregADeg a b c = mkAdject a (a + "t") (a + "e") b c ** + {isComp = False ; lock_A = <>} ; + mk3ADeg a b c = mkAdject a b c (c + "re") (c + "st") ** + {isComp = False ; lock_A = <>} ; + mk2ADeg a b = mkAdject a b (a + "e") (a + "ere") (a + "est") ** + {isComp = False ; lock_A = <>} ; + + compoundA adj = {s = adj.s ; isComp = True ; lock_A = <>} ; mkAdv x = ss x ** {lock_Adv = <>} ; mkAdV x = ss x ** {lock_AdV = <>} ; diff --git a/lib/resource-1.0/norwegian/DiffNor.gf b/lib/resource-1.0/norwegian/DiffNor.gf index e0fb800e0..ef4a535ed 100644 --- a/lib/resource-1.0/norwegian/DiffNor.gf +++ b/lib/resource-1.0/norwegian/DiffNor.gf @@ -33,6 +33,7 @@ instance DiffNor of DiffScand = open CommonScand, Prelude in { conjThat = "at" ; conjThan = "enn" ; conjAnd = "og" ; + compMore = "mere" ; infMark = "å" ; subjIf = "hvis" ; diff --git a/lib/resource-1.0/norwegian/ParadigmsNor.gf b/lib/resource-1.0/norwegian/ParadigmsNor.gf index 1078c01df..2d8a7c3e3 100644 --- a/lib/resource-1.0/norwegian/ParadigmsNor.gf +++ b/lib/resource-1.0/norwegian/ParadigmsNor.gf @@ -176,7 +176,7 @@ oper -- If comparison is formed by "mer, "mest", as in general for -- long adjective, the following pattern is used: - compoundADeg : A -> A ; -- -/mer/mest norsk + compoundA : A -> A ; -- -/mer/mest norsk --2 Adverbs @@ -341,21 +341,26 @@ oper {s = table {NPPoss _ => x ; _ => y} ; a = agrP3 g n ; lock_NP = <>} ; - mkA a b c = (mkAdject a b c [] []) ** {lock_A = <>} ; + mkA a b c = (mkAdject a b c [] []) ** {isComp = False ; lock_A = <>} ; mk2A a b = mkA a b (a + "e") ; - regA a = (regADeg a) ** {lock_A = <>} ; + regA a = (regADeg a) ** {isComp = False ; lock_A = <>} ; mkA2 a p = a ** {c2 = p ; lock_A2 = <>} ; - mkADeg a b c d e = mkAdject a b c d e ** {lock_A = <>} ; + mkADeg a b c d e = mkAdject a b c d e ** {isComp = False ; lock_A = <>} ; regADeg a = case Predef.dp 2 a of { "ig" => aBillig a ; "sk" => aRask a ; _ => aRod a - } ** {lock_A = <>} ; - irregADeg a b c = mkAdject a (a + "t") (a + "e") b c ** {lock_A = <>} ; - mk3ADeg a b c = mkAdject a b c (a + "ere") (a + "est") ** {lock_A = <>} ; - mk2ADeg a b = mkAdject a b (a + "e") (a + "ere") (a + "est") ** {lock_A = <>} ; + } ** {isComp = False ; lock_A = <>} ; + irregADeg a b c = mkAdject a (a + "t") (a + "e") b c ** + {isComp = False ; lock_A = <>} ; + mk3ADeg a b c = mkAdject a b c (a + "ere") (a + "est") ** + {isComp = False ; lock_A = <>} ; + mk2ADeg a b = mkAdject a b (a + "e") (a + "ere") (a + "est") ** + {isComp = False ; lock_A = <>} ; + + compoundA adj = {s = adj.s ; isComp = True ; lock_A = <>} ; mkAdv x = ss x ** {lock_Adv = <>} ; mkAdV x = ss x ** {lock_AdV = <>} ; diff --git a/lib/resource-1.0/scandinavian/AdjectiveScand.gf b/lib/resource-1.0/scandinavian/AdjectiveScand.gf index 92b2c0537..fd2f3c1a5 100644 --- a/lib/resource-1.0/scandinavian/AdjectiveScand.gf +++ b/lib/resource-1.0/scandinavian/AdjectiveScand.gf @@ -8,7 +8,11 @@ incomplete concrete AdjectiveScand of Adjective = isPre = True } ; ComparA a np = { - s = \\_ => a.s ! AF ACompar Nom ++ conjThan ++ np.s ! nominative ; + s = \\ap => case a.isComp of { + True => compMore ++ a.s ! AF (APosit ap) Nom ; + _ => a.s ! AF ACompar Nom + } + ++ conjThan ++ np.s ! nominative ; isPre = False } ; diff --git a/lib/resource-1.0/scandinavian/CatScand.gf b/lib/resource-1.0/scandinavian/CatScand.gf index 2608d60a7..daf6fa094 100644 --- a/lib/resource-1.0/scandinavian/CatScand.gf +++ b/lib/resource-1.0/scandinavian/CatScand.gf @@ -83,9 +83,9 @@ incomplete concrete CatScand of Cat = V2, VV, V2A = Verb ** {c2 : Str} ; V3 = Verb ** {c2,c3 : Str} ; - A = Adjective ; + A = Adjective ** {isComp : Bool} ; -- {s : AForm => Str} ; - A2 = Adjective ** {c2 : Str} ; + A2 = Adjective ** {isComp : Bool ; c2 : Str} ; N = Noun ; -- {s : Number => Species => Case => Str ; g : Gender} ; diff --git a/lib/resource-1.0/scandinavian/DiffScand.gf b/lib/resource-1.0/scandinavian/DiffScand.gf index 49f217623..e288be677 100644 --- a/lib/resource-1.0/scandinavian/DiffScand.gf +++ b/lib/resource-1.0/scandinavian/DiffScand.gf @@ -27,6 +27,7 @@ interface DiffScand = open CommonScand, Prelude in { conjThat : Str ; conjThan : Str ; + compMore : Str ; conjAnd : Str ; infMark : Str ; diff --git a/lib/resource-1.0/scandinavian/NounScand.gf b/lib/resource-1.0/scandinavian/NounScand.gf index 89e66e566..ab5367b4d 100644 --- a/lib/resource-1.0/scandinavian/NounScand.gf +++ b/lib/resource-1.0/scandinavian/NounScand.gf @@ -76,7 +76,13 @@ incomplete concrete NounScand of Noun = AdNum adn num = {s = \\g => adn.s ++ num.s ! g ; isDet = True} ; - OrdSuperl a = {s = a.s ! AF (ASuperl SupWeak) Nom ; isDet = True} ; + OrdSuperl a = { + s = case a.isComp of { + True => "mest" ++ a.s ! AF (APosit (Weak Sg)) Nom ; + _ => a.s ! AF (ASuperl SupWeak) Nom + } ; + isDet = True + } ; DefArt = { s = \\n,b,g => if_then_Str b (artDef (gennum g n)) [] ; diff --git a/lib/resource-1.0/swedish/DiffSwe.gf b/lib/resource-1.0/swedish/DiffSwe.gf index 3d6ea6a09..434518a67 100644 --- a/lib/resource-1.0/swedish/DiffSwe.gf +++ b/lib/resource-1.0/swedish/DiffSwe.gf @@ -33,6 +33,7 @@ instance DiffSwe of DiffScand = open CommonScand, Prelude in { conjThan = "än" ; conjAnd = "och" ; infMark = "att" ; + compMore = "mera" ; subjIf = "om" ; diff --git a/lib/resource-1.0/swedish/LexiconSwe.gf b/lib/resource-1.0/swedish/LexiconSwe.gf index b8262b823..80e6db9a8 100644 --- a/lib/resource-1.0/swedish/LexiconSwe.gf +++ b/lib/resource-1.0/swedish/LexiconSwe.gf @@ -16,7 +16,7 @@ lin baby_N = regGenN "bebis" utrum ; bad_A = irregA "dålig" "sämre" "sämst"; bank_N = mk2N "bank" "banker" ; - beautiful_A = mk3A "vacker" "vackert" "vackrast" ; + beautiful_A = mk3A "vacker" "vackert" "vackra" ; become_VA = mkVA (mkV "bli" "blir""bli" "blev" "blivit" "bliven") ; beer_N = regGenN "öl" neutrum ; beg_V2V = mkV2V (mkV "be" "ber""be" "blad" "bett" "bedd") [] "att" ; diff --git a/lib/resource-1.0/swedish/ParadigmsSwe.gf b/lib/resource-1.0/swedish/ParadigmsSwe.gf index bcf5e924e..4c98e8b56 100644 --- a/lib/resource-1.0/swedish/ParadigmsSwe.gf +++ b/lib/resource-1.0/swedish/ParadigmsSwe.gf @@ -158,6 +158,10 @@ oper mk3A : (galen,galet,galna : Str) -> A ; mk2A : (bred,brett : Str) -> A ; +-- Comparison forms may be compound ("mera svensk" - "mest svensk"). + + compoundA : A -> A ; + --3 Two-place adjectives -- @@ -387,7 +391,7 @@ oper {s = table {NPPoss _ => y ; _ => x} ; a = agrP3 g n ; p = P3 ; lock_NP = <>} ; - mkA a b c d e f g = mkAdjective a b c d e f g ** {lock_A = <>} ; + mkA a b c d e f g = mkAdjective a b c d e f g ** {isComp = False ; lock_A = <>} ; regA fin = let fint : Str = case fin of { ru + "nd" => ru + "nt" ; @@ -397,16 +401,17 @@ oper _ => fin + "t" } in - mk3A fin fint (fin + "a") ** {lock_A = <>} ; + mk3A fin fint (fin + "a") ; irregA ung yngre yngst = mkA ung (ung + "t") (ung + "a") (ung + "a") yngre yngst (yngst+"a") ; mk3A ljummen ljummet ljumma = - mkAdjective + mkA ljummen ljummet ljumma ljumma - (ljumma + "re") (ljumma + "st") (ljumma + "ste") ** {lock_A = <>} ; + (ljumma + "re") (ljumma + "st") (ljumma + "ste") ; mk2A vid vitt = mk3A vid vitt (vid + "a") ; + compoundA adj = {s = adj.s ; isComp = True ; lock_A = <>} ; mkA2 a p = a ** {c2 = p ; lock_A2 = <>} ;