1
0
forked from GitHub/gf-rgl
This commit is contained in:
Inari Listenmaa
2018-02-08 16:26:55 +01:00
5 changed files with 110 additions and 1 deletions

View File

@@ -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} ;
}

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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