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/MorphoDan.gf b/src/danish/MorphoDan.gf index 74d262216..94b469d4b 100644 --- a/src/danish/MorphoDan.gf +++ b/src/danish/MorphoDan.gf @@ -66,6 +66,9 @@ oper aRask : Str -> Adj = \rask -> mkAdject rask rask (rask + "e") (rask + "ere") (rask + "est") ; + + aDejlig : Str -> Adj = \dejlig -> + mkAdject dejlig (dejlig+"t") (dejlig + "e") (dejlig + "ere") (dejlig + "st") ; -- verbs diff --git a/src/danish/ParadigmsDan.gf b/src/danish/ParadigmsDan.gf index d1fec5b2d..df5211657 100644 --- a/src/danish/ParadigmsDan.gf +++ b/src/danish/ParadigmsDan.gf @@ -368,6 +368,7 @@ oper regADeg a = case Predef.dp 2 a of { "sk" => aRask a ; + "ig" => aDejlig a ; _ => case last a of { "t" => aAbstrakt a ; _ => aRod a 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 diff --git a/src/polish/NounMorphoPol.gf b/src/polish/NounMorphoPol.gf index 029bbb95b..83f8b8a04 100644 --- a/src/polish/NounMorphoPol.gf +++ b/src/polish/NounMorphoPol.gf @@ -7862,6 +7862,27 @@ resource NounMorphoPol = ResPol ** open Prelude, (Predef=Predef) in { SF Pl Voc => x + "ludzie" }; +--created for sukienka and kurtka. Paula Pawlowski 6/2/2018 + oper mkNTable0670p : Str -> SubstForm => Str; --% + oper mkNTable0670p lexem = + let x = Predef.tk 2 lexem in + table { + SF Sg Nom => x + "ka"; + SF Sg Gen => x + "ki"; + SF Sg Dat => x + "ce"; + SF Sg Acc => x + "kę"; + SF Sg Instr => x + "ką"; + SF Sg Loc => x + "ce"; + SF Sg Voc => x + "ko"; + SF Pl Nom => x + "ki"; + SF Pl Gen => x + "ek"; + SF Pl Dat => x + "kom"; + SF Pl Acc => x + "ki"; + SF Pl Instr => x + "kami"; + SF Pl Loc => x + "kach"; + SF Pl Voc => x + "ki" + }; + oper mkNTable0671: Str -> SubstForm => Str; --% oper mkNTable0671 lexem = let x = Predef.tk 1 lexem in