mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-09 04:59:31 -06:00
*** empty log message ***
This commit is contained in:
@@ -47,7 +47,7 @@ lincat
|
||||
|
||||
Det = Determiner ;
|
||||
-- = Adjective ** {n: Number; g: PronGen; c: Case} ;
|
||||
NDet = Adjective ** {g: PronGen; c: Case} ;
|
||||
NDet = NoNumberDeterminer ;
|
||||
-- "Det" without "Number" field
|
||||
|
||||
N2 = Function ;
|
||||
@@ -95,9 +95,9 @@ lincat
|
||||
-- = {s : Bool => ClForm => Str} ;
|
||||
S = Sentence ;
|
||||
-- = {s : Str} ;
|
||||
Slash = SentenceSlashNounPhrase ;
|
||||
-- sentence without NP, e.g. "John waits for (...)"
|
||||
-- = Sentence ** Complement ;
|
||||
Slash = SlashNounPhrase ;
|
||||
-- = Clause ** Complement ;
|
||||
-- = {s : Bool => ClForm => Str; s2: Str; c: Case} ;
|
||||
|
||||
RP = RelPron ;
|
||||
-- = {s : GenNum => Case => Animacy => Str} ;
|
||||
@@ -109,13 +109,14 @@ lincat
|
||||
-- = NounPhrase ;
|
||||
IDet = Determiner ;
|
||||
-- = Adjective ** {n: Number; g: PronGen; c: Case} ;
|
||||
|
||||
|
||||
IAdv = Adverb ;
|
||||
-- = {s : Str} ;
|
||||
|
||||
QS = Question ; -- question w. fixed tense
|
||||
-- = {s : QuestForm => Str} ;
|
||||
QCl = {s :Bool => ClForm => QuestForm => Str};
|
||||
QCl = QuestionCl ;
|
||||
-- = {s :Bool => ClForm => QuestForm => Str};
|
||||
|
||||
Imp = Imperative ;
|
||||
-- = { s: Gender => Number => Str } ;
|
||||
@@ -132,7 +133,8 @@ lincat
|
||||
ListNP = ListNounPhrase ;
|
||||
-- = { s1,s2 : PronForm => Str ; g: Gender ; anim : Animacy ;
|
||||
-- n : Number ; p : Person ; pron : Bool } ;
|
||||
ListAdv= {s1 : Str ; s2 : Str} ;
|
||||
ListAdv= ListAdverb ;
|
||||
-- = {s1, s2 : Str} ;
|
||||
|
||||
Phr = Utterance ;
|
||||
-- = {s : Str} ;
|
||||
@@ -153,7 +155,7 @@ lincat
|
||||
AS = Adverb ;
|
||||
-- = {s : Str} ;
|
||||
A2S = Adverb ** Complement;
|
||||
AV = Adjective ;
|
||||
AV = Adjective ; --- "eager to leave"
|
||||
-- = {s : AdjForm => Str} ;
|
||||
A2V = AdjCompl ;
|
||||
-- = Adjective ** Complement ;
|
||||
|
||||
@@ -5,9 +5,8 @@ lin
|
||||
|
||||
UsePN = nameNounPhrase ;
|
||||
ComplA2 = complAdj ;
|
||||
-- ComplAV : AV -> VPI -> AP ; -- "eager to leave"
|
||||
-- ComplObjA2V : A2V -> NP -> VPI -> AP ; -- "easy for us to convince"
|
||||
PredVP = predVerbPhrase ;
|
||||
ComplAV = complVerbAdj ;
|
||||
ComplObjA2V = complObjA2V ;
|
||||
UseA = adj2adjPhrase ;
|
||||
ModAP = modCommNounPhrase ;
|
||||
UseN = noun2CommNounPhrase ;
|
||||
@@ -18,8 +17,7 @@ lin
|
||||
AppN3 = appFun2 ;
|
||||
PositADeg = positAdjPhrase ;
|
||||
ComparADeg = comparAdjPhrase ;
|
||||
--- SuperlNP = superlNounPhrase ;
|
||||
-- SuperlADeg : ADeg -> AP ; -- "the oldest"
|
||||
SuperlADeg = superlAdjPhrase ;
|
||||
|
||||
|
||||
CNthatS = nounThatSentence ;
|
||||
@@ -33,23 +31,23 @@ lin
|
||||
DefOneNP = indefNounPhrase Sg ;
|
||||
DefNumNP = indefNounPhraseNum Pl ;
|
||||
MassNP = indefNounPhrase Sg;
|
||||
-- NDetNP : NDet -> Num -> CN -> NP ; -- "these (5) cars"
|
||||
-- NDetNum : NDet -> Num -> NP ; -- "these (5)"
|
||||
NDetNP = nDetNP ;
|
||||
NDetNum = nDetNum ;
|
||||
|
||||
PosVG = predVerbGroup True Present ;
|
||||
NegVG = predVerbGroup False Present ;
|
||||
|
||||
PredV = predVerb ;
|
||||
PredAP = predAdjective ;
|
||||
PredCN = predCommNoun ;
|
||||
PredV2 = complTransVerb ;
|
||||
PredV3 = complDitransVerb ;
|
||||
PredPassV = predPassVerb ;
|
||||
PredNP = predNounPhrase ;
|
||||
PredPP = predAdverb ;
|
||||
PredVS = complSentVerb ;
|
||||
PredVV = complVerbVerb ;
|
||||
VTrans = verbOfTransVerb ;
|
||||
--- PosVG = predVerbGroup True Present ;
|
||||
--- NegVG = predVerbGroup False Present ;
|
||||
--- PredVP = predVerbPhrase ;
|
||||
--- PredV = predVerb ;
|
||||
--- PredAP = predAdjective ;
|
||||
--- PredCN = predCommNoun ;
|
||||
--- PredV2 = complTransVerb ;
|
||||
--- PredV3 = complDitransVerb ;
|
||||
--- PredPassV = predPassVerb ;
|
||||
--- PredNP = predNounPhrase ;
|
||||
--- PredPP = predAdverb ;
|
||||
--- PredVS = complSentVerb ;
|
||||
--- PredVV = complVerbVerb ;
|
||||
--- VTrans = verbOfTransVerb ;
|
||||
|
||||
-- The main uses of verbs and verb phrases have been moved to the
|
||||
-- module $Verbphrase$ (deep $VP$ nesting) and its alternative,
|
||||
@@ -97,65 +95,67 @@ lin
|
||||
PNeg = {s = [] ; p = False} ;
|
||||
|
||||
|
||||
-- AdvPP : PP -> Adv ; -- "in London", "after the war"
|
||||
-- AdvAdv : AdA -> Adv -> Adv ; -- "very well"
|
||||
AdvPP x = x ;
|
||||
AdvAdv = advAdv ;
|
||||
|
||||
AdjAdv a = mkAdverb (a.s ! AdvF) ;
|
||||
PrepNP p = prepPhrase p ;
|
||||
AdvVPI = adVerbPhraseInf ;
|
||||
---AdvVP = adVerbPhrase ;
|
||||
---LocNP = locativeNounPhrase ;
|
||||
AdvCN = advCommNounPhrase ;
|
||||
AdvAP = advAdjPhrase ;
|
||||
|
||||
AdvCl = advClause ;
|
||||
AdCPhr = advSentencePhr ;
|
||||
AdvPhr = advSentencePhr ;
|
||||
|
||||
---AdvVP = adVerbPhrase ;
|
||||
---LocNP = locativeNounPhrase ;
|
||||
|
||||
|
||||
IdRP = identRelPron ;
|
||||
FunRP = funRelPron ;
|
||||
|
||||
RelCl = relCl;
|
||||
RelSlash = relSlash ;
|
||||
|
||||
--- ModRC = modRelClause ;
|
||||
--- RelSuch = relSuch ;
|
||||
--- RelVP = relVerbPhrase ;
|
||||
--- PosSlashV2 = slashTransVerb True ;
|
||||
--- NegSlashV2 = slashTransVerb False ;
|
||||
--- OneVP = predVerbPhrase (pron2NounPhrase pronKtoTo Animate) ;
|
||||
--- ThereNP = thereIs ;
|
||||
|
||||
--- WhoOne = intPronKto Sg ;
|
||||
--- WhoMany = intPronKto Pl ;
|
||||
--- WhatOne = intPronChto Sg ;
|
||||
--- WhatMany = intPronChto Pl ;
|
||||
--- NounIPOne = nounIntPron Sg ;
|
||||
--- NounIPMany = nounIntPron Pl ;
|
||||
--- SuperlNP = superlNounPhrase ;
|
||||
--- QuestVP = questVerbPhrase ;
|
||||
--- IntVP = intVerbPhrase ;
|
||||
--- ImperVP = imperVerbPhrase ;
|
||||
|
||||
FunIP = funIntPron ;
|
||||
QuestAdv = questAdverbial ;
|
||||
|
||||
IndicPhrase = indicUtt ;
|
||||
QuestPhrase = interrogUtt ;
|
||||
ImperOne = imperUtterance Masc Sg ;
|
||||
ImperMany = imperUtterance Masc Pl ;
|
||||
|
||||
-- IDetCN : IDet -> CN -> IP ; -- "which car", "which cars"
|
||||
|
||||
-- SlashV2 : NP -> V2 -> Slash ; -- "(whom) John doesn't love"
|
||||
-- SlashVV2 : NP -> VV -> V2 -> Slash ; -- "(which song do you) want to play"
|
||||
-- SlashAdv : Cl -> Prep -> Slash ; -- "(whom) John walks with"
|
||||
|
||||
PosSlashV2 = slashTransVerb True ;
|
||||
NegSlashV2 = slashTransVerb False ;
|
||||
OneVP = predVerbPhrase (pron2NounPhrase pronKtoTo Animate) ;
|
||||
ThereNP = thereIs ;
|
||||
-- IntSlash = intSlash ;
|
||||
-- QuestCl : Cl -> QCl ; -- "does John walk"; "doesn't John walk"
|
||||
|
||||
IdRP = identRelPron ;
|
||||
FunRP = funRelPron ;
|
||||
RelVP = relVerbPhrase ;
|
||||
RelSlash = relSlash ;
|
||||
ModRC = modRelClause ;
|
||||
RelSuch = relSuch ;
|
||||
-- RelCl : Cl -> RCl ; -- "such that it is even"
|
||||
|
||||
|
||||
WhoOne = intPronKto Sg ;
|
||||
WhoMany = intPronKto Pl ;
|
||||
WhatOne = intPronChto Sg ;
|
||||
WhatMany = intPronChto Pl ;
|
||||
FunIP = funIntPron ;
|
||||
-- IDetCN : IDet -> CN -> IP ; -- "which car", "which cars"
|
||||
|
||||
NounIPOne = nounIntPron Sg ;
|
||||
NounIPMany = nounIntPron Pl ;
|
||||
|
||||
QuestVP = questVerbPhrase ;
|
||||
---IntVP = intVerbPhrase ;
|
||||
IntSlash = intSlash ;
|
||||
-- QuestCl : Cl -> QCl ; -- "does John walk"; "doesn't John walk"
|
||||
|
||||
|
||||
QuestAdv = questAdverbial ;
|
||||
|
||||
|
||||
---ImperVP = imperVerbPhrase ;
|
||||
-- PosImpVP, NegImpVP : VCl -> Imp ; -- "(don't) be a man"
|
||||
|
||||
IndicPhrase = indicUtt ;
|
||||
QuestPhrase = interrogUtt ;
|
||||
ImperOne = imperUtterance Masc Sg ;
|
||||
ImperMany = imperUtterance Masc Pl ;
|
||||
AdvCl = advClause ;
|
||||
-- AdCPhr : AdC -> S -> Phr ; -- "Therefore, 2 is prime."
|
||||
-- AdvPhr : Adv -> S -> Phr ; -- "In India, there are tigers."
|
||||
|
||||
TwoS = twoSentence ;
|
||||
ConsS = consSentence ;
|
||||
@@ -172,23 +172,24 @@ lin
|
||||
ConjNP = conjunctNounPhrase ;
|
||||
ConjDNP = conjunctDistrNounPhrase ;
|
||||
|
||||
-- ConjAdv : Conj -> ListAdv -> Adv ; -- "quickly or slowly"
|
||||
-- ConjDAdv : ConjD -> ListAdv -> Adv ; -- "both badly and slowly"
|
||||
-- TwoAdv : Adv -> Adv -> ListAdv ;
|
||||
-- ConsAdv : ListAdv -> Adv -> ListAdv ;
|
||||
ConjAdv = conjAdverb ;
|
||||
ConjDAdv = conjDAdverb ;
|
||||
TwoAdv = twoAdverb ;
|
||||
ConsAdv = consAdverb ;
|
||||
|
||||
|
||||
SubjS = subjunctSentence ;
|
||||
SubjImper = subjunctImperative ;
|
||||
SubjQu = subjunctQuestion ;
|
||||
-- SubjQS : Subj -> S -> QS -> QS ; -- "if you are new, who are you?"
|
||||
SubjVP = subjunctVerbPhrase ;
|
||||
SubjQS = subjQS ;
|
||||
|
||||
-- This rule makes a subordinate clause into a sentence adverb, which
|
||||
-- can be attached to e.g. noun phrases. It might even replace the
|
||||
-- previous subjunction rules.
|
||||
|
||||
-- AdvSubj : Subj -> S -> Adv ; -- "when he arrives"
|
||||
AdvSubj = advSubj ;
|
||||
|
||||
--- SubjS = subjunctSentence ;
|
||||
--- SubjImper = subjunctImperative ;
|
||||
--- SubjQu = subjunctQuestion ;
|
||||
--- SubjVP = subjunctVerbPhrase ;
|
||||
|
||||
PhrNP = useNounPhrase ;
|
||||
PhrOneCN = useCommonNounPhrase Sg ;
|
||||
@@ -197,8 +198,7 @@ lin
|
||||
PhrIAdv ia = postfixSS "?" ia ;
|
||||
OnePhr p = p ;
|
||||
ConsPhr = cc2 ;
|
||||
|
||||
-- PhrVPI : VPI -> Phr ; -- "Tända ljus."
|
||||
PhrVPI = phrVPI ;
|
||||
|
||||
--2 Special constructs.
|
||||
--
|
||||
@@ -210,12 +210,5 @@ lin
|
||||
|
||||
OneNP = npOne ;
|
||||
|
||||
--New in the "lib"-version from Swedish:
|
||||
|
||||
AdvPP p = p ;
|
||||
PredSuperl a = predAdjective (superlAdjPhrase a) ;
|
||||
PrepS p = ss (p.s ++ ",") ;
|
||||
PredVG = predVerbGroupClause ;
|
||||
|
||||
} ;
|
||||
|
||||
|
||||
@@ -108,8 +108,57 @@ Numeral : Type = {s : Case => Gender => Str} ;
|
||||
-- The determined noun has the case parameter specific for the determiner:
|
||||
|
||||
Determiner : Type = Adjective ** { n: Number; g: PronGen; c : Case } ;
|
||||
NoNumberDeterminer = Adjective ** {g: PronGen; c: Case} ;
|
||||
|
||||
anyPlDet = kakojNibudDet ** {n = Pl; c= Nom} ;
|
||||
|
||||
iDetCN : Determiner -> CommNounPhrase -> IntPron = \kakoj, okhotnik ->
|
||||
{s = \\c => case kakoj.c of {
|
||||
Nom =>
|
||||
kakoj.s ! AF (extCase c) okhotnik.anim (gNum okhotnik.g kakoj.n) ++
|
||||
okhotnik.s ! kakoj.n ! (extCase c) ;
|
||||
_ =>
|
||||
kakoj.s ! AF (extCase c) okhotnik.anim (gNum okhotnik.g kakoj.n) ++
|
||||
okhotnik.s ! kakoj.n ! kakoj.c };
|
||||
n = kakoj.n ;
|
||||
p = P3 ;
|
||||
pron = False;
|
||||
g = kakoj.g ;
|
||||
anim = okhotnik.anim
|
||||
} ;
|
||||
|
||||
nDetNP : NoNumberDeterminer -> Numeral -> CommNounPhrase -> NounPhrase =\eti,pyat, okhotnik ->
|
||||
{ s=\\c => case eti.c of {
|
||||
Nom =>
|
||||
eti.s ! AF (extCase c) Inanimate (gNum (pgen2gen eti.g) Pl) ++
|
||||
pyat.s ! (extCase c) ! (pgen2gen eti.g)++ okhotnik.s ! Pl ! (extCase c);
|
||||
_ =>
|
||||
eti.s ! AF (extCase c) Inanimate (gNum (pgen2gen eti.g) Pl) ++
|
||||
pyat.s ! eti.c ! (pgen2gen eti.g) ++ okhotnik.s ! Pl ! eti.c };
|
||||
|
||||
n = Pl ;
|
||||
p = P3 ;
|
||||
pron = False;
|
||||
g = eti.g ;
|
||||
anim = okhotnik.anim
|
||||
};
|
||||
|
||||
nDetNum: NoNumberDeterminer -> Numeral -> NounPhrase =\eti,pyat ->
|
||||
{ s=\\c => case eti.c of {
|
||||
Nom =>
|
||||
eti.s ! AF (extCase c) Inanimate (gNum (pgen2gen eti.g) Pl) ++
|
||||
pyat.s ! (extCase c) ! (pgen2gen eti.g);
|
||||
_ =>
|
||||
eti.s ! AF (extCase c) Inanimate (gNum (pgen2gen eti.g) Pl) ++
|
||||
pyat.s ! eti.c ! (pgen2gen eti.g) };
|
||||
|
||||
n = Pl ;
|
||||
p = P3 ;
|
||||
pron = False;
|
||||
g = eti.g ;
|
||||
anim = Inanimate
|
||||
};
|
||||
|
||||
|
||||
mkDeterminerNum : Determiner -> Numeral -> Determiner = \vse,dva ->
|
||||
{s =\\af => vse.s ! af ++ dva.s ! (caseAF af) ! (genAF af) ;
|
||||
@@ -279,6 +328,18 @@ pgNum : PronGen -> Number -> GenNum = \g,n ->
|
||||
p = True
|
||||
} ;
|
||||
|
||||
complVerbAdj : Adjective -> VerbPhraseInf -> AdjPhrase = \zhazhduuchii,zhit ->
|
||||
{s = \\af => zhazhduuchii.s ! af ++ zhit.s2 ++ zhit.s ;
|
||||
p = True
|
||||
} ;
|
||||
|
||||
|
||||
complObjA2V: AdjCompl -> NounPhrase -> VerbPhraseInf -> AdjPhrase =
|
||||
\ legkii, mu, zapomnit ->
|
||||
{ s = \\af => legkii.s ! AdvF ++ zapomnit.s2 ++ zapomnit.s ++
|
||||
mu. s ! (mkPronForm legkii.c No NonPoss);
|
||||
p = True
|
||||
};
|
||||
--3 Complements
|
||||
--
|
||||
|
||||
@@ -547,6 +608,9 @@ let {n = ivan.n ; nf = if_then_else Number coll Sg n} in
|
||||
mkAdverb (na.s2 ++ stol.s ! PF na.c Yes NonPoss) ;
|
||||
|
||||
locativeNounPhrase : NounPhrase -> Adverb = \ivan ->
|
||||
{s = "в" ++ ivan.s ! (mkPronForm Prepos Yes NonPoss) } ;
|
||||
|
||||
advAdv : Adverb -> Adverb -> Adverb =\ochen, khorosho ->
|
||||
{s = ochen.s ++ khorosho.s};
|
||||
|
||||
mkAdverb : Str -> Adverb = \well -> ss well ;
|
||||
@@ -563,6 +627,8 @@ let {n = ivan.n ; nf = if_then_else Number coll Sg n} in
|
||||
advAdjPhrase : SS -> AdjPhrase -> AdjPhrase = \ochen, khorosho ->
|
||||
{s = \\a => ochen.s ++ khorosho.s ! a ;
|
||||
p = khorosho.p
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
--2 Sentences
|
||||
@@ -574,8 +640,8 @@ oper
|
||||
oper
|
||||
Sentence : Type = { s : Str } ;
|
||||
|
||||
-- This is the traditional $S -> NP VP$ rule.
|
||||
|
||||
-- This is the traditional $S -> NP VP$ rule.
|
||||
|
||||
predVerbPhrase : NounPhrase -> VerbPhrase -> SlashNounPhrase =
|
||||
\Ya, tebyaNeVizhu -> { s = \\b,clf =>
|
||||
let
|
||||
@@ -585,20 +651,20 @@ oper
|
||||
tebya = tebyaNeVizhu.s3 ! (pgen2gen Ya.g) ! Ya.n
|
||||
}
|
||||
in
|
||||
if_then_else Str tebyaNeVizhu.negBefore
|
||||
(ya ++ ne ++ vizhu ++ tebya)
|
||||
if_then_else Str tebyaNeVizhu.negBefore
|
||||
(ya ++ ne ++ vizhu ++ tebya)
|
||||
(ya ++ vizhu ++ ne ++ tebya)
|
||||
;
|
||||
s2= "";
|
||||
c = Nom
|
||||
} ;
|
||||
|
||||
param
|
||||
Anteriority = Simul | Anter ;
|
||||
Anteriority = Simul | Anter ;
|
||||
-- for compatibility with Rules.gf:
|
||||
ClTense = ClPresent | ClPast | ClFuture | ClConditional;
|
||||
ClForm = ClIndic RusTense Anteriority | ClCondit | ClInfinit ;
|
||||
-- "naked infinitive" clauses
|
||||
|
||||
|
||||
oper
|
||||
Clause = {s : Bool => ClForm => Str} ;
|
||||
@@ -623,7 +689,7 @@ oper
|
||||
(ya ++ vizhu ++ ne ++ tebya)
|
||||
} ;
|
||||
|
||||
-- This is a macro for simultaneous predication and complementation.
|
||||
-- This is a macro for simultaneous predication and complementation.
|
||||
|
||||
predTransVerb : Bool -> TransVerb -> NounPhrase -> NounPhrase -> Sentence =
|
||||
\b,vizhu,ya,tu -> {s= (predVerbPhrase ya (predVerbGroup b Present (complTransVerb vizhu tu))).s!True!ClIndic Present Simul};
|
||||
@@ -678,9 +744,9 @@ oper
|
||||
-- $S/NP$.
|
||||
-- We cannot have - nor would we want to have - a productive slash-category former.
|
||||
-- Perhaps a handful more will be needed.
|
||||
--
|
||||
--
|
||||
-- Notice that the slash category has the same relation to sentences as
|
||||
-- transitive verbs have to verbs: it's like a *sentence taking a complement*.
|
||||
-- transitive verbs have to verbs: it's like a *sentence taking a complement*.
|
||||
|
||||
SlashNounPhrase = Clause ** Complement ;
|
||||
|
||||
@@ -709,7 +775,7 @@ thereIs : NounPhrase -> Sentence = \bar ->
|
||||
-- $coordination.gf$. The overall structure is independent of category,
|
||||
-- but there can be differences in parameter dependencies.
|
||||
--
|
||||
--3 Conjunctions
|
||||
--3 Conjunctions
|
||||
--
|
||||
-- Coordinated phrases are built by using conjunctions, which are either
|
||||
-- simple ("и", "или") or distributed ("как - так", "либо - либо").
|
||||
@@ -742,10 +808,10 @@ oper
|
||||
|
||||
relVerbPhrase : RelPron -> VerbPhrase -> RelClause = \kotoruj, gulyaet ->
|
||||
{ s = \\b,clf,gn, c, anim => let { nu = numGNum gn } in
|
||||
kotoruj.s ! gn ! c ! anim ++ gulyaet.s2 ++ gulyaet.s ! VFin gn P3 ++
|
||||
kotoruj.s ! gn ! c ! anim ++ gulyaet.s2 ++ gulyaet.s ! VFin gn P3 ++
|
||||
gulyaet.s3 ! genGNum gn ! nu
|
||||
} ;
|
||||
|
||||
|
||||
relSlash : RelPron -> SlashNounPhrase -> RelClause =
|
||||
\kotoruj, yaVizhu ->
|
||||
{s = \\b,clf,gn, _ , anim => yaVizhu.s2 ++ kotoruj.s ! gn ! yaVizhu.c ! anim
|
||||
@@ -754,6 +820,9 @@ oper
|
||||
|
||||
-- A 'degenerate' relative clause is the one often used in mathematics, e.g.
|
||||
-- "число x, такое что x - четное".
|
||||
|
||||
relSuch : Sentence -> RelClause = \A ->
|
||||
{s = \\b,clf,gn,c, anim => takoj.s ! AF c anim gn ++ "что" ++ A.s } ;
|
||||
|
||||
relCl : Clause -> RelClause =\ A ->
|
||||
{s = \\b,clf,gn,c, anim => takoj.s ! AF c anim gn ++ "что" ++ A.s !b!clf};
|
||||
@@ -843,6 +912,12 @@ oper
|
||||
-- about on this level. In semantically rich GF grammars, texts, dialogues, etc,
|
||||
-- will of course play an important role as categories not reducible to utterances.
|
||||
-- An example is proof texts, whose semantics show a dependence between premises
|
||||
-- and conclusions. Another example is intersentential anaphora.
|
||||
|
||||
Utterance = SS ;
|
||||
|
||||
indicUtt : Sentence -> Utterance = \x -> postfixSS "." (defaultSentence x) ;
|
||||
interrogUtt : Question -> Utterance = \x -> postfixSS "?" (defaultQuestion x) ;
|
||||
|
||||
advSentencePhr : Adverb -> Sentence -> Utterance =\ a,sen ->
|
||||
{s = a.s ++ ","++ sen.s};
|
||||
@@ -851,8 +926,10 @@ oper
|
||||
{s = v.s ++ v.s2 ++ v.s3!Masc!Sg} ;
|
||||
|
||||
--2 Questions
|
||||
--
|
||||
-- Questions are either direct ("Ты счастлив?")
|
||||
-- or indirect ("Потом он спросил счастлив ли ты").
|
||||
|
||||
param
|
||||
QuestForm = DirQ | IndirQ ;
|
||||
|
||||
@@ -885,12 +962,12 @@ isThere : NounPhrase -> Question = \bar ->
|
||||
questVerbPhrase
|
||||
({s = \\_ => ["есть ли"] ; n = bar.n ; p = P3; g = bar.g; anim = bar.anim; pron = bar.pron})
|
||||
(predVerbGroup True Present (predNounPhrase bar)) ;
|
||||
|
||||
|
||||
--3 Wh-questions
|
||||
--
|
||||
-- Wh-questions are of two kinds: ones that are like $NP - VP$ sentences,
|
||||
-- others that are like $S/NP - NP$ sentences.
|
||||
|
||||
-- Wh-questions are of two kinds: ones that are like $NP - VP$ sentences,
|
||||
-- others that are like $S/NP - NP$ sentences.
|
||||
|
||||
intVerbPhrase : IntPron -> VerbPhrase -> Question = \kto,spit ->
|
||||
{s = table { _ => (predVerbPhrase kto spit).s!True!ClIndic Present Simul}
|
||||
} ;
|
||||
@@ -907,12 +984,16 @@ isThere : NounPhrase -> Question = \bar ->
|
||||
-- expressions. In addition, they can be formed by adding prepositions
|
||||
-- to interrogative pronouns, in the same way as adverbials are formed
|
||||
-- from noun phrases. N.B. we rely on record subtyping when ignoring the
|
||||
-- position component.
|
||||
-- position component.
|
||||
|
||||
IntAdverb = SS ;
|
||||
|
||||
-- A question adverbial can be applied to anything, and whether this makes
|
||||
-- sense is a semantic question.
|
||||
|
||||
questAdverbial_1 : IntAdverb -> NounPhrase -> VerbPhrase -> Question =
|
||||
\kak, tu, pozhivaesh ->
|
||||
{s = \\q => kak.s ++ tu.s ! (mkPronForm Nom No NonPoss) ++
|
||||
pozhivaesh.s2 ++ pozhivaesh.s ! VFin (gNum (pgen2gen tu.g) tu.n) tu.p ++
|
||||
pozhivaesh.s3 ! (pgen2gen tu.g) ! tu.n } ;
|
||||
|
||||
@@ -951,7 +1032,7 @@ isThere : NounPhrase -> Question = \bar ->
|
||||
|
||||
ListSentence : Type = SD2 ;
|
||||
|
||||
twoSentence : (_,_ : Sentence) -> ListSentence = CO.twoSS ;
|
||||
twoSentence : (_,_ : Sentence) -> ListSentence = CO.twoSS ;
|
||||
|
||||
consSentence : ListSentence -> Sentence -> ListSentence =
|
||||
CO.consSS CO.comma ;
|
||||
@@ -965,6 +1046,20 @@ isThere : NounPhrase -> Question = \bar ->
|
||||
ss (CO.conjunctX c xs) ;
|
||||
|
||||
-- To coordinate a list of sentences by a distributed conjunction, we place
|
||||
-- the first part (e.g. "как") in front of the first element, the second
|
||||
-- part ("так и") between the last two elements, and commas in the other slots.
|
||||
-- For sentences this is really not used.
|
||||
|
||||
conjunctDistrSentence : ConjunctionDistr -> ListSentence -> Sentence =
|
||||
\c,xs ->
|
||||
ss (CO.conjunctDistrX c xs) ;
|
||||
|
||||
--3 Coordinating adverbs
|
||||
--
|
||||
ListAdverb : Type = CO.ListX ;
|
||||
|
||||
twoAdverb : (_,_ : Adverb) -> ListAdverb = CO.twoSS;
|
||||
|
||||
consAdverb : ListAdverb -> Adverb -> ListAdverb =
|
||||
CO.consSS CO.comma ;
|
||||
|
||||
@@ -1074,13 +1169,20 @@ isThere : NounPhrase -> Question = \bar ->
|
||||
\if, A, B ->
|
||||
ss (subjunctVariants if A.s B.s) ;
|
||||
|
||||
subjunctImperative : Subjunction -> Sentence -> Imperative -> Imperative =
|
||||
\if, A, B ->
|
||||
{s = \\g,n => subjunctVariants if A.s (B.s ! g ! n)} ;
|
||||
|
||||
subjunctQuestion : Subjunction -> Sentence -> Question -> Question =
|
||||
\if, A, B ->
|
||||
{s = \\q => subjunctVariants if A.s (B.s ! q)} ;
|
||||
|
||||
subjQS : Subjunction -> Sentence -> Question -> Question =
|
||||
\ if, sen, que ->
|
||||
|
||||
{s = \\qf => if.s ++ sen.s ++ que.s ! qf };
|
||||
|
||||
subjunctVerbPhrase: VerbPhrase -> Subjunction -> Sentence -> VerbPhrase =
|
||||
\V, if, A -> adVerbPhrase V (mkAdverb (if.s ++ A.s)) ;
|
||||
|
||||
subjunctVariants : Subjunction -> Str -> Str -> Str = \if,A,B ->
|
||||
variants {if.s ++ A ++ "," ++ B ; B ++ "," ++ if.s ++ A} ;
|
||||
|
||||
Reference in New Issue
Block a user