1
0
forked from GitHub/gf-rgl

generalize DAP

This commit is contained in:
Krasimir Angelov
2018-06-26 18:09:11 +02:00
parent a730a3194b
commit 0df8c34e1d
14 changed files with 123 additions and 64 deletions

View File

@@ -22,15 +22,37 @@ resource MorphoBul = ResBul ** open
oper oper
--2 Determiners --2 Determiners
mkDeterminerSg = overload {
mkDeterminerSg : Str -> Str -> Str -> {s : Bool => AGender => Role => Str; nn : NNumber; spec : Species; p : Polarity} = \vseki,vsiaka,vsiako -> mkDeterminerSg : Str -> Str -> Str -> {s : Bool => AGender => Role => Str; nn : NNumber; spec : Species; p : Polarity} = \vseki,vsiaka,vsiako ->
{s = \\_,g,_ => table AGender [vseki;vseki;vsiaka;vsiako] ! g; nn = NNum Sg; spec = Indef; p = Pos} ; {s = \\_,g,_ => table AGender [vseki;vseki;vsiaka;vsiako] ! g; nn = NNum Sg; spec = Indef; p = Pos} ;
mkDeterminerSg : Str -> Str -> Str -> Str -> Str -> Str -> {s : Bool => AGender => Role => Str; nn : NNumber; spec : Species; p : Polarity} = \vseki,vsiaka,vsiako,vseki',vsiaka',vsiako' ->
{s = \\sp,g,_ => case sp of {
True => table AGender [vseki; vseki; vsiaka; vsiako ] ! g;
False => table AGender [vseki';vseki';vsiaka';vsiako'] ! g
};
nn = NNum Sg;
spec = Indef;
p = Pos
} ;
} ;
mkDeterminerPl = overload { mkDeterminerPl = overload {
mkDeterminerPl : Str -> {s : Bool => AGender => Role => Str ; nn : NNumber ; spec : Species; p : Polarity} = \vsicki -> mkDeterminerPl : Str -> {s : Bool => AGender => Role => Str ; nn : NNumber ; spec : Species; p : Polarity} = \vsicki ->
{s = \\_,_,_ => vsicki; nn = NNum Pl; spec = Indef; p = Pos} ; {s = \\_,_,_ => vsicki; nn = NNum Pl; spec = Indef; p = Pos} ;
mkDeterminerPl : Str -> Str -> Str -> Str -> {s : Bool => AGender => Role => Str ; nn : NNumber ; spec : Species; p : Polarity} = \i_dvamata,i_dvata,i_dvete,i_dvete_neut -> mkDeterminerPl : Str -> Str -> Str -> Str -> {s : Bool => AGender => Role => Str ; nn : NNumber ; spec : Species; p : Polarity} = \i_dvamata,i_dvata,i_dvete,i_dvete_neut ->
{s = \\_,g,_ => table AGender [i_dvamata;i_dvata;i_dvete;i_dvete_neut] ! g; nn = NNum Pl; spec = Indef; p = Pos} ; {s = \\_,g,_ => table AGender [i_dvamata;i_dvata;i_dvete;i_dvete_neut] ! g; nn = NNum Pl; spec = Indef; p = Pos} ;
mkDeterminerPl : Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> {s : Bool => AGender => Role => Str ; nn : NNumber ; spec : Species; p : Polarity} = \i_dvamata,i_dvata,i_dvete,i_dvete_neut,i_dvamata',i_dvata',i_dvete',i_dvete_neut' ->
{s = \\sp,g,_ => case sp of {
True => table AGender [i_dvamata; i_dvata; i_dvete; i_dvete_neut ] ! g;
False => table AGender [i_dvamata';i_dvata';i_dvete';i_dvete_neut'] ! g
};
nn = NNum Pl;
spec = Indef;
p = Pos
} ;
} ; } ;
mkQuant = overload {
mkQuant : Str -> Str -> Str -> Str -> {s : Bool => AForm => Str; nonEmpty : Bool; spec : Species; p : Polarity} = \tozi,tazi,towa,tezi -> mkQuant : Str -> Str -> Str -> Str -> {s : Bool => AForm => Str; nonEmpty : Bool; spec : Species; p : Polarity} = \tozi,tazi,towa,tezi ->
{ s = \\_ => table { { s = \\_ => table {
ASg Masc _ => tozi ; ASg Masc _ => tozi ;
@@ -44,6 +66,29 @@ oper
p = Pos p = Pos
} ; } ;
mkQuant : Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> {s : Bool => AForm => Str; nonEmpty : Bool; spec : Species; p : Polarity} = \tozi,tazi,towa,tezi,tozi',tazi',towa',tezi' ->
{ s = table {
True => table {
ASg Masc _ => tozi ;
ASgMascDefNom => tozi ;
ASg Fem _ => tazi ;
ASg Neut _ => towa ;
APl _ => tezi
} ;
False => table {
ASg Masc _ => tozi' ;
ASgMascDefNom => tozi' ;
ASg Fem _ => tazi' ;
ASg Neut _ => towa' ;
APl _ => tezi'
}
} ;
nonEmpty = True ;
spec = Indef ;
p = Pos
} ;
} ;
--2 Verbs --2 Verbs
mkVerb : (_,_,_,_,_,_,_,_,_,_:Str) -> VTable = mkVerb : (_,_,_,_,_,_,_,_,_,_:Str) -> VTable =

View File

@@ -236,9 +236,5 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in {
spec = dap.spec; spec = dap.spec;
p = dap.p p = dap.p
} ; } ;
DetDAP det = {s = \\sp,g,role => det.s ! sp ! g ! role; DetDAP det = det ;
nn = det.nn;
spec = det.spec;
p = det.p
} ;
} }

