1
0
forked from GitHub/gf-core

added dative case

This commit is contained in:
krasimir
2008-02-23 11:57:05 +00:00
parent 4496badef1
commit bbfb4e981c
11 changed files with 79 additions and 68 deletions

View File

@@ -8,7 +8,7 @@ concrete AdverbBul of Adverb = CatBul ** open ResBul, Prelude in {
s = cadv.s ++ "ïî" ++ "-" ++ a.s ! ASg Neut Indef ++ "îò" ++ s.s
} ;
PrepNP prep np = {s = prep.s ++ np.s ! Acc} ;
PrepNP prep np = {s = prep.s ++ np.s ! prep.c} ;
AdAdv = cc2 ;

View File

@@ -30,7 +30,7 @@ concrete CatBul of Cat = open ResBul, Prelude, (R = ParamX) in {
Cl = {s : ResBul.Tense => Anteriority => Polarity => Order => Str} ;
Slash = {
s : ResBul.Tense => Anteriority => Polarity => Order => Str ;
c2 : Str
c2 : Prep
} ;
Imp = {s : Polarity => GenNum => Str} ;
@@ -83,13 +83,13 @@ concrete CatBul of Cat = open ResBul, Prelude, (R = ParamX) in {
-- Structural
Subj = {s : Str} ;
Prep = {s : Str} ;
Prep = {s : Str; c : Case} ;
-- Open lexical classes, e.g. Lexicon
V, VS, VQ, VA = Verb ;
V2, V2A = Verb ** {c2 : Str} ;
V3 = Verb ** {c2, c3 : Str} ;
V2, V2A = Verb ** {c2 : Prep} ;
V3 = Verb ** {c2, c3 : Prep} ;
A = {s : AForm => Str} ;
A2 = {s : AForm => Str ; c2 : Str} ;

View File

@@ -6,8 +6,8 @@ concrete ExtraBul of ExtraBulAbs = CatBul **
GenNPIndef np = {s = \\gn => np.s ! Gen (aform gn Indef Nom); spec=Indef} ;
i8fem_Pron = mkNP "ŕç" "ěĺí" "ěîé" "ěî˙" "ěî˙ň" "ěî˙" "ěî˙ňŕ" "ěîĺ" "ěîĺňî" "ěîč" "ěîčňĺ" (GSg Fem) P1 ;
i8neut_Pron = mkNP "ŕç" "ěĺí" "ěîé" "ěî˙" "ěî˙ň" "ěî˙" "ěî˙ňŕ" "ěîĺ" "ěîĺňî" "ěîč" "ěîčňĺ" (GSg Neut) P1 ;
i8fem_Pron = mkPron "ŕç" "ěĺí" "ěč" "ěîé" "ěî˙" "ěî˙ň" "ěî˙" "ěî˙ňŕ" "ěîĺ" "ěîĺňî" "ěîč" "ěîčňĺ" (GSg Fem) P1 ;
i8neut_Pron = mkPron "ŕç" "ěĺí" "ěč" "ěîé" "ěî˙" "ěî˙ň" "ěî˙" "ěî˙ňŕ" "ěîĺ" "ěîĺňî" "ěîč" "ěîčňĺ" (GSg Neut) P1 ;
whatSg8fem_IP = mkIP "ęŕęâŕ" "ęŕęâŕ" (GSg Fem) ;
whatSg8neut_IP = mkIP "ęŕęâî" "ęŕęâî" (GSg Neut) ;
@@ -15,11 +15,11 @@ concrete ExtraBul of ExtraBulAbs = CatBul **
whoSg8fem_IP = mkIP "ęî˙" "ęîăî" (GSg Fem) ;
whoSg8neut_IP = mkIP "ęîĺ" "ęîăî" (GSg Neut) ;
youSg8fem_Pron = mkNP "ňč" "ňĺá" "ňâîé" "ňâî˙" "ňâî˙ň" "ňâî˙" "ňâî˙ňŕ" "ňâîĺ" "ňâîĺňî" "ňâîč" "ňâîčňĺ" (GSg Fem) P2 ;
youSg8neut_Pron = mkNP "ňč" "ňĺá" "ňâîé" "ňâî˙" "ňâî˙ň" "ňâî˙" "ňâî˙ňŕ" "ňâîĺ" "ňâîĺňî" "ňâîč" "ňâîčňĺ" (GSg Neut) P2 ;
youSg8fem_Pron = mkPron "ňč" "ňĺá" "ňč" "ňâîé" "ňâî˙" "ňâî˙ň" "ňâî˙" "ňâî˙ňŕ" "ňâîĺ" "ňâîĺňî" "ňâîč" "ňâîčňĺ" (GSg Fem) P2 ;
youSg8neut_Pron = mkPron "ňč" "ňĺá" "ňč" "ňâîé" "ňâî˙" "ňâî˙ň" "ňâî˙" "ňâî˙ňŕ" "ňâîĺ" "ňâîĺňî" "ňâîč" "ňâîčňĺ" (GSg Neut) P2 ;
youPol8fem_Pron = mkNP "âčĺ" "âŕń" "âŕř" "âŕřč˙" "âŕřč˙ň" "âŕřŕ" "âŕřŕňŕ" "âŕřĺ" "âŕřĺňî" "âŕřč" "âŕřčňĺ" (GSg Fem) P2 ;
youPol8neut_Pron = mkNP "âčĺ" "âŕń" "âŕř" "âŕřč˙" "âŕřč˙ň" "âŕřŕ" "âŕřŕňŕ" "âŕřĺ" "âŕřĺňî" "âŕřč" "âŕřčňĺ" (GSg Neut) P2 ;
youPol8fem_Pron = mkPron "âčĺ" "âŕń" "âč" "âŕř" "âŕřč˙" "âŕřč˙ň" "âŕřŕ" "âŕřŕňŕ" "âŕřĺ" "âŕřĺňî" "âŕřč" "âŕřčňĺ" (GSg Fem) P2 ;
youPol8neut_Pron = mkPron "âčĺ" "âŕń" "âč" "âŕř" "âŕřč˙" "âŕřč˙ň" "âŕřŕ" "âŕřŕňŕ" "âŕřĺ" "âŕřĺňî" "âŕřč" "âŕřčňĺ" (GSg Neut) P2 ;
onePl_Num = {s = table {
DMascIndef | DMascPersonalIndef | DFemIndef | DNeutIndef => "ĺäíč" ;

View File

@@ -156,7 +156,7 @@ lin
uncertain_A = mkA79 "íĺ˙ńĺí" ;
oper
zaP = mkPrep "çŕ" ;
naP = mkPrep "íŕ" ;
doP = mkPrep "äî" ;
zaP = mkPrep "çŕ" Acc ;
naP = mkPrep "íŕ" Dat ;
doP = mkPrep "äî" Acc ;
} ;

View File

@@ -15,10 +15,19 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in {
} ;
_ => NF det.n det.spec
} ;
in det.s ! cn.g ! c ++ cn.s ! nf ;
s = det.s ! cn.g ! c ++ cn.s ! nf
in case c of {
Dat => "íà" ++ s;
_ => s
} ;
a = {gn = gennum cn.g det.n; p = P3} ;
} ;
UsePN pn = {s = \\_ => pn.s; a = {gn = GSg pn.g; p = P3}} ;
UsePN pn = { s = \\c => case c of {
Dat => "íà" ++ pn.s;
_ => pn.s
} ;
a = {gn = GSg pn.g; p = P3}
} ;
UsePron p = {s = p.s; a=p.a} ;
PredetNP pred np = {

View File

@@ -52,7 +52,7 @@ oper
-- A preposition as used for rection in the lexicon, as well as to
-- build $PP$s in the resource API, just requires a string.
mkPrep : Str -> Prep ;
mkPrep : Str -> Case -> Prep ;
noPrep : Prep ;
mkA2 a p = a ** {c2 = p.s ; lock_A2 = <>} ;
@@ -88,13 +88,13 @@ oper
mkAdv x = ss x ** {lock_Adv = <>} ;
mkPrep p = ss p ** {lock_Prep = <>} ;
noPrep = mkPrep [] ;
mkPrep p c = {s = p; c = c; lock_Prep = <>} ;
noPrep = mkPrep [] Acc ;
prepV2 v p = v ** {s = v.s ; c2 = p.s ; lock_V2 = <>} ;
dirV2 v = prepV2 v noPrep;
prepV2 v p = {s = v.s ; c2 = p ; lock_V2 = <>} ;
dirV2 v = prepV2 v noPrep ;
mkV3 v p q = v ** {s = v.s ; s1 = v.s1 ; c2 = p.s ; c3 = q.s ; lock_V3 = <>} ;
mkV3 v p q = v ** {s = v.s ; s1 = v.s1 ; c2 = p ; c3 = q ; lock_V3 = <>} ;
dirV3 v p = mkV3 v noPrep p ;
dirdirV3 v = dirV3 v noPrep ;

View File

@@ -18,7 +18,7 @@ concrete QuestionBul of Question = CatBul ** open ResBul, Prelude in {
in {s = \\t,a,b,_ => cl.s ! t ! a ! b ! Main} ;
QuestSlash ip slash =
mkQuestion (ss (slash.c2 ++ ip.s ! Acc)) slash ;
mkQuestion (ss (slash.c2.s ++ ip.s ! slash.c2.c)) slash ;
QuestIAdv iadv cl = mkQuestion iadv cl ;

View File

@@ -18,7 +18,7 @@ resource ResBul = ParamX ** open Prelude in {
-- This is the worst-case $Case$ needed for pronouns.
param
Case = Nom | Acc ;
Case = Nom | Acc | Dat;
NForm =
NF Number Species
@@ -425,16 +425,18 @@ resource ResBul = ParamX ** open Prelude in {
\koi,kogo,gn -> {
s = table {
Nom => koi ;
Acc => kogo
Acc => kogo ;
Dat => "íà" ++ kogo
} ;
gn = gn
} ;
mkNP : (az,men,moj,moia,moiat,moia_,moiata,moe,moeto,moi,moite : Str) -> GenNum -> Person -> {s : Case => Str; gen : AForm => Str; a : Agr} =
\az,men,moj,moia,moiat,moia_,moiata,moe,moeto,moi,moite,gn,p -> {
mkPron : (az,men,mi,moj,moia,moiat,moia_,moiata,moe,moeto,moi,moite : Str) -> GenNum -> Person -> {s : Case => Str; gen : AForm => Str; a : Agr} =
\az,men,mi,moj,moia,moiat,moia_,moiata,moe,moeto,moi,moite,gn,p -> {
s = table {
Nom => az ;
Acc => men
Acc => men ;
Dat => mi
} ;
gen = (mkAdjective moj moia moiat moia_ moiata moe moeto moi moite).s ;
a = {

View File

@@ -22,7 +22,7 @@ concrete SentenceBul of Sentence = CatBul ** open Prelude, ResBul in {
c2 = slash.c2
} ;
SlashPrep cl prep = cl ** {c2 = prep.s} ;
SlashPrep cl prep = cl ** {c2 = prep} ;
EmbedS s = {s = "," ++ "֌" ++ s.s} ;
EmbedQS qs = {s = qs.s ! QIndir} ;

View File

@@ -1,11 +1,11 @@
concrete StructuralBul of Structural = CatBul **
open MorphoBul, (P = ParadigmsBul), Prelude in {
open MorphoBul, ParadigmsBul, Prelude in {
flags optimize=all ;
lin
above_Prep = ss "íàä" ;
after_Prep = ss "ñëåä" ;
above_Prep = mkPrep "íàä" Acc ;
after_Prep = mkPrep "ñëåä" Acc ;
all_Predet = {s = table GenNum ["âñè÷êèÿ";"âñè÷êàòà";"âñè÷êîòî";"âñè÷êèòå"]} ;
almost_AdA, almost_AdN = ss "ïî÷òè" ;
{- although_Subj = ss "although" ;
@@ -13,15 +13,15 @@ concrete StructuralBul of Structural = CatBul **
and_Conj = ss "and" ** {n = Pl} ;
-}
because_Subj = ss "çàùîòî" ;
before_Prep = ss "ïðåäè" ;
behind_Prep = ss "çàä" ;
between_Prep = ss "ìåæäó" ;
before_Prep = mkPrep "ïðåäè" Acc ;
behind_Prep = mkPrep "çàä" Acc ;
between_Prep = mkPrep "ìåæäó" Acc ;
{-
both7and_DConj = sd2 "both" "and" ** {n = Pl} ;
but_PConj = ss "but" ;
-}
by8agent_Prep = ss "÷ðåç" ;
by8means_Prep = ss "÷ðåç" ;
by8agent_Prep = mkPrep "÷ðåç" Acc ;
by8means_Prep = mkPrep "÷ðåç" Acc ;
{-
can8know_VV, can_VV = {
s = table {
@@ -36,7 +36,7 @@ concrete StructuralBul of Structural = CatBul **
isAux = True
} ;
-}
during_Prep = ss ["ïî âðåìå íà"] ;
during_Prep = mkPrep ["ïî âðåìå íà"] Acc ;
{-
either7or_DConj = sd2 "either" "or" ** {n = Sg} ;
everybody_NP = regNP "everybody" Sg ;
@@ -48,21 +48,21 @@ concrete StructuralBul of Structural = CatBul **
everywhere_Adv = ss "íàâñÿêúäå" ;
few_Det = {s = \\_,_ => "íÿêîëêî"; n = Pl; countable = True; spec = Indef} ;
--- first_Ord = ss "first" ; DEPRECATED
for_Prep = ss "çà" ;
from_Prep = ss "îò" ;
he_Pron = mkNP "òîé" "íåãî" "ñâîé" "ñâîÿ" "ñâîÿò" "ñâîÿ" "ñâîÿòà" "ñâîå" "ñâîåòî" "ñâîè" "ñâîèòå" (GSg Masc) P3 ;
for_Prep = mkPrep "çà" Acc ;
from_Prep = mkPrep "îò" Acc ;
he_Pron = mkPron "òîé" "íåãî" "ìó" "ñâîé" "ñâîÿ" "ñâîÿò" "ñâîÿ" "ñâîÿòà" "ñâîå" "ñâîåòî" "ñâîè" "ñâîèòå" (GSg Masc) P3 ;
here_Adv = ss "òóê" ;
here7to_Adv = ss ["äî òóê"] ;
here7from_Adv = ss ["îò òóê"] ;
how_IAdv = ss "êàê" ;
how8many_IDet = {s = \\_ => "êîëêî"; n = Pl} ;
if_Subj = ss "àêî" ;
in8front_Prep = ss "ïðåä" ;
i_Pron = mkNP "àç" "ìåí" "ìîé" "ìîÿ" "ìîÿò" "ìîÿ" "ìîÿòà" "ìîå" "ìîåòî" "ìîè" "ìîèòå" (GSg Masc) P1 ;
in_Prep = ss (pre { "â" ;
"âúâ" / strs {"â" ; "ô" ; "Â" ; "Ô"}
}) ;
it_Pron = mkNP "òî" "íåãî" "íåãîâ" "íåãîâèÿ" "íåãîâèÿò" "íåãîâà" "íåãîâàòà" "íåãîâî" "íåãîâîòî" "íåãîâè" "íåãîâèòå" (GSg Neut) P3 ;
in8front_Prep = mkPrep "ïðåä" Acc ;
i_Pron = mkPron "àç" "ìåí" "ìè" "ìîé" "ìîÿ" "ìîÿò" "ìîÿ" "ìîÿòà" "ìîå" "ìîåòî" "ìîè" "ìîèòå" (GSg Masc) P1 ;
in_Prep = mkPrep (pre { "â" ;
"âúâ" / strs {"â" ; "ô" ; "Â" ; "Ô"}
}) Acc ;
it_Pron = mkPron "òî" "íåãî" "ìó" "íåãîâ" "íåãîâèÿ" "íåãîâèÿò" "íåãîâà" "íåãîâàòà" "íåãîâî" "íåãîâîòî" "íåãîâè" "íåãîâèòå" (GSg Neut) P3 ;
less_CAdv = {s="íå"; sn="ïî-ìàëêî"} ;
many_Det = mkDeterminerPl "ìíîãî" ;
more_CAdv = {s=[]; sn="ïîâå÷å"} ;
@@ -83,20 +83,20 @@ concrete StructuralBul of Structural = CatBul **
} ;
-}
no_Phr = ss "íå" ;
on_Prep = ss "íà" ;
on_Prep = mkPrep "íà" Acc ;
---- one_Quant = mkDeterminer Sg "one" ; -- DEPRECATED
only_Predet = {s = \\_ => "ñàìî"} ;
{-
or_Conj = ss "or" ** {n = Sg} ;
otherwise_PConj = ss "otherwise" ;
-}
part_Prep = ss "îò" ;
part_Prep = mkPrep "îò" Acc ;
{-
please_Voc = ss "please" ;
-}
possess_Prep = ss "íà" ;
possess_Prep = mkPrep [] Dat ;
quite_Adv = ss "äîñòà" ;
she_Pron = mkNP "òÿ" "íåÿ" "íåèí" "íåéíèÿ" "íåéíèÿò" "íåéíà" "íåéíàòà" "íåéíî" "íåéíîòî" "íåéíè" "íåéíèòå" (GSg Fem) P3 ;
she_Pron = mkPron "òÿ" "íåÿ" "è" "íåèí" "íåéíèÿ" "íåéíèÿò" "íåéíà" "íåéíàòà" "íåéíî" "íåéíîòî" "íåéíè" "íåéíèòå" (GSg Fem) P3 ;
so_AdA = ss "òîëêîâà" ;
{-
somebody_NP = regNP "somebody" Sg ;
@@ -116,21 +116,21 @@ concrete StructuralBul of Structural = CatBul **
therefore_PConj = ss "therefore" ;
these_NP = regNP "these" Pl ;
-}
they_Pron = mkNP "òå" "òÿõ" "òåõåí" "òåõíèÿ" "òåõíèÿò" "òÿõíà" "òÿõíàòà" "òÿõíî" "òÿõíîòî" "òåõíè" "òåõíèòå" GPl P3 ;
they_Pron = mkPron "òå" "òÿõ" "èì" "òåõåí" "òåõíèÿ" "òåõíèÿò" "òÿõíà" "òÿõíàòà" "òÿõíî" "òÿõíîòî" "òåõíè" "òåõíèòå" GPl P3 ;
this_Quant = mkQuant "òîçè" "òaçè" "òîâà" "òåçè" ;
{-
this_NP = regNP "this" Sg ;
those_NP = regNP "those" Pl ;
-}
through_Prep = ss "ïðåç" ;
through_Prep = mkPrep "ïðåç" Acc ;
too_AdA = ss "ïðåêàëåíî" ;
to_Prep = ss "äî" ;
under_Prep = ss "ïîä" ;
to_Prep = mkPrep "äî" Acc ;
under_Prep = mkPrep "ïîä" Acc ;
very_AdA = ss "ìíîãî" ;
{-
want_VV = P.mkVV (P.regV "want") ;
-}
we_Pron = mkNP "íèå" "íàñ" "íàø" "íàøèÿ" "íàøèÿò" "íàøà" "íàøàòà" "íàøå" "íàøåòî" "íàøè" "íàøèòå" GPl P1 ;
we_Pron = mkPron "íèå" "íàñ" "íè" "íàø" "íàøèÿ" "íàøèÿò" "íàøà" "íàøàòà" "íàøå" "íàøåòî" "íàøè" "íàøèòå" GPl P1 ;
whatPl_IP = mkIP "êàêâè" "êàêâè" GPl ;
whatSg_IP = mkIP "êàêúâ" "êàêúâ" (GSg Masc) ;
when_IAdv = ss "êîãà" ;
@@ -143,13 +143,13 @@ concrete StructuralBul of Structural = CatBul **
whoSg_IP = mkIP "êîé" "êîãî" (GSg Masc) ;
whoPl_IP = mkIP "êîè" "êîãî" GPl ;
why_IAdv = ss "çàùî" ;
without_Prep = ss "áåç" ;
with_Prep = ss (pre { "ñ" ;
"ñúñ" / strs {"ñ" ; "ç" ; "Ñ" ; "Ç"}
}) ;
without_Prep = mkPrep "áåç" Acc ;
with_Prep = mkPrep (pre { "ñ" ;
"ñúñ" / strs {"ñ" ; "ç" ; "Ñ" ; "Ç"}
}) Acc ;
yes_Phr = ss "äà" ;
youSg_Pron = mkNP "òè" "òåá" "òâîé" "òâîÿ" "òâîÿò" "òâîÿ" "òâîÿòà" "òâîå" "òâîåòî" "òâîè" "òâîèòå" (GSg Masc) P2 ;
youPl_Pron = mkNP "âèå" "âàñ" "âàø" "âàøèÿ" "âàøèÿò" "âàøà" "âàøàòà" "âàøå" "âàøåòî" "âàøè" "âàøèòå" GPl P2 ;
youPol_Pron = mkNP "âèå" "âàñ" "âàø" "âàøèÿ" "âàøèÿò" "âàøà" "âàøàòà" "âàøå" "âàøåòî" "âàøè" "âàøèòå" (GSg Masc) P2 ;
youSg_Pron = mkPron "òè" "òåá" "òè" "òâîé" "òâîÿ" "òâîÿò" "òâîÿ" "òâîÿòà" "òâîå" "òâîåòî" "òâîè" "òâîèòå" (GSg Masc) P2 ;
youPl_Pron = mkPron "âèå" "âàñ" "âè" "âàø" "âàøèÿ" "âàøèÿò" "âàøà" "âàøàòà" "âàøå" "âàøåòî" "âàøè" "âàøèòå" GPl P2 ;
youPol_Pron = mkPron "âèå" "âàñ" "âè" "âàø" "âàøèÿ" "âàøèÿò" "âàøà" "âàøàòà" "âàøå" "âàøåòî" "âàøè" "âàøèòå" (GSg Masc) P2 ;
}

View File

@@ -1,12 +1,12 @@
concrete VerbBul of Verb = CatBul ** open ResBul in {
concrete VerbBul of Verb = CatBul ** open ResBul, ParadigmsBul in {
flags optimize=all_subs ;
lin
UseV = predV ;
ComplV2 v np = insertObj (\\_ => v.c2 ++ np.s ! Acc) (predV v) ;
ComplV2 v np = insertObj (\\_ => v.c2.s ++ np.s ! v.c2.c) (predV v) ;
ComplV3 v np np2 =
insertObj (\\_ => v.c2 ++ np.s ! Acc ++ v.c3 ++ np2.s ! Acc) (predV v) ;
insertObj (\\_ => v.c2.s ++ np.s ! v.c2.c ++ v.c3.s ++ np2.s ! v.c3.c) (predV v) ;
ComplVS v s = insertObj (\\_ => "," ++ "֌" ++ s.s) (predV v) ;
@@ -14,11 +14,11 @@ concrete VerbBul of Verb = CatBul ** open ResBul in {
AdvVP vp adv = insertObj (\\_ => adv.s) vp ;
ReflV2 v = insertObj (\\_ => v.c2 ++ ["ñåáå ñè"]) (predV v) ;
ReflV2 v = insertObj (\\_ => v.c2.s ++ case v.c2.c of {Dat => "ñè"; _ => "ñå"}) (predV v) ;
PassV2 v = insertObj (\\a => v.s ! VPassive (aform a.gn Indef Acc)) (predV auxBe) ;
UseVS, UseVQ = \vv -> {s = vv.s ; c2 = [] ; isRefl = vv.isRefl} ; -- no "to"
UseVS, UseVQ = \vv -> {s = vv.s ; c2 = noPrep ; isRefl = vv.isRefl} ; -- no "to"
CompNP np = {s = \\_ => np.s ! Acc} ;
CompAdv a = {s = \\_ => a.s} ;