From 683a776f83b1c974aa3e2f823127c26543da9907 Mon Sep 17 00:00:00 2001 From: aarne Date: Tue, 2 Dec 2008 08:22:32 +0000 Subject: [PATCH] sibstantival det forms in scandinavian --- next-lib/src/danish/DiffDan.gf | 1 + next-lib/src/danish/StructuralDan.gf | 17 ++++++++--------- next-lib/src/norwegian/DiffNor.gf | 1 + next-lib/src/norwegian/StructuralNor.gf | 16 ++++++++-------- next-lib/src/scandinavian/CatScand.gf | 4 ++-- next-lib/src/scandinavian/DiffScand.gf | 1 + next-lib/src/scandinavian/NounScand.gf | 16 +++++++++++++--- next-lib/src/swedish/DiffSwe.gf | 1 + next-lib/src/swedish/StructuralSwe.gf | 23 ++++++++++++++--------- 9 files changed, 49 insertions(+), 31 deletions(-) diff --git a/next-lib/src/danish/DiffDan.gf b/next-lib/src/danish/DiffDan.gf index 2309efd3a..0973cedb1 100644 --- a/next-lib/src/danish/DiffDan.gf +++ b/next-lib/src/danish/DiffDan.gf @@ -41,6 +41,7 @@ instance DiffDan of DiffScand = open CommonScand, Prelude in { Utr => "en" ; Neutr => "et" } ; + detIndefPl = "nogle" ; verbHave = mkVerb "have" "har" "hav" "havde" "haft" "haven" "havet" "havne" ** diff --git a/next-lib/src/danish/StructuralDan.gf b/next-lib/src/danish/StructuralDan.gf index b7b3836e9..9ab2beb61 100644 --- a/next-lib/src/danish/StructuralDan.gf +++ b/next-lib/src/danish/StructuralDan.gf @@ -25,10 +25,10 @@ concrete StructuralDan of Structural = CatDan ** during_Prep = ss "under" ; either7or_DConj = sd2 "enten" "eller" ** {n = Sg} ; everybody_NP = regNP "alle" "alles" Plg ; - every_Det = {s = \\_,_ => "hver" ; n = Sg ; det = DDef Indef} ; + every_Det = {s = \\_,_ => "hver" ; sp = \\_,_ => "enhver" ; n = Sg ; det = DDef Indef} ; everything_NP = regNP "alt" "alts" SgNeutr ; everywhere_Adv = ss "overalt" ; - few_Det = {s = \\_,_ => "få" ; n = Pl ; det = DDef Indef} ; + few_Det = {s,sp = \\_,_ => "få" ; n = Pl ; det = DDef Indef} ; --- first_Ord = {s = "første" ; isDet = True} ; for_Prep = ss "for" ; from_Prep = ss "fra" ; @@ -45,16 +45,15 @@ concrete StructuralDan of Structural = CatDan ** in_Prep = ss "i" ; it_Pron = MorphoDan.regNP "det" "dets" SgNeutr ; less_CAdv = X.mkCAdv "mindre" conjThan ; - many_Det = {s = \\_,_ => "mange" ; n = Pl ; det = DDef Indef} ; + many_Det = {s,sp = \\_,_ => "mange" ; n = Pl ; det = DDef Indef} ; more_CAdv = X.mkCAdv "mer" conjThan ; most_Predet = {s = gennumForms ["den meste"] ["det meste"] ["de fleste"]} ; - much_Det = {s = \\_,_ => "meget" ; n = Pl ; det = DDef Indef} ; + much_Det = {s,sp = \\_,_ => "meget" ; n = Pl ; det = DDef Indef} ; must_VV = mkV "måtte" "må" "må" "måtte" "måttet" "mått" ** {c2 = mkComplement [] ; lock_VV = <>} ; no_Utt = ss ["nej"] ; on_Prep = ss "på" ; ---- one_Quant = {s = \\_ => genderForms ["en"] ["et"] ; n = Sg ; det = DIndef} ; --- ei only_Predet = {s = \\_ => "kun"} ; or_Conj = {s1 = [] ; s2 = "eller" ; n = Pl} ; otherwise_PConj = ss "anderledes" ; @@ -64,13 +63,13 @@ concrete StructuralDan of Structural = CatDan ** quite_Adv = ss "temmelig" ; she_Pron = MorphoDan.mkNP "hun" "hende" "hendes" "hendes" "hendes" SgUtr P3 ; so_AdA = ss "så" ; - someSg_Det = {s = \\_ => genderForms "nogen" "noget" ; n = Sg ; det = DIndef} ; - somePl_Det = {s = \\_,_ => "nogle" ; n = Pl ; det = DIndef} ; + someSg_Det = {s,sp = \\_ => genderForms "nogen" "noget" ; n = Sg ; det = DIndef} ; + somePl_Det = {s,sp = \\_,_ => "nogle" ; n = Pl ; det = DIndef} ; somebody_NP = regNP "nogen" "nogens" SgUtr ; something_NP = regNP "noget" "nogets" SgNeutr ; somewhere_Adv = ss ["et eller annet sted"] ; ---- ? that_Quant = - {s = table { + {s,sp = table { Sg => \\_,_ => genderForms ["den der"] ["det der"] ; Pl => \\_,_,_ => ["de der"] } ; @@ -82,7 +81,7 @@ concrete StructuralDan of Structural = CatDan ** therefore_PConj = ss "derfor" ; they_Pron = MorphoDan.mkNP "de" "dem" "deres" "deres" "deres" Plg P1 ; this_Quant = - {s = table { + {s,sp = table { Sg => \\_,_ => genderForms ["denne"] ["dette"] ; Pl => \\_,_,_ => ["disse"] } ; diff --git a/next-lib/src/norwegian/DiffNor.gf b/next-lib/src/norwegian/DiffNor.gf index 3723369f2..6cfdf6fa4 100644 --- a/next-lib/src/norwegian/DiffNor.gf +++ b/next-lib/src/norwegian/DiffNor.gf @@ -43,6 +43,7 @@ instance DiffNor of DiffScand = open CommonScand, Prelude in { Utr Fem => "ei" ; Neutr => "et" } ; + detIndefPl = "noen" ; verbHave = mkVerb "ha" "har" "ha" "hadde" "hatt" "haven" "havet" "havne" diff --git a/next-lib/src/norwegian/StructuralNor.gf b/next-lib/src/norwegian/StructuralNor.gf index b480ff1a1..c7ee5b237 100644 --- a/next-lib/src/norwegian/StructuralNor.gf +++ b/next-lib/src/norwegian/StructuralNor.gf @@ -25,10 +25,10 @@ concrete StructuralNor of Structural = CatNor ** during_Prep = ss "under" ; either7or_DConj = sd2 "enten" "eller" ** {n = Sg} ; everybody_NP = regNP "alle" "alles" Plg ; - every_Det = {s = \\_,_ => "hver" ; n = Sg ; det = DDef Indef} ; + every_Det = {s = \\_,_ => "hver" ; sp = \\_,_ =>"enhver" ; n = Sg ; det = DDef Indef} ; everything_NP = regNP "alt" "alts" SgNeutr ; everywhere_Adv = ss "overalt" ; - few_Det = {s = \\_,_ => "få" ; n = Pl ; det = DDef Indef} ; + few_Det = {s,sp = \\_,_ => "få" ; n = Pl ; det = DDef Indef} ; --- first_Ord = {s = "første" ; isDet = True} ; DEPREC for_Prep = ss "for" ; from_Prep = ss "fra" ; @@ -45,10 +45,10 @@ concrete StructuralNor of Structural = CatNor ** in_Prep = ss "i" ; it_Pron = MorphoNor.regNP "det" "dets" SgNeutr ; less_CAdv = X.mkCAdv "mindre" conjThan ; - many_Det = {s = \\_,_ => "mange" ; n = Pl ; det = DDef Indef} ; + many_Det = {s,sp = \\_,_ => "mange" ; n = Pl ; det = DDef Indef} ; more_CAdv = X.mkCAdv "mer" conjThan ; most_Predet = {s = gennumForms ["den meste"] ["det meste"] ["de fleste"]} ; - much_Det = {s = \\_,_ => "mye" ; n = Pl ; det = DDef Indef} ; + much_Det = {s,sp = \\_,_ => "mye" ; n = Pl ; det = DDef Indef} ; must_VV = mkV "måtte" "må" "må" "måtte" "måttet" "mått" ** {c2 = mkComplement [] ; lock_VV = <>} ; @@ -64,13 +64,13 @@ concrete StructuralNor of Structural = CatNor ** quite_Adv = ss "temmelig" ; she_Pron = MorphoNor.mkNP "hun" "henne" "hennes" "hennes" "hennes" SgUtr P3 ; so_AdA = ss "så" ; - someSg_Det = {s = \\_ => genderForms "noen" "noe" ; n = Sg ; det = DIndef} ; - somePl_Det = {s = \\_,_ => "noen" ; n = Pl ; det = DIndef} ; + someSg_Det = {s,sp = \\_ => genderForms "noen" "noe" ; n = Sg ; det = DIndef} ; + somePl_Det = {s,sp = \\_,_ => "noen" ; n = Pl ; det = DIndef} ; somebody_NP = regNP "noen" "noens" SgUtr ; something_NP = regNP "noe" "noes" SgNeutr ; somewhere_Adv = ss ["et eller annet sted"] ; ---- ? that_Quant = - {s = table { + {s,sp = table { Sg => \\_,_ => genderForms ["den der"] ["det der"] ; Pl => \\_,_,_ => ["de der"] } ; @@ -82,7 +82,7 @@ concrete StructuralNor of Structural = CatNor ** therefore_PConj = ss "derfor" ; they_Pron = MorphoNor.mkNP "de" "dem" "deres" "deres" "deres" Plg P1 ; this_Quant = - {s = table { + {s,sp = table { Sg => \\_,_ => genderForms ["denne"] ["dette"] ; Pl => \\_,_,_ => ["disse"] } ; diff --git a/next-lib/src/scandinavian/CatScand.gf b/next-lib/src/scandinavian/CatScand.gf index 3b55f755f..6b9b34b47 100644 --- a/next-lib/src/scandinavian/CatScand.gf +++ b/next-lib/src/scandinavian/CatScand.gf @@ -68,8 +68,8 @@ incomplete concrete CatScand of Cat = CN = {s : Number => DetSpecies => Case => Str ; g : Gender ; isMod : Bool} ; NP,Pron = {s : NPForm => Str ; a : Agr} ; - Det = {s : Bool => Gender => Str ; n : Number ; det : DetSpecies} ; - Quant = {s : Number => Bool => Bool => Gender => Str ; det : DetSpecies} ; + Det = {s,sp : Bool => Gender => Str ; n : Number ; det : DetSpecies} ; + Quant = {s,sp : Number => Bool => Bool => Gender => Str ; det : DetSpecies} ; Predet = {s : GenNum => Str} ; Num = {s : Gender => Str ; isDet : Bool ; n : Number} ; Card = {s : Gender => Str ; n : Number} ; diff --git a/next-lib/src/scandinavian/DiffScand.gf b/next-lib/src/scandinavian/DiffScand.gf index e288be677..7b1e6b319 100644 --- a/next-lib/src/scandinavian/DiffScand.gf +++ b/next-lib/src/scandinavian/DiffScand.gf @@ -34,6 +34,7 @@ interface DiffScand = open CommonScand, Prelude in { subjIf : Str ; artIndef : Gender => Str ; + detIndefPl : Str ; verbHave : Verb ; verbBe : Verb ; diff --git a/next-lib/src/scandinavian/NounScand.gf b/next-lib/src/scandinavian/NounScand.gf index 06a34be57..bbb1f3a0c 100644 --- a/next-lib/src/scandinavian/NounScand.gf +++ b/next-lib/src/scandinavian/NounScand.gf @@ -48,6 +48,8 @@ incomplete concrete NounScand of Noun = DetQuantOrd quant num ord = { s = \\b,g => quant.s ! num.n ! b ! (orB b num.isDet) ! g ++ num.s ! g ++ ord.s ; + sp = \\b,g => quant.s ! num.n ! b ! (orB b num.isDet) ! g ++ + num.s ! g ++ ord.s ; n = num.n ; det = quant.det } ; @@ -56,11 +58,14 @@ incomplete concrete NounScand of Noun = let md : Bool -> Bool = \b -> case quant.det of { DDef _ => orB b num.isDet ; + DIndef => num.isDet ; _ => False } in { s = \\b,g => quant.s ! num.n ! b ! md b ! g ++ num.s ! g ; + sp = \\b,g => quant.sp ! num.n ! b ! md b ! g ++ + num.s ! g ; n = num.n ; det = quant.det } ; @@ -70,12 +75,12 @@ incomplete concrete NounScand of Noun = g = Neutr ; ---- m = True ; ---- is this needed for other than Art? in { - s = \\c => det.s ! m ! g ; + s = \\c => det.sp ! m ! g ; a = agrP3 g det.n } ; PossPron p = { - s = \\n,_,_,g => p.s ! NPPoss (gennum g n) ; + s,sp = \\n,_,_,g => p.s ! NPPoss (gennum g n) ; det = DDef Indef } ; @@ -101,7 +106,8 @@ incomplete concrete NounScand of Noun = } ; DefArt = { - s = \\n,bm,bn,g => if_then_Str (orB bm bn) (artDef (gennum g n)) [] ; + s = \\n,bm,bn,g => if_then_Str (orB bm bn) (artDef (gennum g n)) [] ; + sp = \\n,bm,bn,g => artDef (gennum g n) ; det = DDef Def } ; @@ -110,6 +116,10 @@ incomplete concrete NounScand of Noun = Sg => \\_,bn,g => if_then_Str bn [] (artIndef ! g) ; Pl => \\_,bn,_ => [] } ; + sp = table { + Sg => \\_,bn,g => artIndef ! g ; + Pl => \\_,bn,_ => detIndefPl + } ; det = DIndef } ; diff --git a/next-lib/src/swedish/DiffSwe.gf b/next-lib/src/swedish/DiffSwe.gf index 97d9fa9cd..307df2ccb 100644 --- a/next-lib/src/swedish/DiffSwe.gf +++ b/next-lib/src/swedish/DiffSwe.gf @@ -52,6 +52,7 @@ instance DiffSwe of DiffScand = open CommonScand, Prelude in { Utr => "en" ; Neutr => "ett" } ; + detIndefPl = "några" ; verbHave = mkVerb "ha" "har" "ha" "hade" "haft" "havd" "havt" "havda" ** noPart ; diff --git a/next-lib/src/swedish/StructuralSwe.gf b/next-lib/src/swedish/StructuralSwe.gf index 21af94fa6..1ec38c245 100644 --- a/next-lib/src/swedish/StructuralSwe.gf +++ b/next-lib/src/swedish/StructuralSwe.gf @@ -25,10 +25,15 @@ concrete StructuralSwe of Structural = CatSwe ** during_Prep = ss "under" ; either7or_DConj = sd2 "antingen" "eller" ** {n = Sg} ; everybody_NP = regNP "alla" "allas" Plg ; - every_Det = {s = \\_,_ => "varje" ; n = Sg ; det = DIndef} ; + every_Det = { + s = \\_,_ => "varje" ; + sp = \\_,_ => "var och en" ; ---- + n = Sg ; + det = DIndef + } ; everything_NP = regNP "allting" "alltings" SgNeutr ; everywhere_Adv = ss "överallt" ; - few_Det = {s = \\_,_ => "få" ; n = Pl ; det = DDef Indef} ; + few_Det = {s,sp = \\_,_ => "få" ; n = Pl ; det = DDef Indef} ; --- first_Ord = {s = "första" ; isDet = True} ; for_Prep = ss "för" ; from_Prep = ss "från" ; @@ -44,10 +49,10 @@ concrete StructuralSwe of Structural = CatSwe ** in_Prep = ss "i" ; it_Pron = MorphoSwe.regNP "det" "dess" SgNeutr ; less_CAdv = X.mkCAdv "mindre" "än" ; - many_Det = {s = \\_,_ => "många" ; n = Pl ; det = DDef Indef} ; + many_Det = {s,sp = \\_,_ => "många" ; n = Pl ; det = DDef Indef} ; more_CAdv = X.mkCAdv "mer" "än" ; most_Predet = {s = gennumForms ["den mesta"] ["det mesta"] ["de flesta"]} ; - much_Det = {s = \\_,_ => "mycket" ; n = Pl ; det = DDef Indef} ; + much_Det = {s,sp = \\_,_ => "mycket" ; n = Pl ; det = DDef Indef} ; must_VV = mkV "få" "måste" "få" "fick" "måst" "måst" ** {c2 = mkComplement [] ; lock_VV = <>} ; @@ -63,13 +68,13 @@ concrete StructuralSwe of Structural = CatSwe ** quite_Adv = ss "ganska" ; she_Pron = MorphoSwe.mkNP "hon" "henne" "hennes" "hennes" "hennes" SgUtr P3 ; so_AdA = ss "så" ; - someSg_Det = {s = \\_ => genderForms "någon" "något" ; n = Sg ; det = DIndef} ; - somePl_Det = {s = \\_,_ => "några" ; n = Pl ; det = DIndef} ; + someSg_Det = {s,sp = \\_ => genderForms "någon" "något" ; n = Sg ; det = DIndef} ; + somePl_Det = {s,sp = \\_,_ => "några" ; n = Pl ; det = DIndef} ; somebody_NP = regNP "någon" "någons" SgUtr ; something_NP = regNP "något" "någots" SgNeutr ; somewhere_Adv = ss "någonstans" ; that_Quant = - {s = table { + {s,sp = table { Sg => \\_,_ => genderForms ["den där"] ["det där"] ; Pl => \\_,_,_ => ["de där"] } ; @@ -81,7 +86,7 @@ concrete StructuralSwe of Structural = CatSwe ** therefore_PConj = ss "därför" ; they_Pron = MorphoSwe.mkNP "de" "dem" "deras" "deras" "deras" Plg P1 ; this_Quant = - {s = table { + {s,sp = table { Sg => \\_,_ => genderForms ["den här"] ["det här"] ; Pl => \\_,_,_ => ["de här"] } ; @@ -126,7 +131,7 @@ concrete StructuralSwe of Structural = CatSwe ** lin not_Predet = {s = \\_ => "inte"} ; no_Quant = - {s = table { + {s,sp = table { Sg => \\_,_ => genderForms "ingen" "inget" ; Pl => \\_,_,_ => "inga" } ;