View File

@@ -70,13 +70,12 @@ concrete CatEng of Cat = CommonX - [Pol,SC] ** open ResEng, Prelude in {
-- sp Nom | Poss. pron. (subj.) | mine -- sp Nom | Poss. pron. (subj.) | mine
-- sp Gen | Poss. pron. (obj.) | mine's -- sp Gen | Poss. pron. (obj.) | mine's
Pron = {s : NPCase => Str ; sp : Case => Str ; a : Agr} ; Pron = {s : NPCase => Str ; sp : Case => Str ; a : Agr} ;
Det = {s : Str ; sp : NPCase => Str ; n : Number ; hasNum : Bool} ; DAP, Det = {s : Str ; sp : Gender => Bool => NPCase => Str ; n : Number ; hasNum : Bool} ;
Predet = {s : Str} ; Predet = {s : Str} ;
Ord = { s : Case => Str } ; Ord = { s : Case => Str } ;
Num = {s : Case => Str ; n : Number ; hasCard : Bool} ; Num = {s : Case => Str ; n : Number ; hasCard : Bool} ;
Card = {s : Case => Str ; n : Number} ; Card = {s : Case => Str ; n : Number} ;
Quant = {s : Bool => Number => Str ; sp : Bool => Number => NPCase => Str} ; Quant = {s : Bool => Number => Str ; sp : Gender => Bool => Number => NPCase => Str} ;
DAP = {s : Str ; n : Number} ;
-- Numeral -- Numeral

View File

@@ -26,7 +26,7 @@ concrete ConjunctionEng of Conjunction =
ConjCN co ns = conjunctDistrTable2 Number Case co ns ** {g = Neutr} ; --- gender? ConjCN co ns = conjunctDistrTable2 Number Case co ns ** {g = Neutr} ; --- gender?
ConjDet c xs = let cxs = (conjunctDistrSS c xs).s in {s = cxs ; sp = \\_ => cxs ++ "one" ; hasNum = False ; n = xs.n} ; ConjDet c xs = let cxs = (conjunctDistrSS c xs).s in {s = cxs ; sp = \\_,_,_ => cxs ++ "one" ; hasNum = False ; n = xs.n} ;
-- These fun's are generated from the list cat's. -- These fun's are generated from the list cat's.

View File

@@ -19159,7 +19159,7 @@ lin everlasting_N = mkN "everlasting" ;
lin everlastingness_N = mkN "everlastingness" ; lin everlastingness_N = mkN "everlastingness" ;
lin evermore_Adv = mkAdv "evermore"; lin evermore_Adv = mkAdv "evermore";
lin eversion_N = mkN "eversion" ; lin eversion_N = mkN "eversion" ;
lin every_Det = mkDeterminerSpec singular "every" "everyone" False ; lin every_Det = mkDeterminerSpec singular "every" "everyone" "everything" False ;
lin everybody_NP = mkNP "everybody" "everybody" "everybody's" singular P3 human; lin everybody_NP = mkNP "everybody" "everybody" "everybody's" singular P3 human;
lin everyday_A = compoundA (mkA "everyday"); lin everyday_A = compoundA (mkA "everyday");
lin everyman_N = mkN "everyman" ; lin everyman_N = mkN "everyman" ;

View File

@@ -10,7 +10,7 @@ concrete ExtendEng of Extend =
MkVPS2, ConjVPS2, ComplVPS2, MkVPI2, ConjVPI2, ComplVPI2, MkVPS2, ConjVPS2, ComplVPS2, MkVPI2, ConjVPI2, ComplVPI2,
Base_nr_RNP, Base_rn_RNP, Base_rr_RNP, ByVP, CompBareCN, Base_nr_RNP, Base_rn_RNP, Base_rr_RNP, ByVP, CompBareCN,
CompIQuant, CompQS, CompS, CompVP, ComplBareVS, ComplGenVV, ComplSlashPartLast, ComplVPSVV, CompoundAP, CompIQuant, CompQS, CompS, CompVP, ComplBareVS, ComplGenVV, ComplSlashPartLast, ComplVPSVV, CompoundAP,
CompoundN, ConjRNP, ConjVPS, ConsVPS, Cons_nr_RNP, Cons_rr_RNP, DetNPFem, EmbedPresPart, EmptyRelSlash, CompoundN, ConjRNP, ConjVPS, ConsVPS, Cons_nr_RNP, Cons_rr_RNP, DetNPMasc, DetNPFem, EmbedPresPart, EmptyRelSlash,
ExistsNP, ExistCN, ExistMassCN, ExistPluralCN, ExistsNP, ExistCN, ExistMassCN, ExistPluralCN,
FocusAP, FocusAdV, FocusAdv, FocusObj, GenIP, GenModIP, GenModNP, GenNP, GenRP, FocusAP, FocusAdV, FocusAdv, FocusObj, GenIP, GenModIP, GenModNP, GenNP, GenRP,
GerundAdv, GerundCN, GerundNP, IAdvAdv, ICompAP, InOrderToVP, MkVPS, NominalizeVPSlashNP, GerundAdv, GerundCN, GerundNP, IAdvAdv, ICompAP, InOrderToVP, MkVPS, NominalizeVPSlashNP,
@@ -30,7 +30,7 @@ concrete ExtendEng of Extend =
ParadigmsEng in { ParadigmsEng in {
lin lin
GenNP np = {s = \\_,_ => np.s ! npGen ; sp = \\_,_,_ => np.s ! npGen} ; GenNP np = {s = \\_,_ => np.s ! npGen ; sp = \\_,_,_,_ => np.s ! npGen} ;
GenIP ip = {s = \\_ => ip.s ! NCase Gen} ; GenIP ip = {s = \\_ => ip.s ! NCase Gen} ;
GenRP nu cn = { GenRP nu cn = {
s = \\c => "whose" ++ nu.s ! Nom ++ s = \\c => "whose" ++ nu.s ! Nom ++
@@ -59,12 +59,12 @@ concrete ExtendEng of Extend =
} ; } ;
DetNPMasc det = { DetNPMasc det = {
s = det.sp ; s = det.sp ! Masc ! False ;
a = agrgP3 det.n Masc a = agrgP3 det.n Masc
} ; } ;
DetNPFem det = { DetNPFem det = {
s = det.sp ; s = det.sp ! Fem ! False ;
a = agrgP3 det.n Fem a = agrgP3 det.n Fem
} ; } ;

View File

@@ -2,7 +2,7 @@ concrete ExtraEng of ExtraEngAbs = CatEng **
open ResEng, Coordination, Prelude, MorphoEng, ParadigmsEng in { open ResEng, Coordination, Prelude, MorphoEng, ParadigmsEng in {
lin lin
GenNP np = {s = \\_,_ => np.s ! npGen ; sp = \\_,_,_ => np.s ! npGen} ; GenNP np = {s = \\_,_ => np.s ! npGen ; sp = \\_,_,_,_ => np.s ! npGen} ;
GenIP ip = {s = \\_ => ip.s ! NCase Gen} ; GenIP ip = {s = \\_ => ip.s ! NCase Gen} ;
GenRP nu cn = { GenRP nu cn = {
s = \\c => "whose" ++ nu.s ! Nom ++ s = \\c => "whose" ++ nu.s ! Nom ++

View File

@@ -17,12 +17,12 @@ resource MorphoEng = open Prelude, (Predef=Predef), ResEng in {
oper oper
mkDeterminer : Number -> Str -> mkDeterminer : Number -> Str ->
{s : Str ; sp : NPCase => Str; n : Number ; hasNum : Bool} = \n,s -> mkDeterminerSpec n s s False ; --- was True!? {s : Str ; sp : Gender => Bool => NPCase => Str; n : Number ; hasNum : Bool} = \n,s -> mkDeterminerSpec n s s s False ; --- was True!?
mkDeterminerSpec : Number -> Str -> Str -> Bool -> mkDeterminerSpec : Number -> Str -> Str -> Str -> Bool ->
{s : Str ; sp : NPCase => Str; n : Number ; hasNum : Bool} = \n,s,sp,hasNum -> {s : Str ; sp : Gender => Bool => NPCase => Str; n : Number ; hasNum : Bool} = \n,s,sp1,sp2,hasNum ->
{s = s; {s = s;
sp = \\c => regGenitiveS sp ! npcase2case c ; sp = \\g,hasAdj,c => regGenitiveS (case g of {Masc=>sp1; Fem=>sp1; Neutr=>sp2}) ! npcase2case c ;
n = n ; n = n ;
hasNum = hasNum ; --- doesn't matter when s = sp hasNum = hasNum ; --- doesn't matter when s = sp
} ; } ;

View File

@@ -38,8 +38,8 @@ concrete NounEng of Noun = CatEng ** open MorphoEng, ResEng, Prelude in {
DetQuant quant num = { DetQuant quant num = {
s = quant.s ! num.hasCard ! num.n ++ num.s ! Nom; s = quant.s ! num.hasCard ! num.n ++ num.s ! Nom;
sp = \\c => case num.hasCard of { sp = \\g,hasAdj,c => case num.hasCard of {
False => quant.sp ! num.hasCard ! num.n ! c ++ num.s ! Nom ; False => quant.sp ! g ! (orB hasAdj num.hasCard) ! num.n ! c ++ num.s ! Nom ;
True => quant.s ! num.hasCard ! num.n ++ num.s ! npcase2case c True => quant.s ! num.hasCard ! num.n ++ num.s ! npcase2case c
} ; } ;
n = num.n ; n = num.n ;
@@ -48,25 +48,27 @@ concrete NounEng of Noun = CatEng ** open MorphoEng, ResEng, Prelude in {
DetQuantOrd quant num ord = { DetQuantOrd quant num ord = {
s = quant.s ! num.hasCard ! num.n ++ num.s ! Nom ++ ord.s ! Nom; s = quant.s ! num.hasCard ! num.n ++ num.s ! Nom ++ ord.s ! Nom;
sp = \\c => quant.s ! num.hasCard ! num.n ++ num.s ! Nom ++ ord.s ! npcase2case c ; sp = \\g,_,c => quant.s ! num.hasCard ! num.n ++ num.s ! Nom ++ ord.s ! npcase2case c ;
n = num.n ; n = num.n ;
hasNum = True hasNum = True
} ; } ;
DetNP det = { DetNP det = {
-- s = case det.hasNum of {True => \\_ => det.s ; _ => \\c => det.sp ! c} ; -- s = case det.hasNum of {True => \\_ => det.s ; _ => \\c => det.sp ! c} ;
s = det.sp ; s = det.sp ! Neutr ! False ;
a = agrP3 det.n a = agrP3 det.n
} ; } ;
PossPron p = { PossPron p = {
s = \\_,_ => p.s ! NCase Gen ; s = \\_,_ => p.s ! NCase Gen ;
sp = \\_,_,c => p.sp ! npcase2case c sp = \\_,hasAdj,_,c => case hasAdj of {
True => p.s ! NCase Gen ;
False => p.sp ! npcase2case c
}
} ; } ;
NumSg = {s = \\c => []; n = Sg ; hasCard = False} ; NumSg = {s = \\c => []; n = Sg ; hasCard = False} ;
NumPl = {s = \\c => []; n = Pl ; hasCard = False} ; NumPl = {s = \\c => []; n = Pl ; hasCard = False} ;
---b NoOrd = {s = []} ;
NumCard n = n ** {hasCard = True} ; NumCard n = n ** {hasCard = True} ;
@@ -84,8 +86,8 @@ concrete NounEng of Noun = CatEng ** open MorphoEng, ResEng, Prelude in {
DefArt = { DefArt = {
s = \\hasCard,n => artDef ; s = \\hasCard,n => artDef ;
sp = \\hasCard,n => case <n,hasCard> of { sp = \\g,hasCard,n => case <n,hasCard> of {
<Sg,False> => table { NCase Gen => "its"; _ => "it" } ; <Sg,False> => table { NCase Gen => table Gender ["its"; "his"; "her"] ! g; _ => table Gender ["it"; "he"; "she"] ! g } ;
<Pl,False> => table { NCase Nom => "they"; NPAcc => "them"; _ => "theirs" } ; <Pl,False> => table { NCase Nom => "they"; NPAcc => "them"; _ => "theirs" } ;
_ => \\c => artDef _ => \\c => artDef
} }
@@ -96,7 +98,7 @@ concrete NounEng of Noun = CatEng ** open MorphoEng, ResEng, Prelude in {
<Sg,False> => artIndef ; <Sg,False> => artIndef ;
_ => [] _ => []
} ; } ;
sp = \\hasCard,n => case <n,hasCard> of { sp = \\g,hasCard,n => case <n,hasCard> of {
<Sg,False> => table {NCase Gen => "one's"; _ => "one" }; <Sg,False> => table {NCase Gen => "one's"; _ => "one" };
<Pl,False> => table {NCase Gen => "ones'"; _ => "ones" } ; <Pl,False> => table {NCase Gen => "ones'"; _ => "ones" } ;
_ => \\c => [] _ => \\c => []
@@ -150,15 +152,20 @@ concrete NounEng of Noun = CatEng ** open MorphoEng, ResEng, Prelude in {
PartNP cn np = {s = \\n,c => cn.s ! n ! c ++ "of" ++ np.s ! NPAcc ; g = cn.g} ; PartNP cn np = {s = \\n,c => cn.s ! n ! c ++ "of" ++ np.s ! NPAcc ; g = cn.g} ;
CountNP det np = { CountNP det np = {
s = \\c => det.sp ! c ++ "of" ++ np.s ! NPAcc ; s = \\c => det.sp ! Neutr ! False ! c ++ "of" ++ np.s ! NPAcc ;
a = agrP3 det.n a = agrP3 det.n
} ; } ;
AdjDAP det ap = { AdjDAP dap ap = {
s = det.s ++ ap.s ! agrgP3 det.n Masc ; --- post-ap's ? "this larger than life (movie)" s = dap.s ++ ap.s ! agrgP3 dap.n Masc ; --- post-ap's ? "this larger than life (movie)"
n = det.n ; sp = \\g,_,c => case c of {
NCase Gen => dap.sp ! g ! True ! NCase Nom ++ ap.s ! agrgP3 dap.n g ++ BIND ++ "'s" ;
c => dap.sp ! g ! True ! c ++ ap.s ! agrgP3 dap.n g
} ;
n = dap.n ;
hasNum = dap.hasNum
} ; } ;
DetDAP d = d ; -- forgetting sp and hasNumber DetDAP d = d ;
} }

View File

@@ -434,15 +434,16 @@ mkInterj : Str -> Interj
nounPN n = lin PN {s = n.s ! singular ; g = n.g} ; nounPN n = lin PN {s = n.s ! singular ; g = n.g} ;
mkQuant = overload { mkQuant = overload {
mkQuant : (this, these : Str) -> Quant = \sg,pl -> mkQuantifier sg pl sg pl; mkQuant : (this, these : Str) -> Quant = \sg,pl -> mkQuantifier sg pl sg pl sg pl;
mkQuant : (no_sg, no_pl, none_sg, non_pl : Str) -> Quant = mkQuantifier; mkQuant : (no_sg, no_pl, none_sg, non_pl : Str) -> Quant = \sg,pl,sg',pl' -> mkQuantifier sg pl sg' pl' sg' pl';
} ; } ;
mkQuantifier : Str -> Str -> Str -> Str -> Quant = mkQuantifier : Str -> Str -> Str -> Str -> Str -> Str -> Quant =
\sg,pl,sg',pl' -> lin Quant { \sg,pl,sg1',pl1',sg2',pl2' -> lin Quant {
s = \\_ => table { Sg => sg ; Pl => pl } ; s = \\_ => table { Sg => sg ; Pl => pl } ;
sp = \\_ => table { sp = \\g,_ => table {
Sg => \\c => regGenitiveS sg' ! npcase2case c ; Pl => \\c => regGenitiveS pl' ! npcase2case c} Sg => \\c => regGenitiveS (case g of {Masc=>sg1'; Fem=>sg1'; Neutr=>sg2'}) ! npcase2case c ;
Pl => \\c => regGenitiveS (case g of {Masc=>pl1'; Fem=>pl1'; Neutr=>pl2'}) ! npcase2case c}
} ; } ;
mkOrd : Str -> Ord = \x -> lin Ord { s = regGenitiveS x}; mkOrd : Str -> Ord = \x -> lin Ord { s = regGenitiveS x};

View File

@@ -54,7 +54,7 @@ concrete StructuralEng of Structural = CatEng **
during_Prep = mkPrep "during" ; during_Prep = mkPrep "during" ;
either7or_DConj = mkConj "either" "or" singular ; either7or_DConj = mkConj "either" "or" singular ;
everybody_NP = regNP "everybody" singular ; everybody_NP = regNP "everybody" singular ;
every_Det = mkDeterminerSpec singular "every" "everyone" False ; every_Det = mkDeterminerSpec singular "every" "everyone" "everything" False ;
everything_NP = regNP "everything" singular ; everything_NP = regNP "everything" singular ;
everywhere_Adv = mkAdv "everywhere" ; everywhere_Adv = mkAdv "everywhere" ;
few_Det = mkDeterminer plural "few" ; few_Det = mkDeterminer plural "few" ;

View File

@@ -75,13 +75,12 @@ incomplete concrete CatScand of Cat =
CN = {s : Number => DetSpecies => Case => Str ; g : NGender ; isMod : Bool} ; CN = {s : Number => DetSpecies => Case => Str ; g : NGender ; isMod : Bool} ;
NP = {s : NPForm => Str ; a : Agr ; isPron : Bool} ; NP = {s : NPForm => Str ; a : Agr ; isPron : Bool} ;
Pron = {s : NPForm => Str ; a : Agr} ; Pron = {s : NPForm => Str ; a : Agr} ;
Det = {s,sp : Bool => NGender => Str ; n : Number ; det : DetSpecies} ; Det,DAP = {s,sp : Bool => NGender => Str ; n : Number ; det : DetSpecies} ;
Quant = {s,sp : Number => Bool => Bool => NGender => Str ; det : DetSpecies} ; Quant = {s,sp : Number => Bool => Bool => NGender => Str ; det : DetSpecies} ;
Predet = {s : Gender => Number => Str ; p : Str ; a : PredetAgr} ; Predet = {s : Gender => Number => Str ; p : Str ; a : PredetAgr} ;
Num = {s : NGender => Str ; isDet : Bool ; n : Number} ; Num = {s : NGender => Str ; isDet : Bool ; n : Number} ;
Card = {s : NGender => Str ; n : Number} ; Card = {s : NGender => Str ; n : Number} ;
Ord = {s : Str} ; Ord = {s : Str} ;
DAP = {s : Bool => NGender => Str ; n : Number ; det : DetSpecies} ;
-- Numeral -- Numeral

View File

@@ -254,11 +254,11 @@ incomplete concrete NounScand of Noun =
} ; } ;
AdjDAP det ap = { AdjDAP det ap = {
s = \\b,g => det.s ! b ! g ++ ap.s ! agrAdj (gennum (ngen2gen g) det.n) det.det ; s,sp = \\b,g => det.s ! b ! g ++ ap.s ! agrAdj (gennum (ngen2gen g) det.n) det.det ;
n = det.n ; n = det.n ;
det= det.det ; det= det.det ;
} ; } ;
DetDAP d = d ; -- forgetting sp DetDAP d = d ;
} }

View File

@@ -29,6 +29,18 @@ oper
det = DIndef det = DIndef
} ; } ;
mkQuantSpec : Str -> Str -> Str -> Str -> Str -> Str -> Quant = \naagon,naagot,naagra,naagon',naagot',naagra' ->
lin Quant {s = table {
Sg => \\_,_ => table {Utr => naagon ; Neutr => naagot} ;
Pl => \\_,_,_ => naagra
} ;
sp= table {
Sg => \\_,_ => table {Utr => naagon' ; Neutr => naagot'} ;
Pl => \\_,_,_ => naagra'
} ;
det = DIndef
} ;
mkDet = overload { mkDet = overload {
mkDet : Str -> Det mkDet : Str -> Det
= \s -> lin Det {s,sp = \\_,_ => s ; n = P.singular ; det = DDef Indef} ; = \s -> lin Det {s,sp = \\_,_ => s ; n = P.singular ; det = DDef Indef} ;