diff --git a/src/danish/MakeStructuralDan.gf b/src/danish/MakeStructuralDan.gf new file mode 100644 index 000000000..9236533ef --- /dev/null +++ b/src/danish/MakeStructuralDan.gf @@ -0,0 +1,64 @@ +--# -path=.:../scandinavian:../common:../abstract + +resource MakeStructuralDan = open CatDan, + (P=ParadigmsDan), MorphoDan, Prelude in { + +oper + mkConj = overload { + mkConj : Str -> Conj + = \s -> lin Conj {s1 = [] ; s2 = s ; n = P.plural ; isDiscont = False} ; + mkConj : Str -> Str -> P.Number -> Conj + = \x,y,n -> lin Conj {s1 = x ; s2 = y ; n = n ; isDiscont = False} ; + mkConj : Str -> Str -> P.Number -> Bool -> Conj + = \x,y,n,d -> lin Conj {s1 = x ; s2 = y ; n = n ; isDiscont = d} ; + } ; + + mkSubj : Str -> Subj + = \x -> {s = x ; lock_Subj = <>} ; + + mkIQuant : Str -> Str -> Str -> DetSpecies -> IQuant = \vilken,vilket,vilka,d -> + {s = table (P.Number) + [table (P.Gender) [vilken;vilket] ; table (P.Gender) [vilka;vilka]] ; + det = d ; lock_IQuant = <>} ; + + mkQuant : Str -> Str -> Str -> Quant = \naagon,naagot,naagra -> + lin Quant {s,sp = table { + Sg => \\_,_ => table {Utr => naagon ; Neutr => naagot} ; + Pl => \\_,_,_ => naagra + } ; + det = DIndef + } ; + + mkDet = overload { + mkDet : Str -> Det + = \s -> lin Det {s,sp = \\_,_ => s ; n = P.singular ; det = DDef Indef} ; + mkDet : Str -> P.Number -> Det + = \s,n -> lin Det {s,sp = \\_,_ => s ; n = n ; det = DDef Indef} ; + mkDet : Str -> Str -> P.Number -> Det + = \ingen,inget,n -> lin Det {s,sp = \\_ => table NGender [ingen ; inget] ; n = n ; det = DDef Indef} ; + } ; + + mkDefDet : Str -> Str -> P.Number -> Det = ---- \s,t,n -> mkDet s t n ** {det = DDef Def} ; + \ingen,inget,n -> lin Det {s,sp = \\_ => table NGender [ingen ; inget] ; n = n ; det = DDef Def} ; + + dDefIndef : DetSpecies = DDef Indef ; + ---- other DetSpecies + + mkPredet = overload { + mkPredet : Str -> Str -> Str -> Predet = \a,b,c -> + lin Predet { + s = detForms a b c ; + p = [] ; + a = PNoAg + } ; + mkPredet : Str -> Str -> Str -> Number -> Predet = \a,b,p,n -> + lin Predet { + s = table {Utr => \\_ => a ; _ => \\_ => b} ; + p = p ; + a = PAg n ; + } + } ; + + mkNum : Str -> Num = \s -> lin Num {s = table {_ => s} ; isDet = True ; n = Pl} ; + +} diff --git a/src/danish/StructuralDan.gf b/src/danish/StructuralDan.gf index 7bbcae8e0..d03a3d87e 100644 --- a/src/danish/StructuralDan.gf +++ b/src/danish/StructuralDan.gf @@ -1,5 +1,5 @@ concrete StructuralDan of Structural = CatDan ** - open MorphoDan, ParadigmsDan, (X = ConstructX), IrregDan, Prelude in { + open MorphoDan, ParadigmsDan, (X = ConstructX), (M=MakeStructuralDan), IrregDan, Prelude in { flags optimize=all ; coding=utf8 ; @@ -121,6 +121,26 @@ concrete StructuralDan of Structural = CatDan ** youPol_Pron = MorphoDan.mkNP "De" "Dem" "Deres" "Deres" "Deres" Utr Sg P2 ; --- wrong in refl have_V2 = dirV2 have_V ; + not_Predet = {s = \\_,_ => "ikke" ; p = [] ; a = PNoAg} ; + +no_Quant = + {s,sp = table { + Sg => \\_,_ => genderForms "ingen" "intet" ; + Pl => \\_,_,_ => "ingen" + } ; + det = DIndef + } ; + + if_then_Conj = {s1 = "hvis" ; s2 = "så" ; n = singular ; isDiscont = False} ; ---- + nobody_NP = regNP "ingen" "ingens" Utr Sg ; + nothing_NP = regNP "intet" "intets" Neutr Sg ; + + at_least_AdN = ss "mindst" ; + at_most_AdN = ss "højst" ; + + except_Prep = ss "uden" ; + as_CAdv = X.mkCAdv "lige" "som" ; + -- Auxiliaries that are used repeatedly. oper