forked from GitHub/gf-core
unbounded dep in resource with SlashVS
This commit is contained in:
@@ -32,6 +32,7 @@ abstract Cat = Common ** {
|
|||||||
RS ; -- relative e.g. "in which she lived"
|
RS ; -- relative e.g. "in which she lived"
|
||||||
Cl ; -- declarative clause, with all tenses e.g. "she looks at this"
|
Cl ; -- declarative clause, with all tenses e.g. "she looks at this"
|
||||||
Slash ; -- clause missing NP (S/NP in GPSG) e.g. "she looks at"
|
Slash ; -- clause missing NP (S/NP in GPSG) e.g. "she looks at"
|
||||||
|
SlashS ;-- sentence missing NP e.g. "she has looked at"
|
||||||
Imp ; -- imperative e.g. "look at this"
|
Imp ; -- imperative e.g. "look at this"
|
||||||
|
|
||||||
--2 Questions and interrogatives
|
--2 Questions and interrogatives
|
||||||
|
|||||||
@@ -33,6 +33,8 @@ abstract Sentence = Cat ** {
|
|||||||
AdvSlash : Slash -> Adv -> Slash ; -- (whom) he sees tomorrow
|
AdvSlash : Slash -> Adv -> Slash ; -- (whom) he sees tomorrow
|
||||||
SlashPrep : Cl -> Prep -> Slash ; -- (with whom) he walks
|
SlashPrep : Cl -> Prep -> Slash ; -- (with whom) he walks
|
||||||
|
|
||||||
|
SlashVS : NP -> VS -> SlashS -> Slash ; -- (whom) he says that she loves
|
||||||
|
|
||||||
--2 Imperatives
|
--2 Imperatives
|
||||||
|
|
||||||
-- An imperative is straightforwardly formed from a verb phrase.
|
-- An imperative is straightforwardly formed from a verb phrase.
|
||||||
@@ -60,6 +62,7 @@ abstract Sentence = Cat ** {
|
|||||||
UseCl : Tense -> Ant -> Pol -> Cl -> S ;
|
UseCl : Tense -> Ant -> Pol -> Cl -> S ;
|
||||||
UseQCl : Tense -> Ant -> Pol -> QCl -> QS ;
|
UseQCl : Tense -> Ant -> Pol -> QCl -> QS ;
|
||||||
UseRCl : Tense -> Ant -> Pol -> RCl -> RS ;
|
UseRCl : Tense -> Ant -> Pol -> RCl -> RS ;
|
||||||
|
UseSlash : Tense -> Ant -> Pol -> Slash -> SlashS ;
|
||||||
|
|
||||||
-- An adverb can be added to the beginning of a sentence.
|
-- An adverb can be added to the beginning of a sentence.
|
||||||
|
|
||||||
|
|||||||
@@ -66,11 +66,11 @@ oper
|
|||||||
let
|
let
|
||||||
paccp = case acc of {
|
paccp = case acc of {
|
||||||
CRefl => <reflPron n p Acc, p,True> ;
|
CRefl => <reflPron n p Acc, p,True> ;
|
||||||
CPron a => <argPron a.g a.n a.p Acc, a.p,True> ;
|
CPron ag an ap => <argPron ag an ap Acc, ap,True> ;
|
||||||
_ => <[],P2,False>
|
_ => <[],P2,False>
|
||||||
} ;
|
} ;
|
||||||
pdatp = case dat of {
|
pdatp = case dat of {
|
||||||
CPron a => <argPron a.g a.n a.p dative, a.p,True> ;
|
CPron ag an ap => <argPron ag an ap dative, ap,True> ;
|
||||||
_ => <[],P2,False>
|
_ => <[],P2,False>
|
||||||
}
|
}
|
||||||
in case <paccp.p2, pdatp.p2> of {
|
in case <paccp.p2, pdatp.p2> of {
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ lin
|
|||||||
-- can_VV = mkVV (verbV (poder_58 "poder")) ;
|
-- can_VV = mkVV (verbV (poder_58 "poder")) ;
|
||||||
during_Prep = mkPreposition "durant" ; ----
|
during_Prep = mkPreposition "durant" ; ----
|
||||||
either7or_DConj = {s1,s2 = "o" ; n = Sg} ;
|
either7or_DConj = {s1,s2 = "o" ; n = Sg} ;
|
||||||
everybody_NP = mkNP ["tothom"] Masc Sg ;
|
everybody_NP = makeNP ["tothom"] Masc Sg ;
|
||||||
every_Det = {s = \\_,_ => "cada" ; n = Sg} ;
|
every_Det = {s = \\_,_ => "cada" ; n = Sg} ;
|
||||||
everything_NP = pn2np (mkPN ["tot"] Masc) ;
|
everything_NP = pn2np (mkPN ["tot"] Masc) ;
|
||||||
everywhere_Adv = ss ["a tot arreu"] ;
|
everywhere_Adv = ss ["a tot arreu"] ;
|
||||||
@@ -91,12 +91,12 @@ lin
|
|||||||
Pl => \\g,c => prepCase c ++ genForms "aquells" "aquelles" ! g
|
Pl => \\g,c => prepCase c ++ genForms "aquells" "aquelles" ! g
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
that_NP = mkNP ["alló"] Masc Sg ;
|
that_NP = makeNP ["alló"] Masc Sg ;
|
||||||
there_Adv = mkAdv "allà" ; -- allá
|
there_Adv = mkAdv "allà" ; -- allá
|
||||||
there7to_Adv = mkAdv ["cap a allà"] ;
|
there7to_Adv = mkAdv ["cap a allà"] ;
|
||||||
there7from_Adv = mkAdv ["d'allà"] ;
|
there7from_Adv = mkAdv ["d'allà"] ;
|
||||||
therefore_PConj = ss ["per tant"] ;
|
therefore_PConj = ss ["per tant"] ;
|
||||||
these_NP = mkNP ["aquestes"] Fem Pl ;
|
these_NP = makeNP ["aquestes"] Fem Pl ;
|
||||||
they_Pron = mkPronoun
|
they_Pron = mkPronoun
|
||||||
"elles" "les" "les" "elles"
|
"elles" "les" "les" "elles"
|
||||||
["el seu"] ["la seva"] ["llurs"] ["llurs"]
|
["el seu"] ["la seva"] ["llurs"] ["llurs"]
|
||||||
@@ -108,7 +108,7 @@ lin
|
|||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
this_NP = pn2np (mkPN ["això"] Masc) ;
|
this_NP = pn2np (mkPN ["això"] Masc) ;
|
||||||
those_NP = mkNP ["aquelles"] Fem Pl ;
|
those_NP = makeNP ["aquelles"] Fem Pl ;
|
||||||
through_Prep = mkPreposition "mitjançant" ;
|
through_Prep = mkPreposition "mitjançant" ;
|
||||||
too_AdA = ss "massa" ;
|
too_AdA = ss "massa" ;
|
||||||
to_Prep = complDat ;
|
to_Prep = complDat ;
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ concrete CatEng of Cat = CommonX ** open ResEng, Prelude in {
|
|||||||
S = {s : Str} ;
|
S = {s : Str} ;
|
||||||
QS = {s : QForm => Str} ;
|
QS = {s : QForm => Str} ;
|
||||||
RS = {s : Agr => Str ; c : Case} ; -- c for it clefts
|
RS = {s : Agr => Str ; c : Case} ; -- c for it clefts
|
||||||
|
SlashS = {s : Str ; c2 : Str} ;
|
||||||
|
|
||||||
-- Sentence
|
-- Sentence
|
||||||
|
|
||||||
|
|||||||
@@ -37,16 +37,29 @@ concrete SentenceEng of Sentence = CatEng ** open Prelude, ResEng in {
|
|||||||
|
|
||||||
SlashPrep cl prep = cl ** {c2 = prep.s} ;
|
SlashPrep cl prep = cl ** {c2 = prep.s} ;
|
||||||
|
|
||||||
|
SlashVS np vs slash =
|
||||||
|
mkClause (np.s ! Nom) np.a
|
||||||
|
(insertObj (\\_ => conjThat ++ slash.s) (predV vs)) **
|
||||||
|
{c2 = slash.c2} ;
|
||||||
|
|
||||||
EmbedS s = {s = conjThat ++ s.s} ;
|
EmbedS s = {s = conjThat ++ s.s} ;
|
||||||
EmbedQS qs = {s = qs.s ! QIndir} ;
|
EmbedQS qs = {s = qs.s ! QIndir} ;
|
||||||
EmbedVP vp = {s = infVP False vp (agrP3 Sg)} ; --- agr
|
EmbedVP vp = {s = infVP False vp (agrP3 Sg)} ; --- agr
|
||||||
|
|
||||||
UseCl t a p cl = {s = t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! ctr p.p ! ODir} ;
|
UseCl t a p cl = {
|
||||||
UseQCl t a p cl = {s = \\q => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! ctr p.p ! q} ;
|
s = t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! ctr p.p ! ODir
|
||||||
|
} ;
|
||||||
|
UseQCl t a p cl = {
|
||||||
|
s = \\q => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! ctr p.p ! q
|
||||||
|
} ;
|
||||||
UseRCl t a p cl = {
|
UseRCl t a p cl = {
|
||||||
s = \\r => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! ctr p.p ! r ;
|
s = \\r => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! ctr p.p ! r ;
|
||||||
c = cl.c
|
c = cl.c
|
||||||
} ;
|
} ;
|
||||||
|
UseSlash t a p cl = {
|
||||||
|
s = t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! ctr p.p ! ODir ;
|
||||||
|
c2 = cl.c2
|
||||||
|
} ;
|
||||||
|
|
||||||
AdvS a s = {s = a.s ++ "," ++ s.s} ;
|
AdvS a s = {s = a.s ++ "," ++ s.s} ;
|
||||||
|
|
||||||
@@ -61,4 +74,4 @@ concrete SentenceEng of Sentence = CatEng ** open Prelude, ResEng in {
|
|||||||
mkClause (np.s ! Nom) np.a
|
mkClause (np.s ! Nom) np.a
|
||||||
(insertObj (\\_ => conjThat ++ s.s) (predV vs)) **
|
(insertObj (\\_ => conjThat ++ s.s) (predV vs)) **
|
||||||
{c2 = s.c2} ;
|
{c2 = s.c2} ;
|
||||||
-}
|
-}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ concrete CatFin of Cat = CommonX ** open ResFin, Prelude in {
|
|||||||
S = {s : Str} ;
|
S = {s : Str} ;
|
||||||
QS = {s : Str} ;
|
QS = {s : Str} ;
|
||||||
RS = {s : Agr => Str ; c : NPForm} ;
|
RS = {s : Agr => Str ; c : NPForm} ;
|
||||||
|
SlashS = {s : Str ; c2 : Compl} ;
|
||||||
|
|
||||||
-- Sentence
|
-- Sentence
|
||||||
|
|
||||||
|
|||||||
@@ -53,6 +53,16 @@ concrete SentenceFin of Sentence = CatFin ** open Prelude, ResFin in {
|
|||||||
c2 = prep
|
c2 = prep
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
SlashVS np vs slash = {
|
||||||
|
s = \\t,a,p =>
|
||||||
|
(mkClause (subjForm np vs.sc) np.a
|
||||||
|
(insertExtrapos ("että" ++ slash.s)
|
||||||
|
(predV vs))
|
||||||
|
).s ! t ! a ! p ! SDecl ;
|
||||||
|
c2 = slash.c2
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
EmbedS s = {s = "että" ++ s.s} ;
|
EmbedS s = {s = "että" ++ s.s} ;
|
||||||
EmbedQS qs = {s = qs.s} ;
|
EmbedQS qs = {s = qs.s} ;
|
||||||
EmbedVP vp = {s = infVP (NPCase Nom) Pos (agrP3 Sg) vp} ; --- case,pol,agr
|
EmbedVP vp = {s = infVP (NPCase Nom) Pos (agrP3 Sg) vp} ; --- case,pol,agr
|
||||||
@@ -63,7 +73,11 @@ concrete SentenceFin of Sentence = CatFin ** open Prelude, ResFin in {
|
|||||||
s = \\r => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! r ;
|
s = \\r => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! r ;
|
||||||
c = cl.c
|
c = cl.c
|
||||||
} ;
|
} ;
|
||||||
|
UseSlash t a p cl = {
|
||||||
|
s = t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ;
|
||||||
|
c2 = cl.c2
|
||||||
|
} ;
|
||||||
|
|
||||||
AdvS a s = {s = a.s ++ "," ++ s.s} ;
|
AdvS a s = {s = a.s ++ s.s} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ concrete CatGer of Cat =
|
|||||||
S = {s : Order => Str} ;
|
S = {s : Order => Str} ;
|
||||||
QS = {s : QForm => Str} ;
|
QS = {s : QForm => Str} ;
|
||||||
RS = {s : GenNum => Str ; c : Case} ;
|
RS = {s : GenNum => Str ; c : Case} ;
|
||||||
|
SlashS = {s : Order => Str} ** {c2 : Preposition} ;
|
||||||
|
|
||||||
-- Sentence
|
-- Sentence
|
||||||
|
|
||||||
|
|||||||
@@ -39,11 +39,16 @@ concrete SentenceGer of Sentence = CatGer ** open ResGer, Prelude in {
|
|||||||
|
|
||||||
SlashPrep cl prep = cl ** {c2 = prep} ;
|
SlashPrep cl prep = cl ** {c2 = prep} ;
|
||||||
|
|
||||||
|
SlashVS np vs slash =
|
||||||
|
mkClause (np.s ! Nom) np.a
|
||||||
|
(insertExtrapos (conjThat ++ slash.s ! Sub) (predV vs)) **
|
||||||
|
{c2 = slash.c2} ;
|
||||||
|
|
||||||
EmbedS s = {s = conjThat ++ s.s ! Sub} ;
|
EmbedS s = {s = conjThat ++ s.s ! Sub} ;
|
||||||
EmbedQS qs = {s = qs.s ! QIndir} ;
|
EmbedQS qs = {s = qs.s ! QIndir} ;
|
||||||
EmbedVP vp = {s = useInfVP False vp} ;
|
EmbedVP vp = {s = useInfVP False vp} ;
|
||||||
|
|
||||||
UseCl t a p cl = {
|
UseCl t a p cl = {
|
||||||
s = \\o => t.s ++ a.s ++ p.s ++ cl.s ! t.m ! t.t ! a.a ! p.p ! o
|
s = \\o => t.s ++ a.s ++ p.s ++ cl.s ! t.m ! t.t ! a.a ! p.p ! o
|
||||||
} ;
|
} ;
|
||||||
UseQCl t a p cl = {
|
UseQCl t a p cl = {
|
||||||
@@ -53,7 +58,11 @@ concrete SentenceGer of Sentence = CatGer ** open ResGer, Prelude in {
|
|||||||
s = \\r => t.s ++ a.s ++ p.s ++ cl.s ! t.m ! t.t ! a.a ! p.p ! r ;
|
s = \\r => t.s ++ a.s ++ p.s ++ cl.s ! t.m ! t.t ! a.a ! p.p ! r ;
|
||||||
c = cl.c
|
c = cl.c
|
||||||
} ;
|
} ;
|
||||||
|
UseSlash t a p cl = {
|
||||||
|
s = \\o => t.s ++ a.s ++ p.s ++ cl.s ! t.m ! t.t ! a.a ! p.p ! o ;
|
||||||
|
c2 = cl.c2
|
||||||
|
} ;
|
||||||
|
|
||||||
AdvS a s = {s = \\o => a.s ++ "," ++ s.s ! o} ;
|
AdvS a s = {s = \\o => a.s ++ s.s ! Inv} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,11 @@ incomplete concrete CatRomance of Cat =
|
|||||||
S = {s : Mood => Str} ;
|
S = {s : Mood => Str} ;
|
||||||
QS = {s : QForm => Str} ;
|
QS = {s : QForm => Str} ;
|
||||||
RS = {s : Mood => Agr => Str ; c : Case} ;
|
RS = {s : Mood => Agr => Str ; c : Case} ;
|
||||||
|
SlashS = {
|
||||||
|
s : AAgr => Mood => Str ;
|
||||||
|
c2 : Compl
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
-- Sentence
|
-- Sentence
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,8 @@ incomplete concrete NounRomance of Noun =
|
|||||||
g = cn.g ;
|
g = cn.g ;
|
||||||
n = det.n
|
n = det.n
|
||||||
in {
|
in {
|
||||||
s = \\c => det.s ! g ! npform2case c ++ cn.s ! n ;
|
s = \\c => let cs = npform2case c in
|
||||||
|
prepCase cs ++ det.s ! g ! cs ++ cn.s ! n ;
|
||||||
a = agrP3 g n ;
|
a = agrP3 g n ;
|
||||||
hasClit = False
|
hasClit = False
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -43,16 +43,35 @@ incomplete concrete SentenceRomance of Sentence =
|
|||||||
c2 = {s = prep.s ; c = prep.c ; isDir = False}
|
c2 = {s = prep.s ; c = prep.c ; isDir = False}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
SlashVS np vs slash =
|
||||||
|
{s = \\d,ag =>
|
||||||
|
(mkClause
|
||||||
|
(np.s ! Aton Nom) np.hasClit np.a
|
||||||
|
(insertExtrapos (\\b => conjThat ++ slash.s ! ag ! (vs.m ! b)) --- ag?
|
||||||
|
(predV vs))
|
||||||
|
).s ! d ;
|
||||||
|
c2 = slash.c2
|
||||||
|
} ;
|
||||||
|
|
||||||
EmbedS s = {s = conjThat ++ s.s ! Indic} ; --- mood
|
EmbedS s = {s = conjThat ++ s.s ! Indic} ; --- mood
|
||||||
EmbedQS qs = {s = qs.s ! QIndir} ;
|
EmbedQS qs = {s = qs.s ! QIndir} ;
|
||||||
EmbedVP vp = {s = infVP vp (agrP3 Masc Sg)} ; --- agr ---- compl
|
EmbedVP vp = {s = infVP vp (agrP3 Masc Sg)} ; --- agr ---- compl
|
||||||
|
|
||||||
UseCl t a p cl = {s = \\o => t.s ++ a.s ++ p.s ++ cl.s ! DDir ! t.t ! a.a ! p.p ! o} ;
|
UseCl t a p cl = {
|
||||||
UseQCl t a p cl = {s = \\q => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! q} ;
|
s = \\o => t.s ++ a.s ++ p.s ++ cl.s ! DDir ! t.t ! a.a ! p.p ! o
|
||||||
|
} ;
|
||||||
|
UseQCl t a p cl = {
|
||||||
|
s = \\q => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! q
|
||||||
|
} ;
|
||||||
UseRCl t a p cl = {
|
UseRCl t a p cl = {
|
||||||
s = \\r,ag => t.s ++ a.s ++ p.s ++ cl.s ! ag ! t.t ! a.a ! p.p ! r ;
|
s = \\r,ag => t.s ++ a.s ++ p.s ++ cl.s ! ag ! t.t ! a.a ! p.p ! r ;
|
||||||
c = cl.c
|
c = cl.c
|
||||||
} ;
|
} ;
|
||||||
|
UseSlash t a p cl = {
|
||||||
|
s = \\agr,mo =>
|
||||||
|
t.s ++ a.s ++ p.s ++ cl.s ! DDir ! agr ! t.t ! a.a ! p.p ! mo ;
|
||||||
|
c2 = cl.c2
|
||||||
|
} ;
|
||||||
|
|
||||||
AdvS a s = {s = \\o => a.s ++ "," ++ s.s ! o} ;
|
AdvS a s = {s = \\o => a.s ++ "," ++ s.s ! o} ;
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ concrete CatRus of Cat = CommonX ** open ResRus, Prelude in {
|
|||||||
S = {s : Str} ;
|
S = {s : Str} ;
|
||||||
QS = {s : QForm => Str} ;
|
QS = {s : QForm => Str} ;
|
||||||
RS = {s : GenNum => Case => Animacy => Str} ;
|
RS = {s : GenNum => Case => Animacy => Str} ;
|
||||||
|
SlashS = {s : Str; s2: Str ; c: Case} ;
|
||||||
|
|
||||||
-- Sentence
|
-- Sentence
|
||||||
-- clause (variable tense) e.g. "John walks"/"John walked"
|
-- clause (variable tense) e.g. "John walks"/"John walked"
|
||||||
|
|||||||
@@ -1,90 +1,111 @@
|
|||||||
|
|
||||||
--# -path=.:../abstract:../common:../../prelude
|
--# -path=.:../abstract:../common:../../prelude
|
||||||
|
|
||||||
|
|
||||||
concrete SentenceRus of Sentence = CatRus ** open Prelude, ResRus in {
|
concrete SentenceRus of Sentence = CatRus ** open Prelude, ResRus in {
|
||||||
|
|
||||||
flags optimize=all_subs ; coding=utf8 ;
|
flags optimize=all_subs ; coding=utf8 ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
|
|
||||||
PredVP Ya tebyaNeVizhu = { s = \\b,clf =>
|
PredVP Ya tebyaNeVizhu = { s = \\b,clf =>
|
||||||
let {
|
let {
|
||||||
ya = Ya.s ! (case clf of {
|
ya = Ya.s ! (case clf of {
|
||||||
ClInfinit => (mkPronForm Acc No NonPoss);
|
ClInfinit => (mkPronForm Acc No NonPoss);
|
||||||
_ => (mkPronForm Nom No NonPoss)
|
_ => (mkPronForm Nom No NonPoss)
|
||||||
});
|
});
|
||||||
ne = case b of {Pos=>""; Neg=>"не"};
|
ne = case b of {Pos=>""; Neg=>"не"};
|
||||||
|
vizhu = tebyaNeVizhu.s ! clf ! (pgNum Ya.g Ya.n)! Ya.p;
|
||||||
vizhu = tebyaNeVizhu.s ! clf ! (pgNum Ya.g Ya.n)! Ya.p;
|
khorosho = tebyaNeVizhu.s2 ;
|
||||||
khorosho = tebyaNeVizhu.s2 ;
|
tebya = tebyaNeVizhu.s3 ! (pgen2gen Ya.g) ! Ya.n
|
||||||
tebya = tebyaNeVizhu.s3 ! (pgen2gen Ya.g) ! Ya.n
|
}
|
||||||
}
|
in
|
||||||
in
|
if_then_else Str tebyaNeVizhu.negBefore
|
||||||
if_then_else Str tebyaNeVizhu.negBefore
|
(ya ++ ne ++ vizhu ++ tebya ++ khorosho)
|
||||||
(ya ++ ne ++ vizhu ++ tebya ++ khorosho)
|
(ya ++ vizhu ++ ne ++ tebya ++ khorosho)
|
||||||
(ya ++ vizhu ++ ne ++ tebya ++ khorosho)
|
} ;
|
||||||
} ;
|
|
||||||
|
|
||||||
|
PredSCVP sc vp = { s = \\b,clf =>
|
||||||
PredSCVP sc vp = { s = \\b,clf =>
|
let {
|
||||||
let {
|
ne = case b of {Pos=>""; Neg=>"не"};
|
||||||
ne = case b of {Pos=>""; Neg=>"не"};
|
vizhu = vp.s ! clf ! (ASg Neut)! P3;
|
||||||
|
tebya = vp.s3 ! Neut ! Sg
|
||||||
vizhu = vp.s ! clf ! (ASg Neut)! P3;
|
}
|
||||||
tebya = vp.s3 ! Neut ! Sg
|
in
|
||||||
}
|
if_then_else Str vp.negBefore
|
||||||
in
|
(sc.s ++ ne ++ vizhu ++ tebya)
|
||||||
if_then_else Str vp.negBefore
|
(sc.s ++ vizhu ++ ne ++ tebya)
|
||||||
(sc.s ++ ne ++ vizhu ++ tebya)
|
} ;
|
||||||
(sc.s ++ vizhu ++ ne ++ tebya)
|
|
||||||
} ;
|
SlashV2 ivan lubit = { s=\\b,clf => ivan.s ! PF Nom No NonPoss ++
|
||||||
|
lubit.s! (getActVerbForm clf (pgen2gen ivan.g) ivan.n ivan.p) ;
|
||||||
SlashV2 ivan lubit = { s=\\b,clf => ivan.s ! PF Nom No NonPoss ++
|
s2=lubit.s2; c=lubit.c };
|
||||||
lubit.s! (getActVerbForm clf (pgen2gen ivan.g) ivan.n ivan.p) ;
|
|
||||||
s2=lubit.s2; c=lubit.c };
|
SlashVVV2 ivan khotet lubit =
|
||||||
|
{ s=\\b,clf => ivan.s ! PF Nom No NonPoss ++ khotet.s! (getActVerbForm clf (pgen2gen ivan.g) ivan.n ivan.p) ++ lubit.s! VFORM Act VINF ;
|
||||||
SlashVVV2 ivan khotet lubit =
|
s2=lubit.s2;
|
||||||
{ s=\\b,clf => ivan.s ! PF Nom No NonPoss ++ khotet.s! (getActVerbForm clf (pgen2gen ivan.g) ivan.n ivan.p) ++ lubit.s! VFORM Act VINF ;
|
c=lubit.c };
|
||||||
s2=lubit.s2;
|
|
||||||
c=lubit.c };
|
AdvSlash slash adv = {
|
||||||
|
s = \\b,clf => slash.s ! b ! clf ++ adv.s ;
|
||||||
AdvSlash slash adv = {
|
c = slash.c;
|
||||||
s = \\b,clf => slash.s ! b ! clf ++ adv.s ;
|
s2 = slash.s2;
|
||||||
c = slash.c;
|
} ;
|
||||||
s2 = slash.s2;
|
|
||||||
} ;
|
SlashPrep cl p = {s=cl.s; s2=p.s; c=p.c} ;
|
||||||
|
|
||||||
SlashPrep cl p = {s=cl.s; s2=p.s; c=p.c} ;
|
--- AR 3/11/2007
|
||||||
|
SlashVS ivan vidit tuUlubaeshsya = {
|
||||||
ImpVP inf = {s = \\pol, g,n =>
|
s=\\b,clf => ivan.s ! PF Nom No NonPoss ++
|
||||||
let
|
vidit.s! (getActVerbForm clf (pgen2gen ivan.g) ivan.n ivan.p) ++
|
||||||
dont = case pol of {
|
[", что"] ++ tuUlubaeshsya.s ;
|
||||||
Neg => "не" ;
|
s2=tuUlubaeshsya.s2;
|
||||||
_ => []
|
c=tuUlubaeshsya.c
|
||||||
}
|
} ;
|
||||||
in
|
|
||||||
dont ++ inf.s ! ClImper ! (gNum g n )!P2 ++
|
|
||||||
inf.s2++inf.s3!g!n
|
|
||||||
} ;
|
ImpVP inf = {s = \\pol, g,n =>
|
||||||
|
let
|
||||||
EmbedS s = {s = "что" ++ s.s} ;
|
dont = case pol of {
|
||||||
-- In Russian "Whether you go" transformed in "go whether you":
|
Neg => "не" ;
|
||||||
EmbedQS qs = {s = qs.s ! QIndir} ;
|
_ => []
|
||||||
EmbedVP vp = {s = vp.s2 ++ vp.s!ClInfinit!(ASg Masc) !P3 ++ vp.s3!Masc!Sg} ;
|
}
|
||||||
|
in
|
||||||
|
dont ++ inf.s ! ClImper ! (gNum g n )!P2 ++
|
||||||
|
inf.s2++inf.s3!g!n
|
||||||
|
} ;
|
||||||
|
|
||||||
|
EmbedS s = {s = "что" ++ s.s} ;
|
||||||
|
-- In Russian "Whether you go" transformed in "go whether you":
|
||||||
|
EmbedQS qs = {s = qs.s ! QIndir} ;
|
||||||
|
EmbedVP vp = {s = vp.s2 ++ vp.s!ClInfinit!(ASg Masc) !P3 ++ vp.s3!Masc!Sg} ;
|
||||||
|
|
||||||
|
UseCl t a p cl = {s = case t.t of {
|
||||||
Cond => cl.s! p.p ! ClCondit ; --# notpresent
|
Cond => cl.s! p.p ! ClCondit ; --# notpresent
|
||||||
UseCl t a p cl = {s = case t.t of {
|
_ => cl.s! p.p ! ClIndic (getTense t.t) a.a}};
|
||||||
Cond => cl.s! p.p ! ClCondit ; --# notpresent
|
|
||||||
_ => cl.s! p.p ! ClIndic (getTense t.t) a.a}};
|
UseQCl t a p qcl= {s = case t.t of {
|
||||||
Cond => qcl.s! p.p ! ClCondit ; --# notpresent
|
Cond => qcl.s! p.p ! ClCondit ; --# notpresent
|
||||||
UseQCl t a p qcl= {s = case t.t of {
|
_ => qcl.s!p.p! ClIndic (getTense t.t) a.a }};
|
||||||
Cond => qcl.s! p.p ! ClCondit ; --# notpresent
|
|
||||||
_ => qcl.s!p.p! ClIndic (getTense t.t) a.a }};
|
UseRCl t a p rcl ={s = \\gn,c,anim => case t.t of {
|
||||||
Cond => [", "] ++ rcl.s! p.p ! ClCondit ! gn !c !anim ; --# notpresent
|
Cond => [", "] ++ rcl.s! p.p ! ClCondit ! gn !c !anim ; --# notpresent
|
||||||
UseRCl t a p rcl ={s = \\gn,c,anim => case t.t of {
|
_ => [", "] ++ rcl.s! p.p ! ClIndic (getTense t.t) a.a !gn !c !anim}};
|
||||||
|
|
||||||
|
UseSlash t a p cl = {
|
||||||
|
s = case t.t of {
|
||||||
|
Cond => cl.s! p.p ! ClCondit ; --# notpresent
|
||||||
|
_ => cl.s! p.p ! ClIndic (getTense t.t) a.a
|
||||||
|
} ;
|
||||||
|
s2 = cl.s2 ;
|
||||||
|
c = cl.c
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
AdvS a s = {s = a.s ++ "," ++ s.s} ; ---- AR 19/6/2007
|
AdvS a s = {s = a.s ++ "," ++ s.s} ; ---- AR 19/6/2007
|
||||||
|
|
||||||
AdvS a s = {s = a.s ++ "," ++ s.s} ; ---- AR 19/6/2007
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,243 +1,243 @@
|
|||||||
|
|
||||||
--# -path=.:../abstract:../common:../../prelude
|
--# -path=.:../abstract:../common:../../prelude
|
||||||
|
|
||||||
concrete VerbRus of Verb = CatRus ** open ResRus, Prelude in {
|
concrete VerbRus of Verb = CatRus ** open ResRus, Prelude in {
|
||||||
|
|
||||||
flags optimize=all_subs ; coding=utf8 ;
|
flags optimize=all_subs ; coding=utf8 ;
|
||||||
lin
|
lin
|
||||||
CompNP masha =
|
CompNP masha =
|
||||||
{ s=\\clf,gn,p => case clf of
|
{ s=\\clf,gn,p => case clf of
|
||||||
{
|
{
|
||||||
(ClIndic Present _) => masha.s ! (mkPronForm Nom No NonPoss) ;
|
(ClIndic Present _) => masha.s ! (mkPronForm Nom No NonPoss) ;
|
||||||
(ClIndic PastRus _) => case gn of
|
(ClIndic PastRus _) => case gn of
|
||||||
{ (ASg Fem) =>"была"++masha.s ! (mkPronForm Inst No NonPoss);
|
{ (ASg Fem) =>"была"++masha.s ! (mkPronForm Inst No NonPoss);
|
||||||
(ASg Masc) =>"был" ++ masha.s!(mkPronForm Inst No NonPoss);
|
(ASg Masc) =>"был" ++ masha.s!(mkPronForm Inst No NonPoss);
|
||||||
(ASg Neut) =>"было" ++ masha.s!(mkPronForm Inst No NonPoss);
|
(ASg Neut) =>"было" ++ masha.s!(mkPronForm Inst No NonPoss);
|
||||||
APl => "были" ++ masha.s ! (mkPronForm Inst No NonPoss)
|
APl => "были" ++ masha.s ! (mkPronForm Inst No NonPoss)
|
||||||
};
|
};
|
||||||
(ClIndic Future _) => case gn of
|
(ClIndic Future _) => case gn of
|
||||||
{ APl => case p of
|
{ APl => case p of
|
||||||
{ P3 => "будут"++masha.s ! (mkPronForm Inst No NonPoss);
|
{ P3 => "будут"++masha.s ! (mkPronForm Inst No NonPoss);
|
||||||
P2 => "будете"++masha.s !(mkPronForm Inst No NonPoss);
|
P2 => "будете"++masha.s !(mkPronForm Inst No NonPoss);
|
||||||
P1 => "будем"++masha.s ! (mkPronForm Inst No NonPoss)
|
P1 => "будем"++masha.s ! (mkPronForm Inst No NonPoss)
|
||||||
};
|
};
|
||||||
(ASg _) => case p of
|
(ASg _) => case p of
|
||||||
{ P3=>"будет"++masha.s!(mkPronForm Inst No NonPoss) ;
|
{ P3=>"будет"++masha.s!(mkPronForm Inst No NonPoss) ;
|
||||||
P2 => "будешь"++ masha.s ! (mkPronForm Inst No NonPoss) ;
|
P2 => "будешь"++ masha.s ! (mkPronForm Inst No NonPoss) ;
|
||||||
P1=> "буду"++ masha.s ! (mkPronForm Inst No NonPoss)
|
P1=> "буду"++ masha.s ! (mkPronForm Inst No NonPoss)
|
||||||
} --case p
|
} --case p
|
||||||
}; --case gn
|
}; --case gn
|
||||||
ClCondit => "" ;
|
ClCondit => "" ;
|
||||||
ClImper => case (numGNum gn) of
|
ClImper => case (numGNum gn) of
|
||||||
{Sg => "будь" ++ masha.s ! (mkPronForm Inst No NonPoss);
|
{Sg => "будь" ++ masha.s ! (mkPronForm Inst No NonPoss);
|
||||||
Pl => "будьте" ++ masha.s ! (mkPronForm Inst No NonPoss)
|
Pl => "будьте" ++ masha.s ! (mkPronForm Inst No NonPoss)
|
||||||
};
|
};
|
||||||
ClInfin => "быть" ++ masha.s ! (mkPronForm Inst No NonPoss)
|
ClInfin => "быть" ++ masha.s ! (mkPronForm Inst No NonPoss)
|
||||||
}; -- case clf
|
}; -- case clf
|
||||||
asp = Imperfective ;
|
asp = Imperfective ;
|
||||||
w = Act;
|
w = Act;
|
||||||
negBefore = True;
|
negBefore = True;
|
||||||
s2 = "";
|
s2 = "";
|
||||||
s3 = \\g,n => ""
|
s3 = \\g,n => ""
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
CompAP zloj ={
|
CompAP zloj ={
|
||||||
s= \\clf,gn,p => case clf of {
|
s= \\clf,gn,p => case clf of {
|
||||||
|
-- person is ignored !
|
||||||
-- person is ignored !
|
ClInfinit => "быть" ++ zloj.s ! AF Inst Animate (ASg Masc) ;
|
||||||
ClInfinit => "быть" ++ zloj.s ! AF Inst Animate (ASg Masc) ;
|
ClImper => case gn of
|
||||||
ClImper => case gn of
|
{ (ASg _) => "будь" ++ zloj.s ! AF Inst Animate (ASg Masc);
|
||||||
{ (ASg _) => "будь" ++ zloj.s ! AF Inst Animate (ASg Masc);
|
APl => "будьте" ++ zloj.s ! AF Inst Animate APl
|
||||||
APl => "будьте" ++ zloj.s ! AF Inst Animate APl
|
};
|
||||||
};
|
-- infinitive does not save GenNum,
|
||||||
-- infinitive does not save GenNum,
|
-- but indicative does for the sake of adjectival predication !
|
||||||
-- but indicative does for the sake of adjectival predication !
|
ClIndic Present _ => zloj.s ! AF Nom Animate gn ;
|
||||||
ClIndic Present _ => zloj.s ! AF Nom Animate gn ;
|
ClIndic PastRus _ => case gn of
|
||||||
ClIndic PastRus _ => case gn of
|
{ (ASg Fem) => "была" ++ zloj.s! AF Nom Animate (ASg Fem);
|
||||||
{ (ASg Fem) => "была" ++ zloj.s! AF Nom Animate (ASg Fem);
|
(ASg Masc) => "был" ++ zloj.s! AF Nom Animate (ASg Masc);
|
||||||
|
(ASg Neut) => "был" ++ zloj.s! AF Nom Animate (ASg Neut);
|
||||||
(ASg Masc) => "был" ++ zloj.s! AF Nom Animate (ASg Masc);
|
APl => "были" ++ zloj.s! AF Nom Animate APl
|
||||||
(ASg Neut) => "был" ++ zloj.s! AF Nom Animate (ASg Neut);
|
};
|
||||||
APl => "были" ++ zloj.s! AF Nom Animate APl
|
ClIndic Future _ => case gn of
|
||||||
};
|
{ APl => case p of
|
||||||
ClIndic Future _ => case gn of
|
{ P3 => "будут" ++ zloj.s! AF Nom Animate APl;
|
||||||
{ APl => case p of
|
P2 => "будете" ++ zloj.s! AF Nom Animate APl;
|
||||||
{ P3 => "будут" ++ zloj.s! AF Nom Animate APl;
|
P1 => "будем" ++ zloj.s! AF Nom Animate APl
|
||||||
P2 => "будете" ++ zloj.s! AF Nom Animate APl;
|
} ;
|
||||||
P1 => "будем" ++ zloj.s! AF Nom Animate APl
|
(ASg _) => case p of
|
||||||
} ;
|
{P3 => "будет" ++ zloj.s! AF Nom Animate (ASg (genGNum gn));
|
||||||
(ASg _) => case p of
|
P2 => "будешь"++ zloj.s! AF Nom Animate (ASg (genGNum gn));
|
||||||
{P3 => "будет" ++ zloj.s! AF Nom Animate (ASg (genGNum gn));
|
P1=> "буду" ++ zloj.s! AF Nom Animate (ASg (genGNum gn))
|
||||||
P2 => "будешь"++ zloj.s! AF Nom Animate (ASg (genGNum gn));
|
}
|
||||||
P1=> "буду" ++ zloj.s! AF Nom Animate (ASg (genGNum gn))
|
};
|
||||||
}
|
ClCondit => ""
|
||||||
};
|
} ;
|
||||||
ClCondit => ""
|
|
||||||
} ;
|
asp = Imperfective ;
|
||||||
|
w = Act;
|
||||||
|
negBefore = True;
|
||||||
asp = Imperfective ;
|
s2 = "";
|
||||||
w = Act;
|
s3 = \\g,n=> ""
|
||||||
negBefore = True;
|
} ;
|
||||||
s2 = "";
|
|
||||||
s3 = \\g,n=> ""
|
|
||||||
} ;
|
-- Verb phrases can also be formed from adjectives (" молод"),
|
||||||
|
-- common nouns (" человек"), and noun phrases (" самый молодой").
|
||||||
|
-- The third rule is overgenerating: " каждый человек" has to be ruled out
|
||||||
-- Verb phrases can also be formed from adjectives (" молод"),
|
-- on semantic grounds.
|
||||||
-- common nouns (" человек"), and noun phrases (" самый молодой").
|
-- Note: we omit a dash "-" because it will cause problems with negation word order:
|
||||||
-- The third rule is overgenerating: " каждый человек" has to be ruled out
|
-- "Я не - волшебник". Alternatively, we can consider verb-based VP and
|
||||||
-- on semantic grounds.
|
-- all the rest.
|
||||||
|
|
||||||
-- Note: we omit a dash "-" because it will cause problems with negation word order:
|
CompAdv zloj =
|
||||||
-- "Я не - волшебник". Alternatively, we can consider verb-based VP and
|
{ s= \\clf,gn,p => case clf of {
|
||||||
-- all the rest.
|
ClImper => case gn of
|
||||||
|
{ ASg _ => "будь" ++ zloj.s; -- person is ignored !
|
||||||
CompAdv zloj =
|
APl => "будьте" ++ zloj.s
|
||||||
{ s= \\clf,gn,p => case clf of {
|
};
|
||||||
ClImper => case gn of
|
ClInfinit => "быть" ++ zloj.s;
|
||||||
{ ASg _ => "будь" ++ zloj.s; -- person is ignored !
|
ClIndic Present _ => zloj.s ;
|
||||||
APl => "будьте" ++ zloj.s
|
ClIndic PastRus _ => case gn of
|
||||||
};
|
{ (ASg Fem) => "была" ++ zloj.s;
|
||||||
ClInfinit => "быть" ++ zloj.s;
|
(ASg Masc) => "был" ++ zloj.s;
|
||||||
ClIndic Present _ => zloj.s ;
|
(ASg Neut) => "было" ++ zloj.s;
|
||||||
ClIndic PastRus _ => case gn of
|
APl => "были" ++ zloj.s
|
||||||
{ (ASg Fem) => "была" ++ zloj.s;
|
};
|
||||||
(ASg Masc) => "был" ++ zloj.s;
|
ClIndic Future _ => case gn of
|
||||||
(ASg Neut) => "было" ++ zloj.s;
|
{ (ASg _) => "будет" ++ zloj.s;
|
||||||
APl => "были" ++ zloj.s
|
APl => "будут" ++ zloj.s
|
||||||
};
|
};
|
||||||
ClIndic Future _ => case gn of
|
ClCondit => ""
|
||||||
{ (ASg _) => "будет" ++ zloj.s;
|
} ;
|
||||||
APl => "будут" ++ zloj.s
|
asp = Imperfective ;
|
||||||
};
|
w = Act;
|
||||||
ClCondit => ""
|
s2 = "";
|
||||||
} ;
|
negBefore = True;
|
||||||
asp = Imperfective ;
|
s3 = \\g,n => ""
|
||||||
w = Act;
|
} ;
|
||||||
s2 = "";
|
|
||||||
negBefore = True;
|
|
||||||
s3 = \\g,n => ""
|
|
||||||
} ;
|
UseComp comp = comp ;
|
||||||
|
UseVS, UseVQ = \vv -> {s = vv.s ; asp = vv.asp; s2 = [] ; c = Acc} ;
|
||||||
|
|
||||||
|
-- CompAP ap = ap ;
|
||||||
UseComp comp = comp ;
|
-- CompNP np = {s = \\_ => np.s ! Acc} ;
|
||||||
UseVS, UseVQ = \vv -> {s = vv.s ; asp = vv.asp; s2 = [] ; c = Acc} ;
|
-- CompAdv a = {s = \\_ => a.s} ;
|
||||||
|
|
||||||
-- CompAP ap = ap ;
|
|
||||||
-- CompNP np = {s = \\_ => np.s ! Acc} ;
|
-- A simple verb can be made into a verb phrase with an empty complement.
|
||||||
-- CompAdv a = {s = \\_ => a.s} ;
|
-- There are two versions, depending on if we want to negate the verb.
|
||||||
|
-- N.B. negation is *not* a function applicable to a verb phrase, since
|
||||||
|
-- double negations with "inte" are not grammatical.
|
||||||
-- A simple verb can be made into a verb phrase with an empty complement.
|
|
||||||
-- There are two versions, depending on if we want to negate the verb.
|
UseV se =
|
||||||
-- N.B. negation is *not* a function applicable to a verb phrase, since
|
{s=\\clf,gn,p => se.s ! (getActVerbForm clf (genGNum gn) (numGNum gn) p) ;
|
||||||
-- double negations with "inte" are not grammatical.
|
asp = se.asp ;
|
||||||
|
w=Act;
|
||||||
UseV se =
|
s2 = "";
|
||||||
{s=\\clf,gn,p => se.s ! (getActVerbForm clf (genGNum gn) (numGNum gn) p) ;
|
negBefore = True;
|
||||||
asp = se.asp ;
|
s3 = table{_=> table{_ => ""}}
|
||||||
w=Act;
|
} ;
|
||||||
s2 = "";
|
|
||||||
negBefore = True;
|
-- The rule for using transitive verbs is the complementization rule:
|
||||||
s3 = table{_=> table{_ => ""}}
|
ComplV2 se tu =
|
||||||
} ;
|
{s =\\clf,gn,p => se.s ! (getActVerbForm clf (genGNum gn) (numGNum gn) p)
|
||||||
|
++ se.s2 ++ tu.s ! (mkPronForm se.c No NonPoss) ;
|
||||||
-- The rule for using transitive verbs is the complementization rule:
|
asp = se.asp ;
|
||||||
ComplV2 se tu =
|
w = Act;
|
||||||
{s =\\clf,gn,p => se.s ! (getActVerbForm clf (genGNum gn) (numGNum gn) p)
|
s2 = "";
|
||||||
++ se.s2 ++ tu.s ! (mkPronForm se.c No NonPoss) ;
|
s3 = \\g,n => "";
|
||||||
asp = se.asp ;
|
negBefore = True
|
||||||
w = Act;
|
} ;
|
||||||
s2 = "";
|
|
||||||
s3 = \\g,n => "";
|
ComplV3 dat tu pivo =
|
||||||
negBefore = True
|
let
|
||||||
} ;
|
tebepivo = dat.s2 ++
|
||||||
|
tu.s ! PF dat.c No NonPoss ++ dat.s4 ++ pivo.s ! PF dat.c2 Yes NonPoss
|
||||||
ComplV3 dat tu pivo =
|
in
|
||||||
let
|
{s = \\clf,gn,p => dat.s ! (getActVerbForm clf (genGNum gn) (numGNum gn) p) ++ tebepivo ;
|
||||||
tebepivo = dat.s2 ++
|
asp = dat.asp ;
|
||||||
tu.s ! PF dat.c No NonPoss ++ dat.s4 ++ pivo.s ! PF dat.c2 Yes NonPoss
|
w = Act;
|
||||||
in
|
negBefore = True;
|
||||||
{s = \\clf,gn,p => dat.s ! (getActVerbForm clf (genGNum gn) (numGNum gn) p) ++ tebepivo ;
|
s2 = "";
|
||||||
asp = dat.asp ;
|
s3 = \\g,n=> ""
|
||||||
w = Act;
|
} ;
|
||||||
negBefore = True;
|
|
||||||
s2 = "";
|
ReflV2 v =
|
||||||
s3 = \\g,n=> ""
|
{ s = \\clf,gn,p => v.s ! (getActVerbForm clf (genGNum gn) (numGNum gn) p) ++ v.s2 ++ sebya!v.c;
|
||||||
} ;
|
asp = v.asp ;
|
||||||
|
w = Act;
|
||||||
ReflV2 v =
|
negBefore = True;
|
||||||
{ s = \\clf,gn,p => v.s ! (getActVerbForm clf (genGNum gn) (numGNum gn) p) ++ v.s2 ++ sebya!v.c;
|
s2 = "";
|
||||||
asp = v.asp ;
|
s3 = \\g,n=> ""
|
||||||
w = Act;
|
} ;
|
||||||
negBefore = True;
|
|
||||||
s2 = "";
|
-- To generate "сказал, что Иван гуляет" / "не сказал, что Иван гуляет":
|
||||||
s3 = \\g,n=> ""
|
ComplVS vidit tuUlubaeshsya =
|
||||||
} ;
|
{s = \\clf,gn,p => vidit.s ! (getActVerbForm clf (genGNum gn) (numGNum gn) p)
|
||||||
|
++ [", что"] ++ tuUlubaeshsya.s ;
|
||||||
-- To generate "сказал, что Иван гуляет" / "не сказал, что Иван гуляет":
|
asp = vidit.asp;
|
||||||
ComplVS vidit tuUlubaeshsya =
|
w = Act;
|
||||||
{s = \\clf,gn,p => vidit.s ! (getActVerbForm clf (genGNum gn) (numGNum gn) p)
|
s2="";
|
||||||
++ [", что"] ++ tuUlubaeshsya.s ;
|
negBefore = True;
|
||||||
asp = vidit.asp;
|
s3 = \\g,n => ""
|
||||||
w = Act;
|
} ;
|
||||||
s2="";
|
-- To generate "can walk"/"can't walk"; "tries to walk"/"does not try to walk":
|
||||||
negBefore = True;
|
-- The contraction of "not" is not provided, since it would require changing
|
||||||
s3 = \\g,n => ""
|
-- the verb parameter type.
|
||||||
} ;
|
|
||||||
-- To generate "can walk"/"can't walk"; "tries to walk"/"does not try to walk":
|
ComplVV putatsya bezhat =
|
||||||
-- The contraction of "not" is not provided, since it would require changing
|
{ s = \\clf,gn,p => putatsya.s ! (getActVerbForm clf (genGNum gn)
|
||||||
-- the verb parameter type.
|
(numGNum gn) p) ++ bezhat.s!ClInfinit !gn!p ;
|
||||||
|
asp = putatsya.asp ;
|
||||||
ComplVV putatsya bezhat =
|
w = Act;
|
||||||
{ s = \\clf,gn,p => putatsya.s ! (getActVerbForm clf (genGNum gn)
|
negBefore = True;
|
||||||
(numGNum gn) p) ++ bezhat.s!ClInfinit !gn!p ;
|
s2 = "";
|
||||||
asp = putatsya.asp ;
|
s3 =\\g,n => ""
|
||||||
w = Act;
|
} ;
|
||||||
negBefore = True;
|
ComplVQ dat esliOnPridet =
|
||||||
s2 = "";
|
{s = \\clf,gn,p => dat.s ! (getActVerbForm clf (genGNum gn) (numGNum gn) p) ++ esliOnPridet.s ! QDir ;
|
||||||
s3 =\\g,n => ""
|
asp = dat.asp ;
|
||||||
} ;
|
w = Act;
|
||||||
ComplVQ dat esliOnPridet =
|
negBefore = True;
|
||||||
{s = \\clf,gn,p => dat.s ! (getActVerbForm clf (genGNum gn) (numGNum gn) p) ++ esliOnPridet.s ! QDir ;
|
s2 = "";
|
||||||
asp = dat.asp ;
|
s3 = \\g,n=> ""
|
||||||
w = Act;
|
} ;
|
||||||
negBefore = True;
|
ComplVA vuglyadet molodoj =
|
||||||
s2 = "";
|
{s = \\clf,gn,p => vuglyadet.s ! (getActVerbForm clf (genGNum gn) (numGNum gn) p) ;
|
||||||
s3 = \\g,n=> ""
|
asp = vuglyadet.asp ;
|
||||||
} ;
|
w = Act;
|
||||||
ComplVA vuglyadet molodoj =
|
negBefore = True;
|
||||||
{s = \\clf,gn,p => vuglyadet.s ! (getActVerbForm clf (genGNum gn) (numGNum gn) p) ;
|
s2 = "";
|
||||||
asp = vuglyadet.asp ;
|
s3 = \\g,n => molodoj.s!(AF Inst Animate (gNum g n))
|
||||||
w = Act;
|
} ;
|
||||||
negBefore = True;
|
|
||||||
s2 = "";
|
ComplV2A obechat tu molodoj =
|
||||||
s3 = \\g,n => molodoj.s!(AF Inst Animate (gNum g n))
|
{s = \\clf,gn,p => obechat.s2++
|
||||||
} ;
|
obechat.s ! (getActVerbForm clf (genGNum gn) (numGNum gn) p) ++
|
||||||
|
tu.s ! PF obechat.c No NonPoss ++
|
||||||
ComplV2A obechat tu molodoj =
|
molodoj.s!AF Inst tu.anim (pgNum tu.g tu.n) ;
|
||||||
{s = \\clf,gn,p => obechat.s2++
|
asp = obechat.asp ;
|
||||||
obechat.s ! (getActVerbForm clf (genGNum gn) (numGNum gn) p) ++
|
w = Act;
|
||||||
tu.s ! PF obechat.c No NonPoss ++
|
negBefore = True;
|
||||||
molodoj.s!AF Inst tu.anim (pgNum tu.g tu.n) ;
|
s2 = "";
|
||||||
asp = obechat.asp ;
|
s3 = \\g,n =>""
|
||||||
w = Act;
|
} ;
|
||||||
negBefore = True;
|
AdvVP poet khorosho =
|
||||||
s2 = "";
|
{s = \\clf,gn,p => poet.s ! clf!gn!p; s2 = poet.s2 ++ khorosho.s; s3 = poet.s3;
|
||||||
s3 = \\g,n =>""
|
asp = poet.asp; w = poet.w; t = poet.t ; negBefore = poet.negBefore } ;
|
||||||
} ;
|
|
||||||
AdvVP poet khorosho =
|
AdVVP khorosho poet =
|
||||||
{s = \\clf,gn,p => poet.s ! clf!gn!p; s2 = poet.s2 ++ khorosho.s; s3 = poet.s3;
|
{s = \\clf,gn,p => poet.s ! clf!gn!p; s2 = khorosho.s ++ poet.s2; s3 = poet.s3;
|
||||||
asp = poet.asp; w = poet.w; t = poet.t ; negBefore = poet.negBefore } ;
|
asp = poet.asp; w = poet.w; t = poet.t ; negBefore = poet.negBefore } ;
|
||||||
|
|
||||||
AdVVP khorosho poet =
|
PassV2 se =
|
||||||
{s = \\clf,gn,p => poet.s ! clf!gn!p; s2 = khorosho.s ++ poet.s2; s3 = poet.s3;
|
{s=\\clf,gn,p => se.s ! (getPassVerbForm clf (genGNum gn) (numGNum gn) p) ;
|
||||||
asp = poet.asp; w = poet.w; t = poet.t ; negBefore = poet.negBefore } ;
|
asp=se.asp; w=Pass; s2 = se.s2;
|
||||||
|
negBefore = True;
|
||||||
PassV2 se =
|
s3 = table{_=> table{_ => ""}}
|
||||||
{s=\\clf,gn,p => se.s ! (getPassVerbForm clf (genGNum gn) (numGNum gn) p) ;
|
};
|
||||||
asp=se.asp; w=Pass; s2 = se.s2;
|
|
||||||
negBefore = True;
|
}
|
||||||
s3 = table{_=> table{_ => ""}}
|
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ incomplete concrete CatScand of Cat =
|
|||||||
S = {s : Order => Str} ;
|
S = {s : Order => Str} ;
|
||||||
QS = {s : QForm => Str} ;
|
QS = {s : QForm => Str} ;
|
||||||
RS = {s : Agr => Str ; c : NPForm} ;
|
RS = {s : Agr => Str ; c : NPForm} ;
|
||||||
|
SlashS = {s : Order => Str} ** {c2 : Str} ;
|
||||||
|
|
||||||
-- Sentence
|
-- Sentence
|
||||||
|
|
||||||
|
|||||||
@@ -36,16 +36,30 @@ incomplete concrete SentenceScand of Sentence =
|
|||||||
|
|
||||||
SlashPrep cl prep = cl ** {c2 = prep.s} ;
|
SlashPrep cl prep = cl ** {c2 = prep.s} ;
|
||||||
|
|
||||||
|
SlashVS np vs slash =
|
||||||
|
mkClause
|
||||||
|
(np.s ! nominative) np.a
|
||||||
|
(insertObj (\\_ => conjThat ++ slash.s ! Sub) (predV vs)) **
|
||||||
|
{c2 = slash.c2} ;
|
||||||
|
|
||||||
EmbedS s = {s = conjThat ++ s.s ! Sub} ;
|
EmbedS s = {s = conjThat ++ s.s ! Sub} ;
|
||||||
EmbedQS qs = {s = qs.s ! QIndir} ;
|
EmbedQS qs = {s = qs.s ! QIndir} ;
|
||||||
EmbedVP vp = {s = infMark ++ infVP vp (agrP3 utrum Sg)} ; --- agr
|
EmbedVP vp = {s = infMark ++ infVP vp (agrP3 utrum Sg)} ; --- agr
|
||||||
|
|
||||||
UseCl t a p cl = {s = \\o => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! o} ;
|
UseCl t a p cl = {
|
||||||
UseQCl t a p cl = {s = \\q => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! q} ;
|
s = \\o => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! o
|
||||||
|
} ;
|
||||||
|
UseQCl t a p cl = {
|
||||||
|
s = \\q => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! q
|
||||||
|
} ;
|
||||||
UseRCl t a p cl = {
|
UseRCl t a p cl = {
|
||||||
s = \\r => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! r ;
|
s = \\r => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! r ;
|
||||||
c = cl.c
|
c = cl.c
|
||||||
} ;
|
} ;
|
||||||
|
UseSlash t a p cl = {
|
||||||
|
s = \\o => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! o ;
|
||||||
|
c2 = cl.c2
|
||||||
|
} ;
|
||||||
|
|
||||||
AdvS a s = {s = \\o => a.s ++ "," ++ s.s ! o} ;
|
AdvS a s = {s = \\o => a.s ++ s.s ! Inv} ;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user