mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-06-28 20:36:29 -06:00
(Est) Automatic whitespace removal
in its own commit,rather than have whitespace changes in content commits
This commit is contained in:
+118
-118
@@ -15,11 +15,11 @@ resource ResEst = ParamX ** open Prelude in {
|
||||
-- This is the $Case$ as needed for both nouns and $NP$s.
|
||||
|
||||
param
|
||||
Case = Nom | Gen | Part
|
||||
| Illat | Iness | Elat | Allat | Adess | Ablat
|
||||
Case = Nom | Gen | Part
|
||||
| Illat | Iness | Elat | Allat | Adess | Ablat
|
||||
| Transl | Ess | Termin | Abess | Comit;
|
||||
|
||||
NForm = NCase Number Case ;
|
||||
NForm = NCase Number Case ;
|
||||
|
||||
|
||||
-- Agreement of $NP$ has number*person and the polite second ("te olette valmis").
|
||||
@@ -56,13 +56,13 @@ oper
|
||||
|
||||
--2 Noun phrases
|
||||
--
|
||||
-- Two forms of *virtual accusative* are needed for nouns in singular,
|
||||
-- the nominative and the genitive one ("loen raamatu"/"loe raamat").
|
||||
-- For nouns in plural, only a nominative accusative exists in positive clauses.
|
||||
-- Two forms of *virtual accusative* are needed for nouns in singular,
|
||||
-- the nominative and the genitive one ("loen raamatu"/"loe raamat").
|
||||
-- For nouns in plural, only a nominative accusative exists in positive clauses.
|
||||
-- Pronouns use the partitive as their accusative form ("mind", "sind"), in both
|
||||
-- positive and negative, indicative and imperative clauses.
|
||||
|
||||
param
|
||||
param
|
||||
NPForm = NPCase Case | NPAcc ;
|
||||
|
||||
oper
|
||||
@@ -80,14 +80,14 @@ oper
|
||||
-- A special form is needed for the negated plural imperative.
|
||||
|
||||
param
|
||||
VForm =
|
||||
VForm =
|
||||
Inf InfForm
|
||||
| Presn Number Person
|
||||
| Impf Number Person
|
||||
| Condit Number Person
|
||||
| ConditPass --loetagu
|
||||
| Imper Number
|
||||
| ImperP3
|
||||
| ImperP3
|
||||
| ImperP1Pl
|
||||
| ImperPass
|
||||
| PassPresn Bool
|
||||
@@ -98,11 +98,11 @@ param
|
||||
;
|
||||
|
||||
Voice = Act | Pass ;
|
||||
|
||||
|
||||
InfForm =
|
||||
InfDa -- lugeda
|
||||
| InfDes -- lugedes
|
||||
| InfMa -- lugema
|
||||
| InfDes -- lugedes
|
||||
| InfMa -- lugema
|
||||
| InfMas -- lugemas
|
||||
| InfMast -- lugemast
|
||||
| InfMata -- lugemata
|
||||
@@ -112,7 +112,7 @@ param
|
||||
SType = SDecl | SQuest | SInv ;
|
||||
|
||||
--2 For $Relative$
|
||||
|
||||
|
||||
RAgr = RNoAg | RAg Agr ;
|
||||
|
||||
--2 For $Numeral$
|
||||
@@ -122,14 +122,14 @@ param
|
||||
--2 Transformations between parameter types
|
||||
|
||||
oper
|
||||
agrP3 : Number -> Agr = \n ->
|
||||
agrP3 : Number -> Agr = \n ->
|
||||
Ag n P3 ;
|
||||
|
||||
conjAgr : Agr -> Agr -> Agr = \a,b -> case <a,b> of {
|
||||
<Ag n p, Ag m q> => Ag (conjNumber n m) (conjPerson p q) ;
|
||||
<Ag n p, AgPol> => Ag Pl (conjPerson p P2) ;
|
||||
<AgPol, Ag n p> => Ag Pl (conjPerson p P2) ;
|
||||
_ => b
|
||||
_ => b
|
||||
} ;
|
||||
|
||||
---
|
||||
@@ -178,33 +178,33 @@ param
|
||||
|
||||
param
|
||||
VIForm =
|
||||
VIFin Tense
|
||||
VIFin Tense
|
||||
| VIInf InfForm
|
||||
| VIPass Tense
|
||||
| VIPresPart
|
||||
| VIImper
|
||||
;
|
||||
| VIPresPart
|
||||
| VIImper
|
||||
;
|
||||
|
||||
oper
|
||||
VP : Type = {
|
||||
s : VIForm => Anteriority => Polarity => Agr => {fin, inf : Str} ;
|
||||
s : VIForm => Anteriority => Polarity => Agr => {fin, inf : Str} ;
|
||||
s2 : Bool => Polarity => Agr => Str ; -- raamat/raamatu/raamatut
|
||||
adv : Str ;
|
||||
p : Str ; --uninflecting component in multi-word verbs
|
||||
ext : Str ;
|
||||
sc : NPForm ;
|
||||
} ;
|
||||
|
||||
|
||||
predV : (Verb ** {sc : NPForm}) -> VP = \verb -> {
|
||||
s = \\vi,ant,b,agr0 =>
|
||||
s = \\vi,ant,b,agr0 =>
|
||||
let
|
||||
agr = verbAgr agr0 ;
|
||||
verbs = verb.s ;
|
||||
part : Str = case vi of {
|
||||
VIPass _ => verbs ! (PastPart Pass) ;
|
||||
VIPass _ => verbs ! (PastPart Pass) ;
|
||||
_ => verbs ! (PastPart Act)
|
||||
} ;
|
||||
|
||||
} ;
|
||||
|
||||
einegole : Str * Str * Str = case <vi,agr.n> of {
|
||||
<VIFin Pres> => <"ei", verbs ! Imper Sg, "ole"> ;
|
||||
<VIFin Fut> => <"ei", verbs ! Imper Sg, "ole"> ;
|
||||
@@ -217,23 +217,23 @@ oper
|
||||
<VIPass Cond> => <"ei", verbs ! ConditPass, "oleks"> ; --# notpresent
|
||||
<VIPass Past> => <"ei", verbs ! PassImpf False, "olnud"> ; --# notpresent
|
||||
<VIPresPart> => <"ei", verbs ! PresPart Act, "olev"> ; --# notpresent
|
||||
<VIInf i> => <"ei", verbs ! Inf i, verbOlema.s ! Inf i>
|
||||
<VIInf i> => <"ei", verbs ! Inf i, verbOlema.s ! Inf i>
|
||||
|
||||
} ;
|
||||
|
||||
|
||||
ei : Str = einegole.p1 ;
|
||||
neg : Str = einegole.p2 ;
|
||||
ole : Str = einegole.p3 ;
|
||||
|
||||
|
||||
olema : VForm => Str = verbOlema.s ;
|
||||
|
||||
|
||||
vf : Str -> Str -> {fin, inf : Str} = \x,y -> {fin = x ; inf = y} ;
|
||||
|
||||
|
||||
mkvf : VForm -> {fin, inf : Str} = \p -> case <ant,b> of {
|
||||
<Simul,Pos> => vf (verbs ! p) [] ;
|
||||
<Anter,Pos> => vf (olema ! p) part ;
|
||||
<Anter,Pos> => vf (olema ! p) part ;
|
||||
<Simul,Neg> => vf (ei ++ neg) [] ;
|
||||
<Anter,Neg> => vf (ei ++ ole) part
|
||||
<Anter,Neg> => vf (ei ++ ole) part
|
||||
} ;
|
||||
|
||||
passPol = case b of {Pos => True ; Neg => False} ;
|
||||
@@ -256,19 +256,19 @@ oper
|
||||
adv = [] ;
|
||||
ext = [] ; --relative clause
|
||||
p = verb.p ; --particle verbs
|
||||
sc = verb.sc
|
||||
sc = verb.sc
|
||||
} ;
|
||||
|
||||
insertObj : (Bool => Polarity => Agr => Str) -> VP -> VP = \obj,vp ->
|
||||
insertObj : (Bool => Polarity => Agr => Str) -> VP -> VP = \obj,vp ->
|
||||
vp ** { s2 = \\fin,b,a => vp.s2 ! fin ! b ! a ++ obj ! fin ! b ! a } ;
|
||||
|
||||
insertObjPre : (Bool => Polarity => Agr => Str) -> VP -> VP = \obj,vp ->
|
||||
insertObjPre : (Bool => Polarity => Agr => Str) -> VP -> VP = \obj,vp ->
|
||||
vp ** { s2 = \\fin,b,a => obj ! fin ! b ! a ++ vp.s2 ! fin ! b ! a } ;
|
||||
|
||||
insertAdv : Str -> VP -> VP = \adv,vp ->
|
||||
insertAdv : Str -> VP -> VP = \adv,vp ->
|
||||
vp ** { adv = vp.adv ++ adv } ;
|
||||
|
||||
insertExtrapos : Str -> VP -> VP = \obj,vp ->
|
||||
insertExtrapos : Str -> VP -> VP = \obj,vp ->
|
||||
vp ** { ext = vp.ext ++ obj } ;
|
||||
|
||||
-- For $Sentence$.
|
||||
@@ -286,12 +286,12 @@ oper
|
||||
-- declarative sentence with the yes/no-queryword "kas".
|
||||
-- SQuest: "kas" + SDecl
|
||||
-- It would be also correct to use the Finnish structure, just without the ko-particle.
|
||||
-- Inari: added a third SType, SInv.
|
||||
-- Inari: added a third SType, SInv.
|
||||
-- Not sure if SInv is needed, but keeping it for possible future use.
|
||||
-- There's need for an inverted word order with auxiliary verbs; infVP handles that. ComplVV calls infVP, which inverts the word order for the complement VP, and puts it into the resulting VP's `compl' field.
|
||||
-- SInv made by mkClause would be for cases where you just need to construct an inverted word order, and then call it from some other place; application grammar (TODO: api oper for SType) or ExtraEst.
|
||||
mkClause : (Polarity -> Str) -> Agr -> VP -> Clause = \sub,agr,vp ->
|
||||
{ s = \\t,a,b =>
|
||||
mkClause : (Polarity -> Str) -> Agr -> VP -> Clause = \sub,agr,vp ->
|
||||
{ s = \\t,a,b =>
|
||||
let
|
||||
c = (mkClausePlus sub agr vp).s ! t ! a ! b ;
|
||||
-- saan sinust aru 0
|
||||
@@ -300,51 +300,51 @@ oper
|
||||
-- [sind näha] 0 tahtnud
|
||||
-- täna olen ma sinust aru saanud
|
||||
invCl = c.adv ++ c.fin ++ c.subj ++ c.compl ++ c.p ++ c.inf ++ c.ext
|
||||
in
|
||||
in
|
||||
table {
|
||||
SDecl => declCl ;
|
||||
SQuest => "kas" ++ declCl ;
|
||||
SInv => invCl
|
||||
SInv => invCl
|
||||
}
|
||||
} ;
|
||||
|
||||
existClause : (Polarity -> Str) -> Agr -> VP -> Clause = \sub,agr,vp ->
|
||||
{ s = \\t,a,b =>
|
||||
existClause : (Polarity -> Str) -> Agr -> VP -> Clause = \sub,agr,vp ->
|
||||
{ s = \\t,a,b =>
|
||||
let
|
||||
c = (mkClausePlus sub agr vp).s ! t ! a ! b ;
|
||||
-- (mis) on olnud olemas (lammas)
|
||||
declCl = c.subj ++ c.fin ++ c.inf ++ c.compl ;
|
||||
in
|
||||
in
|
||||
table {
|
||||
SQuest => "kas" ++ declCl ;
|
||||
_ => declCl
|
||||
_ => declCl
|
||||
}
|
||||
} ;
|
||||
|
||||
mkClausePlus : (Polarity -> Str) -> Agr -> VP -> ClausePlus =
|
||||
\sub,agr,vp -> {
|
||||
s = \\t,a,b =>
|
||||
let
|
||||
s = \\t,a,b =>
|
||||
let
|
||||
agrfin = case vp.sc of {
|
||||
NPCase Nom => <agr,True> ;
|
||||
_ => <agrP3 Sg,False> -- minule meeldib, minul on
|
||||
} ;
|
||||
verb = vp.s ! VIFin t ! a ! b ! agrfin.p1 ;
|
||||
in {subj = sub b ;
|
||||
fin = verb.fin ;
|
||||
inf = verb.inf ;
|
||||
in {subj = sub b ;
|
||||
fin = verb.fin ;
|
||||
inf = verb.inf ;
|
||||
compl = vp.s2 ! agrfin.p2 ! b ! agr ;
|
||||
p = vp.p ;
|
||||
adv = vp.adv ;
|
||||
ext = vp.ext ;
|
||||
adv = vp.adv ;
|
||||
ext = vp.ext ;
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
insertKinClausePlus : Predef.Ints 1 -> ClausePlus -> ClausePlus = \p,cl -> {
|
||||
insertKinClausePlus : Predef.Ints 1 -> ClausePlus -> ClausePlus = \p,cl -> {
|
||||
s = \\t,a,b =>
|
||||
let
|
||||
c = cl.s ! t ! a ! b
|
||||
let
|
||||
c = cl.s ! t ! a ! b
|
||||
in
|
||||
case p of {
|
||||
0 => {subj = c.subj ++ gi ; fin = c.fin ; inf = c.inf ; -- Jussikin nukkuu
|
||||
@@ -354,37 +354,37 @@ oper
|
||||
}
|
||||
} ;
|
||||
|
||||
insertObjClausePlus : Predef.Ints 1 -> Bool -> (Polarity => Str) -> ClausePlus -> ClausePlus =
|
||||
\p,ifKin,obj,cl -> {
|
||||
insertObjClausePlus : Predef.Ints 1 -> Bool -> (Polarity => Str) -> ClausePlus -> ClausePlus =
|
||||
\p,ifKin,obj,cl -> {
|
||||
s = \\t,a,b =>
|
||||
let
|
||||
let
|
||||
c = cl.s ! t ! a ! b ;
|
||||
co = obj ! b ++ if_then_Str ifKin (kin b) [] ;
|
||||
in case p of {
|
||||
0 => {subj = c.subj ; fin = c.fin ; inf = c.inf ;
|
||||
0 => {subj = c.subj ; fin = c.fin ; inf = c.inf ;
|
||||
compl = co ; p = c.p ; adv = c.compl ++ c.adv ; ext = c.ext ; h = c.h} ; -- Jussi juo maitoakin
|
||||
1 => {subj = c.subj ; fin = c.fin ; inf = c.inf ;
|
||||
1 => {subj = c.subj ; fin = c.fin ; inf = c.inf ;
|
||||
compl = c.compl ; p = c.p ; adv = co ; ext = c.adv ++ c.ext ; h = c.h} -- Jussi nukkuu nytkin
|
||||
}
|
||||
} ;
|
||||
|
||||
kin : Polarity -> Str =
|
||||
kin : Polarity -> Str =
|
||||
\p -> case p of {Pos => "gi" ; Neg => "gi"} ;
|
||||
|
||||
--allomorph "ki", depends only on phonetic rules "üks+ki", "ühe+gi"
|
||||
|
||||
--allomorph "ki", depends only on phonetic rules "üks+ki", "ühe+gi"
|
||||
--waiting for post construction in GF :P
|
||||
gi : Str = "gi" ;
|
||||
|
||||
-- This is used for subjects of passives: therefore isFin in False.
|
||||
|
||||
subjForm : NP -> NPForm -> Polarity -> Str = \np,sc,b ->
|
||||
subjForm : NP -> NPForm -> Polarity -> Str = \np,sc,b ->
|
||||
appCompl False b {s = [] ; c = sc ; isPre = True} np ;
|
||||
|
||||
infVP : NPForm -> Polarity -> Agr -> VP -> InfForm -> Str = infVPAnt Simul ;
|
||||
|
||||
infVPAnt : Anteriority -> NPForm -> Polarity -> Agr -> VP -> InfForm -> Str =
|
||||
\ant,sc,pol,agr,vp,vi ->
|
||||
let
|
||||
let
|
||||
fin = case sc of { -- subject case
|
||||
NPCase Nom => True ; -- mina tahan joosta
|
||||
_ => False -- minul peab auto olema
|
||||
@@ -399,12 +399,12 @@ oper
|
||||
--TODO adv placement?
|
||||
--TODO inf ++ fin or fin ++ inf? does it ever become a case here?
|
||||
|
||||
-- The definitions below were moved here from $MorphoEst$ so that
|
||||
-- The definitions below were moved here from $MorphoEst$ so that
|
||||
-- auxiliary of predication can be defined.
|
||||
|
||||
verbOlema : Verb =
|
||||
verbOlema : Verb =
|
||||
let olema = mkVerb
|
||||
"olema" "olla" "olen" "ollakse"
|
||||
"olema" "olla" "olen" "ollakse"
|
||||
"olge" "oli" "olnud" "oldud"
|
||||
in {s = table {
|
||||
Presn _ P3 => "on" ;
|
||||
@@ -413,9 +413,9 @@ oper
|
||||
p = []
|
||||
} ;
|
||||
|
||||
verbMinema : Verb =
|
||||
let minema = mkVerb
|
||||
"minema" "minna" "läheb" "minnakse"
|
||||
verbMinema : Verb =
|
||||
let minema = mkVerb
|
||||
"minema" "minna" "läheb" "minnakse"
|
||||
"minge" "läks" "läinud" "mindud"
|
||||
in {s = table {
|
||||
Impf Sg P1 => "läksin" ;
|
||||
@@ -428,20 +428,20 @@ oper
|
||||
} ;
|
||||
p = []
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
--3 Verbs
|
||||
|
||||
--Auxiliary for internal use
|
||||
mkVerb : (x1,_,_,_,_,_,_,x8 : Str) -> Verb =
|
||||
\tulema,tulla,tuleb,tullakse,tulge,tuli,tulnud,tuldud ->
|
||||
vforms2V (vForms8
|
||||
mkVerb : (x1,_,_,_,_,_,_,x8 : Str) -> Verb =
|
||||
\tulema,tulla,tuleb,tullakse,tulge,tuli,tulnud,tuldud ->
|
||||
vforms2V (vForms8
|
||||
tulema tulla tuleb tullakse tulge tuli tulnud tuldud
|
||||
) ;
|
||||
|
||||
--below moved here from MorphoEst
|
||||
VForms : Type = Predef.Ints 7 => Str ;
|
||||
|
||||
|
||||
vForms8 : (x1,_,_,_,_,_,_,x8 : Str) -> VForms =
|
||||
\tulema,tulla,tuleb,tullakse,tulge,tuli,tulnud,tuldud ->
|
||||
table {
|
||||
@@ -455,34 +455,34 @@ oper
|
||||
7 => tuldud
|
||||
} ;
|
||||
|
||||
vforms2V : VForms -> Verb = \vh ->
|
||||
vforms2V : VForms -> Verb = \vh ->
|
||||
let
|
||||
tulema = vh ! 0 ;
|
||||
tulla = vh ! 1 ;
|
||||
tuleb = vh ! 2 ;
|
||||
tullakse = vh ! 3 ; --juuakse; loetakse
|
||||
tulge = vh ! 4 ; --necessary for tulla, surra (otherwise *tulege, *surege)
|
||||
tulema = vh ! 0 ;
|
||||
tulla = vh ! 1 ;
|
||||
tuleb = vh ! 2 ;
|
||||
tullakse = vh ! 3 ; --juuakse; loetakse
|
||||
tulge = vh ! 4 ; --necessary for tulla, surra (otherwise *tulege, *surege)
|
||||
tuli = vh ! 5 ; --necessary for jooma-juua-jõi
|
||||
tulnud = vh ! 6 ;
|
||||
tuldud = vh ! 7 ; --necessary for t/d in tuldi; loeti
|
||||
|
||||
|
||||
tull_ = init tulla ; --juu(a); saad(a); tull(a);
|
||||
tulles = tull_ + "es" ; --juues; saades; tulles;
|
||||
|
||||
|
||||
tule_ = init tuleb ;
|
||||
|
||||
|
||||
lask_ = Predef.tk 2 tulema ;
|
||||
laulev = case (last lask_) of { --sooma~soov ; laulma~laulev
|
||||
("a"|"e"|"i"|"o"|"u"|"õ"|"ä"|"ö"|"ü") => lask_ + "v" ;
|
||||
_ => lask_ + "ev" } ; --consonant stem in -ma, add e
|
||||
|
||||
|
||||
--imperfect stem
|
||||
kaisi_ = case (Predef.dp 3 tuli) of {
|
||||
"sis" => lask_ + "i" ; --tõusin, tõusis
|
||||
_ + "i" => tuli ; --jõin, jõi
|
||||
_ => lask_ + "si" --käisin, käis; muutsin, muutis
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
tuld_ = Predef.tk 2 tuldud ; --d/t choice for tuldi etc.
|
||||
tulgu = (init tulge) + "u" ;
|
||||
in
|
||||
@@ -510,13 +510,13 @@ oper
|
||||
ConditPass => tuld_ + "aks" ; --# notpresent
|
||||
Imper Sg => tule_ ; -- tule / ära tule
|
||||
Imper Pl => tulge ; -- tulge / ärge tulge
|
||||
ImperP3 => tulgu ; -- tulgu (ta/nad)
|
||||
ImperP3 => tulgu ; -- tulgu (ta/nad)
|
||||
ImperP1Pl => tulge + "m" ; -- tulgem
|
||||
ImperPass => tuld_ + "agu" ; --tuldagu
|
||||
PassPresn True => tullakse ;
|
||||
PassPresn False => tuld_ + "a" ; --da or ta
|
||||
PassImpf True => tuld_ + "i" ; --di or ti
|
||||
PassImpf False => tuldud ;
|
||||
PassImpf False => tuldud ;
|
||||
Quotative Act => lask_ + "vat" ;
|
||||
Quotative Pass => tuld_ + "avat" ; --d or t
|
||||
PresPart Act => laulev ;
|
||||
@@ -527,10 +527,10 @@ oper
|
||||
Inf InfMas => tulema + "s" ;
|
||||
Inf InfMast => tulema + "st" ;
|
||||
Inf InfMata => tulema + "ta" ;
|
||||
Inf InfMaks => tulema + "ks"
|
||||
Inf InfMaks => tulema + "ks"
|
||||
} ;
|
||||
sc = NPCase Nom ;
|
||||
p = []
|
||||
p = []
|
||||
} ;
|
||||
|
||||
-- For regular verbs, paradigm from 4 base forms
|
||||
@@ -547,12 +547,12 @@ oper
|
||||
"t" => "k" ;
|
||||
_ => "g"
|
||||
} ;
|
||||
toit_ = case (last vestle_) of {
|
||||
toit_ = case (last vestle_) of {
|
||||
("t"|"d") => vesteld_ ; --toit(ma) -> toitke;
|
||||
_ => vestel_ --vestle(ma) -> vestelge
|
||||
} ;
|
||||
laski_ = case (last vestle_) of {
|
||||
("a"|"e"|"i"|"o"|"u"|"õ"|"ä"|"ö"|"ü")
|
||||
laski_ = case (last vestle_) of {
|
||||
("a"|"e"|"i"|"o"|"u"|"õ"|"ä"|"ö"|"ü")
|
||||
=> vestle_ ; --vestle(ma) -> vestles
|
||||
_ => vestle_ + "i" --lask(ma) -> laskis
|
||||
} ;
|
||||
@@ -566,7 +566,7 @@ oper
|
||||
(laski_ + "s") --ma: kindla kõneviisi lihtmineviku pöörded;
|
||||
(toit_ + "nud") --da: isikulise tegumoe mineviku kesksõna
|
||||
(jaet_ + "ud"); --takse: ülejäänud umbisikulise tgm vormid
|
||||
|
||||
|
||||
|
||||
regVerb : (_,_,_,_ : Str) -> Verb = \kinkima,kinkida,kingib,kingitakse ->
|
||||
vforms2V (regVForms kinkima kinkida kingib kingitakse) ;
|
||||
@@ -580,8 +580,8 @@ oper
|
||||
-- parem -> paremini
|
||||
-- parim -> kõige paremini | parimalt?
|
||||
noun2adjComp : Bool -> Noun -> Adj = \isPos,tuore ->
|
||||
let
|
||||
tuoreesti = Predef.tk 1 (tuore.s ! NCase Sg Gen) + "sti" ;
|
||||
let
|
||||
tuoreesti = Predef.tk 1 (tuore.s ! NCase Sg Gen) + "sti" ;
|
||||
tuoreemmin = Predef.tk 2 (tuore.s ! NCase Sg Gen) + "in"
|
||||
in {s = table {
|
||||
AN f => tuore.s ! f ;
|
||||
@@ -602,21 +602,21 @@ oper
|
||||
compAP = icompAP [] ;
|
||||
|
||||
icompAP : Str -> {s : Bool => NForm => Str} -> {s : Agr => Str} = \kui,ap ->
|
||||
{ s = \\agr =>
|
||||
let n = complNumAgr agr ;
|
||||
{ s = \\agr =>
|
||||
let n = complNumAgr agr ;
|
||||
in kui ++ ap.s ! False ! NCase n Nom } ;
|
||||
|
||||
compCN : Noun -> {s : Agr => Str} = \cn ->
|
||||
{ s = \\agr =>
|
||||
let n = complNumAgr agr ;
|
||||
|
||||
compCN : Noun -> {s : Agr => Str} = \cn ->
|
||||
{ s = \\agr =>
|
||||
let n = complNumAgr agr ;
|
||||
in cn.s ! NCase n Nom } ;
|
||||
|
||||
|
||||
-- Reflexive pronoun.
|
||||
-- Reflexive pronoun.
|
||||
--- Possessive could be shared with the more general $NounFin.DetCN$.
|
||||
|
||||
reflPron : Agr -> NP = \agr ->
|
||||
let
|
||||
reflPron : Agr -> NP = \agr ->
|
||||
let
|
||||
ise = nForms2N (nForms6 "ise" "enda" "ennast" "endasse" "endi" "endid") ;
|
||||
n = case agr of {
|
||||
AgPol => Sg ;
|
||||
@@ -638,7 +638,7 @@ oper
|
||||
|
||||
NForms : Type = Predef.Ints 5 => Str ;
|
||||
|
||||
nForms6 : (x1,_,_,_,_,x6 : Str) -> NForms =
|
||||
nForms6 : (x1,_,_,_,_,x6 : Str) -> NForms =
|
||||
\jogi,joe,joge,joesse, -- sg nom, gen, part, ill
|
||||
jogede,jogesid -> table { -- pl gen, part,
|
||||
0 => jogi ;
|
||||
@@ -646,7 +646,7 @@ oper
|
||||
2 => joge ;
|
||||
3 => joesse ;
|
||||
4 => jogede ;
|
||||
5 => jogesid
|
||||
5 => jogesid
|
||||
} ;
|
||||
|
||||
n2nforms : Noun -> NForms = \ukko -> table {
|
||||
@@ -655,12 +655,12 @@ oper
|
||||
2 => ukko.s ! NCase Sg Part ;
|
||||
3 => ukko.s ! NCase Sg Illat ;
|
||||
4 => ukko.s ! NCase Pl Gen ;
|
||||
5 => ukko.s ! NCase Pl Part
|
||||
5 => ukko.s ! NCase Pl Part
|
||||
} ;
|
||||
|
||||
-- Converts 6 given strings (Nom, Gen, Part, Illat, Gen, Part) into Noun
|
||||
-- http://www.eki.ee/books/ekk09/index.php?p=3&p1=5&id=226
|
||||
nForms2N : NForms -> Noun = \f ->
|
||||
nForms2N : NForms -> Noun = \f ->
|
||||
let
|
||||
jogi = f ! 0 ;
|
||||
joe = f ! 1 ;
|
||||
@@ -668,7 +668,7 @@ oper
|
||||
joesse = f ! 3 ;
|
||||
jogede = f ! 4 ;
|
||||
jogesid = f ! 5 ;
|
||||
in
|
||||
in
|
||||
{s = table {
|
||||
NCase Sg Nom => jogi ;
|
||||
NCase Sg Gen => joe ;
|
||||
@@ -698,7 +698,7 @@ oper
|
||||
NCase Pl Allat => jogede + "le" ;
|
||||
NCase Pl Abess => jogede + "ta" ;
|
||||
NCase Pl Comit => jogede + "ga" ;
|
||||
NCase Pl Termin => jogede + "ni"
|
||||
NCase Pl Termin => jogede + "ni"
|
||||
|
||||
} --;
|
||||
-- lock_N = <>
|
||||
@@ -721,9 +721,9 @@ oper
|
||||
isDef : Bool
|
||||
} ;
|
||||
|
||||
heavyQuant : PQuant -> PQuant ** {sp : Number => Case => Str} = \d ->
|
||||
d ** {sp = d.s} ;
|
||||
PQuant : Type =
|
||||
{s : Number => Case => Str ; isDef : Bool} ;
|
||||
heavyQuant : PQuant -> PQuant ** {sp : Number => Case => Str} = \d ->
|
||||
d ** {sp = d.s} ;
|
||||
PQuant : Type =
|
||||
{s : Number => Case => Str ; isDef : Bool} ;
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user