diff --git a/lib/resource-1.0/scandinavian/DiffScand.gf b/lib/resource-1.0/scandinavian/DiffScand.gf index d95c0fddc..bc5b341bc 100644 --- a/lib/resource-1.0/scandinavian/DiffScand.gf +++ b/lib/resource-1.0/scandinavian/DiffScand.gf @@ -28,6 +28,8 @@ interface DiffScand = open ResScand, Prelude in { verbHave : {s : VForm => Str ; vtype : VType} ; verbBe : {s : VForm => Str ; vtype : VType} ; + verbBecome : {s : VForm => Str ; vtype : VType} ; + auxFut : Str ; auxCond : Str ; diff --git a/lib/resource-1.0/scandinavian/PhraseScand.gf b/lib/resource-1.0/scandinavian/PhraseScand.gf index c838e6c0a..feae4f76b 100644 --- a/lib/resource-1.0/scandinavian/PhraseScand.gf +++ b/lib/resource-1.0/scandinavian/PhraseScand.gf @@ -12,7 +12,7 @@ incomplete concrete PhraseScand of Phrase = UttIP ip = {s = ip.s ! nominative} ; --- Acc also UttIAdv iadv = iadv ; UttNP np = {s = np.s ! accusative} ; ----- UttVP vp = {s = infMark ++ infVP vp (agrP3 Sg)} ; + UttVP vp = {s = infMark ++ infVP vp (agrP3 Utr Sg)} ; UttAdv adv = adv ; NoPConj = {s = []} ; diff --git a/lib/resource-1.0/scandinavian/ResScand.gf b/lib/resource-1.0/scandinavian/ResScand.gf index 676c89078..b19330e3c 100644 --- a/lib/resource-1.0/scandinavian/ResScand.gf +++ b/lib/resource-1.0/scandinavian/ResScand.gf @@ -190,30 +190,4 @@ resource ResScand = ParamScand ** open Prelude in { } } ; ----- For $Numeral$. --- --- mkNum : Str -> Str -> Str -> Str -> {s : DForm => CardOrd => Str} = --- \two, twelve, twenty, second -> --- {s = table { --- unit => table {NCard => two ; NOrd => second} ; --- teen => \\c => mkCard c twelve ; --- ten => \\c => mkCard c twenty --- } --- } ; --- --- regNum : Str -> {s : DForm => CardOrd => Str} = --- \six -> mkNum six (six + "teen") (six + "ty") (regOrd six) ; --- --- regCardOrd : Str -> {s : CardOrd => Str} = \ten -> --- {s = table {NCard => ten ; NOrd => regOrd ten}} ; --- --- mkCard : CardOrd -> Str -> Str = \c,ten -> --- (regCardOrd ten).s ! c ; --- --- regOrd : Str -> Str = \ten -> --- case last ten of { --- "y" => init ten + "ieth" ; --- _ => ten + "th" --- } ; --- } diff --git a/lib/resource-1.0/scandinavian/VerbScand.gf b/lib/resource-1.0/scandinavian/VerbScand.gf index d40f7e867..f19e93d2d 100644 --- a/lib/resource-1.0/scandinavian/VerbScand.gf +++ b/lib/resource-1.0/scandinavian/VerbScand.gf @@ -33,9 +33,10 @@ incomplete concrete VerbScand of Verb = CatScand ** open DiffScand, ResScand in ReflV2 v = insertObj (\\a => v.c2 ++ reflPron a) (predV v) ; --- PassV2 v = {s = \\_ => v.s ! VPPart} ; --- UseComp comp = insertObj (\\a => comp.s ! agrAdj a.gn DIndef) (predV verbBe) ; - + PassV2 v = + insertObj + (\\a => v.s ! VI (VPtPret (agrAdj a.gn DIndef) Nom)) + (predV verbBecome) ; UseVS, UseVQ = \vv -> {s = vv.s ; c2 = [] ; vtype = vv.vtype} ; diff --git a/lib/resource-1.0/swedish/DiffSwe.gf b/lib/resource-1.0/swedish/DiffSwe.gf index e08080e85..8a5592b8a 100644 --- a/lib/resource-1.0/swedish/DiffSwe.gf +++ b/lib/resource-1.0/swedish/DiffSwe.gf @@ -36,6 +36,8 @@ instance DiffSwe of DiffScand = open ResScand, Prelude in { mkVerb "ha" "har" "ha" "hade" "haft" "havd" "havt" "havda" ; verbBe = mkVerb "vara" "är" "var" "var" "varit" "varen" "varet" "varna" ; + verbBecome = + mkVerb "bli" "blir" "bli" "blev" "blivit" "bliven" "blivet" "blivna" ; auxFut = "ska" ; -- "skall" in ExtSwe auxCond = "skulle" ; diff --git a/lib/resource-1.0/swedish/MorphoSwe.gf b/lib/resource-1.0/swedish/MorphoSwe.gf index 20e370db1..2afb993d0 100644 --- a/lib/resource-1.0/swedish/MorphoSwe.gf +++ b/lib/resource-1.0/swedish/MorphoSwe.gf @@ -256,21 +256,36 @@ conj3 : Str -> Verb = \bo -> -- for $Structural$ --- for Numerals +-- For $Numeral$. param DForm = ental | ton | tiotal ; oper - LinDigit = {s : DForm => Str} ; + LinDigit = {s : DForm => CardOrd => Str} ; - mkTal : Str -> Str -> Str -> LinDigit = \två, tolv, tjugo -> - {s = table {ental => två ; ton => tolv ; tiotal => tjugo}} ; + cardOrd : Str -> Str -> CardOrd => Str = \tre,tredje -> + table { + NCard _ => tre ; + NOrd a => tredje ---- a + } ; - regTal : Str -> LinDigit = \fem -> - mkTal fem (fem + "ton") (fem + "tio") ; + cardReg : Str -> CardOrd => Str = \tio -> + cardOrd tio (tio + "nde") ; + + mkTal : (x1,_,_,_,x5 : Str) -> LinDigit = + \två, tolv, tjugo, andra, tolfte -> + {s = table { + ental => cardOrd två andra ; + ton => cardOrd tolv tolfte ; + tiotal => cardReg tjugo + } + } ; + + numPl : (CardOrd => Str) -> {s : CardOrd => Str ; n : Number} = \n -> + {s = n ; n = Pl} ; + + invNum : CardOrd = NCard Neutr ; - numPl : Str -> {s : Gender => Str ; n : Number} = \n -> - {s = \\_ => n ; n = Pl} ; } ; diff --git a/lib/resource-1.0/swedish/NumeralSwe.gf b/lib/resource-1.0/swedish/NumeralSwe.gf index 8760f0204..0af2055f1 100644 --- a/lib/resource-1.0/swedish/NumeralSwe.gf +++ b/lib/resource-1.0/swedish/NumeralSwe.gf @@ -1,47 +1,47 @@ concrete NumeralSwe of Numeral = CatSwe ** open ResScand, MorphoSwe in { -{- lincat Digit = {s : DForm => CardOrd => Str} ; Sub10 = {s : DForm => CardOrd => Str ; n : Number} ; - Sub100 = {s : CardOrd => Str ; n : Number} ; - Sub1000 = {s : CardOrd => Str ; n : Number} ; - Sub1000000 = {s : CardOrd => Str ; n : Number} ; + Sub100, Sub1000, Sub1000000 = + {s : CardOrd => Str ; n : Number} ; -lin num x = x ; -lin n2 = let two = mkNum "two" "twelve" "twenty" "second" in - {s = \\f,c => case of { - => "twelfth" ; - _ => two.s ! f ! c - } - } ; +lin + num x = x ; -lin n3 = mkNum "three" "thirteen" "thirty" "third" ; -lin n4 = mkNum "four" "fourteen" "forty" "fourth" ; -lin n5 = mkNum "five" "fifteen" "fifty" "fifth" ; -lin n6 = regNum "six" ; -lin n7 = regNum "seven" ; -lin n8 = mkNum "eight" "eighteen" "eighty" "eighth" ; -lin n9 = regNum "nine" ; + n2 = mkTal "två" "tolv" "tjugo" "andra" "tolfte" ; + n3 = mkTal "tre" "tretton" "trettio" "tredje" "trettonde" ; + n4 = mkTal "fyra" "fjorton" "fyrtio" "fjärde" "fjortonde" ; + n5 = mkTal "fem" "femton" "femtio" "femte" "femtonde" ; + n6 = mkTal "sex" "sexton" "sextion" "sjätte" "sextonde" ; + n7 = mkTal "sju" "sjutton" "sjuttio" "sjunde" "sjuttonde" ; + n8 = mkTal "åtta" "arton" "åttio" "åttonde" "artonde" ; + n9 = mkTal "nio" "nitton" "nittio" "nionde" "nittonde" ; -lin pot01 = mkNum "one" "eleven" "ten" "first" ** {n = Sg} ; -lin pot0 d = d ** {n = Pl} ; -lin pot110 = regCardOrd "ten" ** {n = Pl} ; -lin pot111 = regCardOrd "eleven" ** {n = Pl} ; -lin pot1to19 d = {s = d.s ! teen} ** {n = Pl} ; -lin pot0as1 n = {s = n.s ! unit} ** {n = n.n} ; -lin pot1 d = {s = d.s ! ten} ** {n = Pl} ; -lin pot1plus d e = { - s = \\c => d.s ! ten ! NCard ++ "-" ++ e.s ! unit ! c ; n = Pl} ; -lin pot1as2 n = n ; -lin pot2 d = {s = \\c => d.s ! unit ! NCard ++ mkCard c "hundred"} ** {n = Pl} ; -lin pot2plus d e = { - s = \\c => d.s ! unit ! NCard ++ "hundred" ++ "and" ++ e.s ! c ; n = Pl} ; -lin pot2as3 n = n ; -lin pot3 n = { - s = \\c => n.s ! NCard ++ mkCard c "thousand" ; n = Pl} ; -lin pot3plus n m = { - s = \\c => n.s ! NCard ++ "thousand" ++ m.s ! c ; n = Pl} ; --} + pot01 = { + s = \\f => table { + NCard g => case g of {Neutr => "ett" ; _ => "en"} ; + _ => "första" + } ; + n = Sg + } ; + pot0 d = {s = \\f,g => d.s ! f ! g ; n = Pl} ; + pot110 = numPl (cardReg "tio") ; + pot111 = numPl (cardOrd "elva" "elfte") ; + pot1to19 d = numPl (d.s ! ton) ; + pot0as1 n = {s = n.s ! ental ; n = n.n} ; + pot1 d = numPl (d.s ! tiotal) ; + pot1plus d e = {s = \\g => d.s ! tiotal ! invNum ++ e.s ! ental ! g ; n = Pl} ; + pot1as2 n = n ; + pot2 d = + numPl (\\g => d.s ! ental ! invNum ++ cardOrd "hundra" "hundrade" ! g) ; + pot2plus d e = + {s = \\g => d.s ! ental ! invNum ++ "hundra" ++ e.s ! g ; n = Pl} ; + pot2as3 n = n ; + pot3 n = + numPl (\\g => n.s ! invNum ++ "tusen" ++ cardOrd "tusen" "tusende" ! g) ; + pot3plus n m = + {s = \\g => n.s ! invNum ++ "tusen" ++ m.s ! g ; n = Pl} ; } + diff --git a/lib/resource-1.0/swedish/ParadigmsSwe.gf b/lib/resource-1.0/swedish/ParadigmsSwe.gf index c4ec0d2d0..b0dca68aa 100644 --- a/lib/resource-1.0/swedish/ParadigmsSwe.gf +++ b/lib/resource-1.0/swedish/ParadigmsSwe.gf @@ -167,15 +167,6 @@ oper mk3ADeg : (galen,galet,galna : Str) -> ADeg ; mk2ADeg : (bred,brett : Str) -> ADeg ; --- If comparison is formed by "more, "most", as in general for --- long adjective, the following pattern is used: - - compoundADeg : A -> ADeg ; -- -/more/most ridiculous - --- From a given $ADeg$, it is possible to get back to $A$. - - adegA : ADeg -> A ; - --2 Adverbs diff --git a/lib/resource-1.0/swedish/StructuralSwe.gf b/lib/resource-1.0/swedish/StructuralSwe.gf index 95db1ceda..6138e3041 100644 --- a/lib/resource-1.0/swedish/StructuralSwe.gf +++ b/lib/resource-1.0/swedish/StructuralSwe.gf @@ -90,15 +90,13 @@ concrete StructuralSwe of Structural = CatSwe ** mkVerb6 "vilja" "vill" "vilj" "ville" "velat" "velad" ** {c2 = [] ; lock_VV = <>} ; we_Pron = mkNP "vi" "oss" "vår" "vårt" "våra" Plg P1 ; ----- whatPl_IP = intPronWhat plural ; ----- whatSg_IP = intPronWhat singular ; + whatSg_IP = {s = \\_ => "vad" ; gn = SgUtr} ; ---- infl + whatPl_IP = {s = \\_ => "vad" ; gn = Plg} ; ---- infl when_IAdv = ss "när" ; when_Subj = ss "när" ; where_IAdv = ss "var" ; whichPl_IDet = {s = \\_ => "vilka" ; n = Pl ; det = DIndef} ; whichSg_IDet = {s = genderForms "vilken" "vilket" ; n = Sg ; det = DIndef} ; ----- whichPl_IDet = vilkenDet ; ----- whichSg_IDet = mkDeterminerPl "vilka" IndefP ; whoSg_IP = {s = vem.s ; gn = SgUtr} ; whoPl_IP = {s = vem.s ; gn = Plg} ; why_IAdv = ss "varför" ;