mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-10-03 07:33:39 -06:00
extensions to the morphology
This commit is contained in:
@@ -2,15 +2,15 @@ concrete AdverbCze of Adverb = CatCze **
|
|||||||
open ResCze, Prelude in {
|
open ResCze, Prelude in {
|
||||||
|
|
||||||
lin
|
lin
|
||||||
PositAdvAdj a = {s = a.nsnom} ;
|
PositAdvAdj a = {s = a.adv} ;
|
||||||
PositAdAAdj a = {s = a.nsnom} ;
|
PositAdAAdj a = {s = a.adv} ;
|
||||||
AdAdv ada adv = {s = ada.s ++ adv.s} ;
|
AdAdv ada adv = {s = ada.s ++ adv.s} ;
|
||||||
AdnCAdv cadv = {s = cadv.s} ;
|
AdnCAdv cadv = {s = cadv.s} ;
|
||||||
ComparAdvAdj cadv a np = {
|
ComparAdvAdj cadv a np = {
|
||||||
s = cadv.s ++ a.nsnom ++ "než" ++ np.s ! Nom
|
s = cadv.s ++ a.adv ++ "než" ++ np.s ! Nom
|
||||||
} ;
|
} ;
|
||||||
ComparAdvAdjS cadv a sent = {
|
ComparAdvAdjS cadv a sent = {
|
||||||
s = cadv.s ++ a.nsnom ++ "než" ++ sent.s
|
s = cadv.s ++ a.adv ++ "než" ++ sent.s
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
PrepNP prep np = {
|
PrepNP prep np = {
|
||||||
|
|||||||
+20
-8
@@ -99,7 +99,11 @@ lin
|
|||||||
|
|
||||||
PassVPSlash vp = {
|
PassVPSlash vp = {
|
||||||
verb = vp.verb ; clitPresent = True ;
|
verb = vp.verb ; clitPresent = True ;
|
||||||
clit = \\a => vp.clit ! a ++ "se" ++ vp.clitAfter ! a ;
|
-- A lexically reflexive verb already supplies se/si. Reflexive passive
|
||||||
|
-- must not duplicate that clitic ("se se odehraje").
|
||||||
|
clit = \\a => vp.clit ! a ++
|
||||||
|
case vp.verb.isRefl of {True => [] ; False => "se"} ++
|
||||||
|
vp.clitAfter ! a ;
|
||||||
compl = \\a => vp.compl ! a ++ vp.ind ! a
|
compl = \\a => vp.compl ! a ++ vp.ind ! a
|
||||||
} ;
|
} ;
|
||||||
PassAgentVPSlash vp np =
|
PassAgentVPSlash vp np =
|
||||||
@@ -108,13 +112,21 @@ lin
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
PresPartAP vp =
|
PresPartAP vp =
|
||||||
let phrase = vp.verb.inf ++ vp.clit ! Ag Neutr Sg P3 ++ vp.compl ! Ag Neutr Sg P3 ;
|
let agr = Ag Neutr Sg P3 ;
|
||||||
ap = adjFormsAdjective (invarAdjForms phrase)
|
ap = adjFormsAdjective vp.verb.prespart
|
||||||
in ap ** {pred = longPredicate ap ; isPost = True} ;
|
in ap ** {
|
||||||
|
s = \\g,n,c => ap.s ! g ! n ! c ++ vp.clit ! agr ++ vp.compl ! agr ;
|
||||||
|
pred = \\a => longPredicate ap ! a ++ vp.clit ! a ++ vp.compl ! a ;
|
||||||
|
isPost = True
|
||||||
|
} ;
|
||||||
PastPartAP vp =
|
PastPartAP vp =
|
||||||
let phrase = vp.verb.pastpartsg ++ vp.compl ! Ag Neutr Sg P3 ++ vp.ind ! Ag Neutr Sg P3 ;
|
let ap = adjFormsAdjective vp.verb.passpart
|
||||||
ap = adjFormsAdjective (invarAdjForms phrase)
|
in ap ** {
|
||||||
in ap ** {pred = longPredicate ap ; isPost = True} ;
|
s = \\g,n,c => ap.s ! g ! n ! c ++
|
||||||
|
vp.compl ! Ag g n P3 ++ vp.ind ! Ag g n P3 ;
|
||||||
|
pred = \\a => longPredicate ap ! a ++ vp.compl ! a ++ vp.ind ! a ;
|
||||||
|
isPost = True
|
||||||
|
} ;
|
||||||
PastPartAgentAP vp np =
|
PastPartAgentAP vp np =
|
||||||
let ap = PastPartAP vp in ap ** {
|
let ap = PastPartAP vp in ap ** {
|
||||||
s = \\g,n,c => ap.s ! g ! n ! c ++ "od" ++ np.prep ! Gen ;
|
s = \\g,n,c => ap.s ! g ! n ! c ++ "od" ++ np.prep ! Gen ;
|
||||||
@@ -139,7 +151,7 @@ lin
|
|||||||
GerundAdv vp = {s = vp.verb.inf ++ vp.clit ! Ag Neutr Sg P3 ++ vp.compl ! Ag Neutr Sg P3} ;
|
GerundAdv vp = {s = vp.verb.inf ++ vp.clit ! Ag Neutr Sg P3 ++ vp.compl ! Ag Neutr Sg P3} ;
|
||||||
InOrderToVP vp = {s = "aby" ++ vp.verb.inf ++ vp.clit ! Ag Neutr Sg P3 ++ vp.compl ! Ag Neutr Sg P3} ;
|
InOrderToVP vp = {s = "aby" ++ vp.verb.inf ++ vp.clit ! Ag Neutr Sg P3 ++ vp.compl ! Ag Neutr Sg P3} ;
|
||||||
ProgrVPSlash vp = vp ;
|
ProgrVPSlash vp = vp ;
|
||||||
PositAdVAdj a = {s = a.nsnom} ;
|
PositAdVAdj a = {s = a.adv} ;
|
||||||
ApposNP first second =
|
ApposNP first second =
|
||||||
let forms = appendNPForms first (SOFT_BIND ++ "," ++ second.s ! Nom)
|
let forms = appendNPForms first (SOFT_BIND ++ "," ++ second.s ! Nom)
|
||||||
in first ** forms ** {clit = forms.s ; hasClit = False ; isDrop = False} ;
|
in first ** forms ** {clit = forms.s ; hasClit = False ; isDrop = False} ;
|
||||||
|
|||||||
@@ -165,9 +165,16 @@ oper
|
|||||||
-- Lexical reflexive clitics. The case-based interface accepts only Acc/Dat.
|
-- Lexical reflexive clitics. The case-based interface accepts only Acc/Dat.
|
||||||
seV : V -> V = \v -> reflV v Acc ;
|
seV : V -> V = \v -> reflV v Acc ;
|
||||||
siV : V -> V = \v -> reflV v Dat ;
|
siV : V -> V = \v -> reflV v Dat ;
|
||||||
reflV : V -> Case -> V = \v,c -> v ** {
|
reflV : V -> Case -> V = \v,c ->
|
||||||
isRefl = True ; refl = case c of {Dat => "si" ; _ => "se"}
|
let base : V = case v.inf of {
|
||||||
} ;
|
-- Stát and stát se are distinct irregular lexemes. Selecting the
|
||||||
|
-- latter here lets generated lexica keep the compositional seV API.
|
||||||
|
"stát" => lin V statSeVerbForms ;
|
||||||
|
_ => v
|
||||||
|
}
|
||||||
|
in base ** {
|
||||||
|
isRefl = True ; refl = case c of {Dat => "si" ; _ => "se"}
|
||||||
|
} ;
|
||||||
|
|
||||||
mkVS : V -> VS = \v -> lin VS v ;
|
mkVS : V -> VS = \v -> lin VS v ;
|
||||||
mkVQ : V -> VQ = \v -> lin VQ v ;
|
mkVQ : V -> VQ = \v -> lin VQ v ;
|
||||||
|
|||||||
+361
-9
@@ -201,15 +201,78 @@ oper
|
|||||||
|
|
||||||
guessNounForms : Str -> NounForms
|
guessNounForms : Str -> NounForms
|
||||||
= \s -> case s of {
|
= \s -> case s of {
|
||||||
|
-- Frequent irregulars which occur in application lexica using the
|
||||||
|
-- one-argument mkN. In particular, dítě is not a regular moře noun.
|
||||||
|
"dítě" => {
|
||||||
|
snom,sacc,svoc = "dítě" ; sgen = "dítěte" ;
|
||||||
|
sdat,sloc = "dítěti" ; sins = "dítětem" ;
|
||||||
|
pnom,pacc = "děti" ; pgen = "dětí" ; pdat = "dětem" ;
|
||||||
|
ploc = "dětech" ; pins = "dětmi" ; g = Neutr ; gPl = Fem
|
||||||
|
} ;
|
||||||
|
"lidé" => {
|
||||||
|
snom,svoc = "člověk" ; sgen,sacc = "člověka" ;
|
||||||
|
sdat,sloc = "člověku" ; sins = "člověkem" ;
|
||||||
|
pnom = "lidé" ; pgen = "lidí" ; pdat = "lidem" ;
|
||||||
|
pacc = "lidi" ; ploc = "lidech" ; pins = "lidmi" ;
|
||||||
|
g,gPl = Masc Anim
|
||||||
|
} ;
|
||||||
|
"člověk" => {
|
||||||
|
snom = "člověk" ; sgen,sacc = "člověka" ;
|
||||||
|
sdat,sloc = "člověku" ; svoc = "člověče" ; sins = "člověkem" ;
|
||||||
|
pnom = "lidé" ; pgen = "lidí" ; pdat = "lidem" ;
|
||||||
|
pacc = "lidi" ; ploc = "lidech" ; pins = "lidmi" ;
|
||||||
|
g,gPl = Masc Anim
|
||||||
|
} ;
|
||||||
|
"muž" => declMUZ s ;
|
||||||
|
"syn" => declPAN s ** {pnom = "synové"} ;
|
||||||
|
"pes" => declPAN s ** {
|
||||||
|
sgen,sacc = "psa" ; sdat,sloc = "psovi" ; svoc = "pse" ; sins = "psem" ;
|
||||||
|
pnom = "psi" ; pgen = "psů" ; pdat = "psům" ; pacc = "psy" ;
|
||||||
|
ploc = "psech" ; pins = "psy"
|
||||||
|
} ;
|
||||||
|
"profesor" => declPAN s ** {pnom = "profesoři"} ;
|
||||||
|
"otrok" => declPAN s ;
|
||||||
|
"student" | "imigrant" | "adolescent" | "prezident" =>
|
||||||
|
declPAN s ** {pnom = dentalStem s + "i"} ;
|
||||||
|
"loď" => declKOST s ** {
|
||||||
|
sgen = "lodi" ; sdat,svoc,sloc = "lodi" ; sins = "lodí" ;
|
||||||
|
pnom,pacc = "lodě" ; pgen = "lodí" ; pdat = "lodím" ;
|
||||||
|
ploc = "lodích" ; pins = "loděmi"
|
||||||
|
} ;
|
||||||
|
"účetní" => declINVAR (Masc Anim) s ;
|
||||||
|
"smrt" => declKOST s ;
|
||||||
|
"oblast" => declKOST s ;
|
||||||
|
"noha" => declZENA s ** {pgen = "nohou"} ;
|
||||||
|
"poznámka" => declZENA s ** {pgen = "poznámek"} ;
|
||||||
|
"kočka" => declZENA s ** {pgen = "koček"} ;
|
||||||
|
"církev" => declPISEN s ** {
|
||||||
|
sgen = "církve" ; sdat,svoc,sloc = "církvi" ; sins = "církví" ;
|
||||||
|
pnom,pacc = "církve" ; pgen = "církví" ; pdat = "církvím" ;
|
||||||
|
ploc = "církvích" ; pins = "církvemi"
|
||||||
|
} ;
|
||||||
|
"déšť" => declSTROJ s ** {
|
||||||
|
sgen = "deště" ; sdat,svoc,sloc = "dešti" ; sins = "deštěm" ;
|
||||||
|
pnom,pacc = "deště" ; pgen = "dešťů" ; pdat = "dešťům" ;
|
||||||
|
ploc = "deštích" ; pins = "dešti"
|
||||||
|
} ;
|
||||||
_ + "ost" => declKOST s ;
|
_ + "ost" => declKOST s ;
|
||||||
|
_ + "eň" => declPISEN s ;
|
||||||
_ + "tel" => declMUZ s ;
|
_ + "tel" => declMUZ s ;
|
||||||
|
_ + "ista" => declPREDSEDA s ;
|
||||||
|
_ + "ec" => declMUZ s ;
|
||||||
|
_ + ("ář"|"ař"|"íř"|"ýř") => declMUZ s ;
|
||||||
_ + "us" => declLATINUS s ;
|
_ + "us" => declLATINUS s ;
|
||||||
_ + "um" => declLATINUM s ;
|
_ + "um" => declLATINUM s ;
|
||||||
_ + #hardishConsonant => declHRAD s ;
|
_ + #hardishConsonant => declHRAD s ;
|
||||||
_ + #softConsonant => declSTROJ s ;
|
_ + #softConsonant => declSTROJ s ;
|
||||||
_ + "a" => declZENA s ;
|
_ + "a" => declZENA s ;
|
||||||
_ + "o" => declMESTO s ;
|
_ + "o" => declMESTO s ;
|
||||||
|
_ + "á" => declADJF s ;
|
||||||
|
_ + "é" => declADJN s ;
|
||||||
|
_ + "ý" => declADJM s ;
|
||||||
|
_ + ("ice"|"ace"|"ence"|"ance") => declRUZE s ;
|
||||||
_ + "ce" => declSOUDCE s ;
|
_ + "ce" => declSOUDCE s ;
|
||||||
|
_ + ("ie"|"ře"|"še"|"že"|"ze"|"le") => declRUZE s ;
|
||||||
_ + ("e"|"ě") => declMORE s ;
|
_ + ("e"|"ě") => declMORE s ;
|
||||||
_ + "í" => declSTAVENI s ;
|
_ + "í" => declSTAVENI s ;
|
||||||
_ => declSTROJ ("" + s) -- Predef.error ("cannot guess declension type for" ++ s)
|
_ => declSTROJ ("" + s) -- Predef.error ("cannot guess declension type for" ++ s)
|
||||||
@@ -372,6 +435,21 @@ oper
|
|||||||
g,gPl = Fem
|
g,gPl = Fem
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
declADJN : DeclensionType = \skolne ->
|
||||||
|
let a = mladyAdjForms (Predef.tk 1 skolne + "ý")
|
||||||
|
in {
|
||||||
|
snom,sacc,svoc = a.nsnom ;
|
||||||
|
sgen = a.msgen ;
|
||||||
|
sdat = a.msdat ;
|
||||||
|
sloc = a.msloc ;
|
||||||
|
sins = a.msins ;
|
||||||
|
pnom,pacc = a.fpnom ;
|
||||||
|
pgen,ploc = a.pgen ;
|
||||||
|
pdat = a.msins ;
|
||||||
|
pins = a.pins ;
|
||||||
|
g,gPl = Neutr
|
||||||
|
} ;
|
||||||
|
|
||||||
declADJM : DeclensionType = \nulty ->
|
declADJM : DeclensionType = \nulty ->
|
||||||
let a = mladyAdjForms nulty
|
let a = mladyAdjForms nulty
|
||||||
in {
|
in {
|
||||||
@@ -565,10 +643,10 @@ oper
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- to be used for A, in three degrees: 15 forms in each
|
-- to be used for A, in three degrees: 15 forms in each
|
||||||
DegreeForms : Type = AdjForms ** {compar,superl : AdjForms} ;
|
DegreeForms : Type = AdjForms ** {compar,superl : AdjForms ; adv : Str} ;
|
||||||
|
|
||||||
positiveAdj : AdjForms -> DegreeForms = \a -> a ** {
|
positiveAdj : AdjForms -> DegreeForms = \a -> a ** {
|
||||||
compar,superl = invarAdjForms nonExist
|
compar,superl = invarAdjForms nonExist ; adv = nonExist
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
AdjForms : Type = {
|
AdjForms : Type = {
|
||||||
@@ -652,7 +730,8 @@ adjFormsAdjective : AdjForms -> Adjective = \afs -> {
|
|||||||
|
|
||||||
degreeAdjForms : Str -> Str -> DegreeForms = \p,c ->
|
degreeAdjForms : Str -> Str -> DegreeForms = \p,c ->
|
||||||
(guessAdjForms p) ** {
|
(guessAdjForms p) ** {
|
||||||
compar = guessAdjForms c ; superl = guessAdjForms ("nej" + c)
|
compar = guessAdjForms c ; superl = guessAdjForms ("nej" + c) ;
|
||||||
|
adv = adjectiveToAdverb p
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
guessAdjForms : Str -> AdjForms = \s -> case s of {
|
guessAdjForms : Str -> AdjForms = \s -> case s of {
|
||||||
@@ -660,9 +739,56 @@ adjFormsAdjective : AdjForms -> Adjective = \afs -> {
|
|||||||
_ + "í" => jarniAdjForms s ;
|
_ + "í" => jarniAdjForms s ;
|
||||||
_ + "ův" => otcuvAdjForms s ;
|
_ + "ův" => otcuvAdjForms s ;
|
||||||
_ + "in" => matcinAdjForms s ;
|
_ + "in" => matcinAdjForms s ;
|
||||||
_ => matcinAdjForms ("" + s) -- Predef.error ("no mkA for" ++ s)
|
-- Multiword and indeclinable adjectives must not acquire fictitious
|
||||||
|
-- possessive endings (e.g. "na miziněo").
|
||||||
|
_ => invarAdjForms s
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
-- The neuter adjective is not the Czech adverb (dobré vs. dobře). This
|
||||||
|
-- productive fallback covers regular hard and soft adjectives; the most
|
||||||
|
-- frequent stem alternations are listed explicitly.
|
||||||
|
adjectiveToAdverb : Str -> Str = \s -> case s of {
|
||||||
|
"dobrý" => "dobře" ; "špatný" => "špatně" ; "zlý" => "zle" ;
|
||||||
|
"rychlý" => "rychle" ; "pomalý" => "pomalu" ;
|
||||||
|
"úplný" => "úplně" ; "snadný" => "snadno" ;
|
||||||
|
"vysoký" => "vysoko" ; "nízký" => "nízko" ;
|
||||||
|
stem + "cký" => stem + "cky" ;
|
||||||
|
stem + "ský" => stem + "sky" ;
|
||||||
|
stem + "ký" => stem + "ce" ;
|
||||||
|
stem + "hý" => stem + "ze" ;
|
||||||
|
stem + "ný" => stem + "ně" ;
|
||||||
|
stem + "rý" => stem + "ře" ;
|
||||||
|
stem + "lý" => stem + "le" ;
|
||||||
|
stem + "ý" => stem + "ě" ;
|
||||||
|
stem + "í" => stem + "ě" ;
|
||||||
|
_ => s
|
||||||
|
} ;
|
||||||
|
|
||||||
|
presentParticipleForm : Str -> Str = \form -> case form of {
|
||||||
|
stem + "ají" => stem + "ající" ;
|
||||||
|
stem + "ejí" => stem + "ející" ;
|
||||||
|
stem + "ují" => stem + "ující" ;
|
||||||
|
stem + "ou" => stem + "oucí" ;
|
||||||
|
stem + "í" => stem + "ící" ;
|
||||||
|
form => form + "cí"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- Productive passive-participle fallback for application lexica which
|
||||||
|
-- provide only an infinitive. Irregular lexical paradigms can still
|
||||||
|
-- override the resulting AP explicitly.
|
||||||
|
passiveParticipleForm : Str -> Str = \form -> case form of {
|
||||||
|
stem + "ovat" => stem + "ovaný" ;
|
||||||
|
stem + "nout" => stem + "nutý" ;
|
||||||
|
stem + "at" => stem + "aný" ;
|
||||||
|
stem + "it" => stem + "ený" ;
|
||||||
|
stem + "ět" => stem + "ěný" ;
|
||||||
|
stem + "et" => stem + "ený" ;
|
||||||
|
stem + "ýt" => shortenVowel stem + "ytý" ;
|
||||||
|
stem + "ít" => shortenVowel stem + "itý" ;
|
||||||
|
stem + "t" => stem + "ný" ;
|
||||||
|
form => form
|
||||||
|
} ;
|
||||||
|
|
||||||
-- hard declension
|
-- hard declension
|
||||||
|
|
||||||
mladyAdjForms : Str -> AdjForms = \mlady ->
|
mladyAdjForms : Str -> AdjForms = \mlady ->
|
||||||
@@ -699,8 +825,7 @@ adjFormsAdjective : AdjForms -> Adjective = \afs -> {
|
|||||||
|
|
||||||
otcuvAdjForms : Str -> AdjForms = \otcuv ->
|
otcuvAdjForms : Str -> AdjForms = \otcuv ->
|
||||||
let otcov = Predef.tk 2 otcuv + "ov"
|
let otcov = Predef.tk 2 otcuv + "ov"
|
||||||
in
|
in matcinAdjForms otcov ** {msnom = otcuv} ;
|
||||||
matcinAdjForms otcov ** {msnom = otcuv} ;
|
|
||||||
|
|
||||||
-- feminine possession
|
-- feminine possession
|
||||||
|
|
||||||
@@ -736,7 +861,9 @@ adjFormsAdjective : AdjForms -> Adjective = \afs -> {
|
|||||||
VerbForms : Type = PositiveVerbForms ** {
|
VerbForms : Type = PositiveVerbForms ** {
|
||||||
negpressg1,negpressg2,negpressg3,negprespl1,negprespl2,negprespl3,
|
negpressg1,negpressg2,negpressg3,negprespl1,negprespl2,negprespl3,
|
||||||
negimpsg2,negimppl1,negimppl2,
|
negimpsg2,negimppl1,negimppl2,
|
||||||
pastpartfsg,pastpartnsg,pastpartfpl,pastpartnpl,refl : Str ; isRefl : Bool
|
pastpartfsg,pastpartnsg,pastpartfpl,pastpartnpl,refl : Str ;
|
||||||
|
prespart,passpart : AdjForms ;
|
||||||
|
isRefl : Bool
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Prefix at lexical construction time, so ordinary spelling also parses.
|
-- Prefix at lexical construction time, so ordinary spelling also parses.
|
||||||
@@ -750,7 +877,9 @@ adjFormsAdjective : AdjForms -> Adjective = \afs -> {
|
|||||||
pastpartfsg = Predef.tk 1 v.pastpartsg + "la" ;
|
pastpartfsg = Predef.tk 1 v.pastpartsg + "la" ;
|
||||||
pastpartnsg = Predef.tk 1 v.pastpartsg + "lo" ;
|
pastpartnsg = Predef.tk 1 v.pastpartsg + "lo" ;
|
||||||
pastpartfpl = Predef.tk 1 v.pastpartpl + "y" ;
|
pastpartfpl = Predef.tk 1 v.pastpartpl + "y" ;
|
||||||
pastpartnpl = Predef.tk 1 v.pastpartpl + "a"
|
pastpartnpl = Predef.tk 1 v.pastpartpl + "a" ;
|
||||||
|
prespart = guessAdjForms (presentParticipleForm v.prespl3) ;
|
||||||
|
passpart = guessAdjForms (passiveParticipleForm v.inf)
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Vocalization depends on the next realized token, not on the noun head.
|
-- Vocalization depends on the next realized token, not on the noun head.
|
||||||
@@ -1049,15 +1178,238 @@ adjFormsAdjective : AdjForms -> Adjective = \afs -> {
|
|||||||
impsg2 = "jez" ; imppl1 = "jezme" ; imppl2 = "jezte"
|
impsg2 = "jez" ; imppl1 = "jezme" ; imppl2 = "jezte"
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
moctVerbForms : Str -> VerbForms = \inf -> withNeg {
|
||||||
|
inf = inf ;
|
||||||
|
pressg1 = "můžu" ; pressg2 = "můžeš" ; pressg3 = "může" ;
|
||||||
|
prespl1 = "můžeme" ; prespl2 = "můžete" ; prespl3 = "můžou" ;
|
||||||
|
pastpartsg = "mohl" ; pastpartpl = "mohli" ;
|
||||||
|
impsg2,imppl1,imppl2 = nonExist
|
||||||
|
} ;
|
||||||
|
|
||||||
|
chtitVerbForms : VerbForms = withNeg {
|
||||||
|
inf = "chtít" ;
|
||||||
|
pressg1 = "chci" ; pressg2 = "chceš" ; pressg3 = "chce" ;
|
||||||
|
prespl1 = "chceme" ; prespl2 = "chcete" ; prespl3 = "chtějí" ;
|
||||||
|
pastpartsg = "chtěl" ; pastpartpl = "chtěli" ;
|
||||||
|
impsg2 = "chtěj" ; imppl1 = "chtějme" ; imppl2 = "chtějte"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
datVerbForms : VerbForms = withNeg {
|
||||||
|
inf = "dát" ;
|
||||||
|
pressg1 = "dám" ; pressg2 = "dáš" ; pressg3 = "dá" ;
|
||||||
|
prespl1 = "dáme" ; prespl2 = "dáte" ; prespl3 = "dají" ;
|
||||||
|
pastpartsg = "dal" ; pastpartpl = "dali" ;
|
||||||
|
impsg2 = "dej" ; imppl1 = "dejme" ; imppl2 = "dejte"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
dostatVerbForms : VerbForms = withNeg {
|
||||||
|
inf = "dostat" ;
|
||||||
|
pressg1 = "dostanu" ; pressg2 = "dostaneš" ; pressg3 = "dostane" ;
|
||||||
|
prespl1 = "dostaneme" ; prespl2 = "dostanete" ; prespl3 = "dostanou" ;
|
||||||
|
pastpartsg = "dostal" ; pastpartpl = "dostali" ;
|
||||||
|
impsg2 = "dostaň" ; imppl1 = "dostaňme" ; imppl2 = "dostaňte"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
bratVerbForms : VerbForms = withNeg {
|
||||||
|
inf = "brát" ;
|
||||||
|
pressg1 = "beru" ; pressg2 = "bereš" ; pressg3 = "bere" ;
|
||||||
|
prespl1 = "bereme" ; prespl2 = "berete" ; prespl3 = "berou" ;
|
||||||
|
pastpartsg = "bral" ; pastpartpl = "brali" ;
|
||||||
|
impsg2 = "ber" ; imppl1 = "berme" ; imppl2 = "berte"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
vzitVerbForms : VerbForms = withNeg {
|
||||||
|
inf = "vzít" ;
|
||||||
|
pressg1 = "vezmu" ; pressg2 = "vezmeš" ; pressg3 = "vezme" ;
|
||||||
|
prespl1 = "vezmeme" ; prespl2 = "vezmete" ; prespl3 = "vezmou" ;
|
||||||
|
pastpartsg = "vzal" ; pastpartpl = "vzali" ;
|
||||||
|
impsg2 = "vezmi" ; imppl1 = "vezměme" ; imppl2 = "vezměte"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
prijmoutVerbForms : VerbForms = withNeg {
|
||||||
|
inf = "přijmout" ;
|
||||||
|
pressg1 = "přijmu" ; pressg2 = "přijmeš" ; pressg3 = "přijme" ;
|
||||||
|
prespl1 = "přijmeme" ; prespl2 = "přijmete" ; prespl3 = "přijmou" ;
|
||||||
|
pastpartsg = "přijal" ; pastpartpl = "přijali" ;
|
||||||
|
impsg2 = "přijmi" ; imppl1 = "přijměme" ; imppl2 = "přijměte"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
hratVerbForms : Str -> VerbForms = \inf ->
|
||||||
|
let prefix = Predef.tk 4 inf ; hra = prefix + "hra"
|
||||||
|
in withNeg {
|
||||||
|
inf = inf ;
|
||||||
|
pressg1 = hra + "ji" ; pressg2 = hra + "ješ" ; pressg3 = hra + "je" ;
|
||||||
|
prespl1 = hra + "jeme" ; prespl2 = hra + "jete" ; prespl3 = hra + "jí" ;
|
||||||
|
pastpartsg = prefix + "hrál" ; pastpartpl = prefix + "hráli" ;
|
||||||
|
impsg2 = hra + "j" ; imppl1 = hra + "jme" ; imppl2 = hra + "jte"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
statVerbForms : VerbForms = withNeg {
|
||||||
|
inf = "stát" ;
|
||||||
|
pressg1 = "stojím" ; pressg2 = "stojíš" ; pressg3 = "stojí" ;
|
||||||
|
prespl1 = "stojíme" ; prespl2 = "stojíte" ; prespl3 = "stojí" ;
|
||||||
|
pastpartsg = "stál" ; pastpartpl = "stáli" ;
|
||||||
|
impsg2 = "stůj" ; imppl1 = "stůjme" ; imppl2 = "stůjte"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
statSeVerbForms : VerbForms = withNeg {
|
||||||
|
inf = "stát" ;
|
||||||
|
pressg1 = "stanu" ; pressg2 = "staneš" ; pressg3 = "stane" ;
|
||||||
|
prespl1 = "staneme" ; prespl2 = "stanete" ; prespl3 = "stanou" ;
|
||||||
|
pastpartsg = "stal" ; pastpartpl = "stali" ;
|
||||||
|
impsg2 = "staň" ; imppl1 = "staňme" ; imppl2 = "staňte"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
batVerbForms : VerbForms = withNeg {
|
||||||
|
inf = "bát" ;
|
||||||
|
pressg1 = "bojím" ; pressg2 = "bojíš" ; pressg3 = "bojí" ;
|
||||||
|
prespl1 = "bojíme" ; prespl2 = "bojíte" ; prespl3 = "bojí" ;
|
||||||
|
pastpartsg = "bál" ; pastpartpl = "báli" ;
|
||||||
|
impsg2 = "boj" ; imppl1 = "bojme" ; imppl2 = "bojte"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
zdatVerbForms : VerbForms = withNeg {
|
||||||
|
inf = "zdát" ;
|
||||||
|
pressg1 = "zdám" ; pressg2 = "zdáš" ; pressg3 = "zdá" ;
|
||||||
|
prespl1 = "zdáme" ; prespl2 = "zdáte" ; prespl3 = "zdají" ;
|
||||||
|
pastpartsg = "zdál" ; pastpartpl = "zdáli" ;
|
||||||
|
impsg2 = "zdej" ; imppl1 = "zdejme" ; imppl2 = "zdejte"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
vlatVerbForms : VerbForms = withNeg {
|
||||||
|
inf = "vlát" ;
|
||||||
|
pressg1 = "vlaji" ; pressg2 = "vlaješ" ; pressg3 = "vlaje" ;
|
||||||
|
prespl1 = "vlajeme" ; prespl2 = "vlajete" ; prespl3 = "vlají" ;
|
||||||
|
pastpartsg = "vlál" ; pastpartpl = "vláli" ;
|
||||||
|
impsg2 = "vlaj" ; imppl1 = "vlajme" ; imppl2 = "vlajte"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
rvatVerbForms : VerbForms = withNeg {
|
||||||
|
inf = "řvát" ;
|
||||||
|
pressg1 = "řvu" ; pressg2 = "řveš" ; pressg3 = "řve" ;
|
||||||
|
prespl1 = "řveme" ; prespl2 = "řvete" ; prespl3 = "řvou" ;
|
||||||
|
pastpartsg = "řval" ; pastpartpl = "řvali" ;
|
||||||
|
impsg2 = "řvi" ; imppl1 = "řvěme" ; imppl2 = "řvěte"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
znatVerbForms : VerbForms = withNeg {
|
||||||
|
inf = "znát" ;
|
||||||
|
pressg1 = "znám" ; pressg2 = "znáš" ; pressg3 = "zná" ;
|
||||||
|
prespl1 = "známe" ; prespl2 = "znáte" ; prespl3 = "znají" ;
|
||||||
|
pastpartsg = "znal" ; pastpartpl = "znali" ;
|
||||||
|
impsg2 = "znej" ; imppl1 = "znejme" ; imppl2 = "znejte"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
zalezetVerbForms : VerbForms = withNeg {
|
||||||
|
inf = "záležet" ;
|
||||||
|
pressg1 = "záležím" ; pressg2 = "záležíš" ; pressg3 = "záleží" ;
|
||||||
|
prespl1 = "záležíme" ; prespl2 = "záležíte" ; prespl3 = "záleží" ;
|
||||||
|
pastpartsg = "záležel" ; pastpartpl = "záleželi" ;
|
||||||
|
impsg2 = "zálež" ; imppl1 = "záležme" ; imppl2 = "záležte"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
zriciVerbForms : VerbForms = withNeg {
|
||||||
|
inf = "zříci" ;
|
||||||
|
pressg1 = "zřeknu" ; pressg2 = "zřekneš" ; pressg3 = "zřekne" ;
|
||||||
|
prespl1 = "zřekneme" ; prespl2 = "zřeknete" ; prespl3 = "zřeknou" ;
|
||||||
|
pastpartsg = "zřekl" ; pastpartpl = "zřekli" ;
|
||||||
|
impsg2 = "zřekni" ; imppl1 = "zřekněme" ; imppl2 = "zřekněte"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
zratVerbForms : VerbForms = withNeg {
|
||||||
|
inf = "žrát" ;
|
||||||
|
pressg1 = "žeru" ; pressg2 = "žereš" ; pressg3 = "žere" ;
|
||||||
|
prespl1 = "žereme" ; prespl2 = "žerete" ; prespl3 = "žerou" ;
|
||||||
|
pastpartsg = "žral" ; pastpartpl = "žrali" ;
|
||||||
|
impsg2 = "žer" ; imppl1 = "žerme" ; imppl2 = "žerte"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
spatVerbForms : VerbForms = withNeg {
|
||||||
|
inf = "spát" ;
|
||||||
|
pressg1 = "spím" ; pressg2 = "spíš" ; pressg3 = "spí" ;
|
||||||
|
prespl1 = "spíme" ; prespl2 = "spíte" ; prespl3 = "spí" ;
|
||||||
|
pastpartsg = "spal" ; pastpartpl = "spali" ;
|
||||||
|
impsg2 = "spi" ; imppl1 = "spěme" ; imppl2 = "spěte"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
pratVerbForms : VerbForms = withNeg {
|
||||||
|
inf = "prát" ;
|
||||||
|
pressg1 = "peru" ; pressg2 = "pereš" ; pressg3 = "pere" ;
|
||||||
|
prespl1 = "pereme" ; prespl2 = "perete" ; prespl3 = "perou" ;
|
||||||
|
pastpartsg = "pral" ; pastpartpl = "prali" ;
|
||||||
|
impsg2 = "per" ; imppl1 = "perme" ; imppl2 = "perte"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
psatVerbForms : VerbForms = withNeg {
|
||||||
|
inf = "psát" ;
|
||||||
|
pressg1 = "píšu" ; pressg2 = "píšeš" ; pressg3 = "píše" ;
|
||||||
|
prespl1 = "píšeme" ; prespl2 = "píšete" ; prespl3 = "píšou" ;
|
||||||
|
pastpartsg = "psal" ; pastpartpl = "psali" ;
|
||||||
|
impsg2 = "piš" ; imppl1 = "pišme" ; imppl2 = "pište"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
cistVerbForms : VerbForms = withNeg {
|
||||||
|
inf = "číst" ;
|
||||||
|
pressg1 = "čtu" ; pressg2 = "čteš" ; pressg3 = "čte" ;
|
||||||
|
prespl1 = "čteme" ; prespl2 = "čtete" ; prespl3 = "čtou" ;
|
||||||
|
pastpartsg = "četl" ; pastpartpl = "četli" ;
|
||||||
|
impsg2 = "čti" ; imppl1 = "čtěme" ; imppl2 = "čtěte"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
vedetVerbForms : VerbForms = withNeg {
|
||||||
|
inf = "vědět" ;
|
||||||
|
pressg1 = "vím" ; pressg2 = "víš" ; pressg3 = "ví" ;
|
||||||
|
prespl1 = "víme" ; prespl2 = "víte" ; prespl3 = "vědí" ;
|
||||||
|
pastpartsg = "věděl" ; pastpartpl = "věděli" ;
|
||||||
|
impsg2 = "věz" ; imppl1 = "vězme" ; imppl2 = "vězte"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
jitVerbForms : (inf,prefix,past : Str) -> VerbForms = \inf,prefix,past ->
|
||||||
|
(withNeg {
|
||||||
|
inf = inf ;
|
||||||
|
pressg1 = prefix + "jdu" ; pressg2 = prefix + "jdeš" ; pressg3 = prefix + "jde" ;
|
||||||
|
prespl1 = prefix + "jdeme" ; prespl2 = prefix + "jdete" ; prespl3 = prefix + "jdou" ;
|
||||||
|
pastpartsg = past + "šel" ; pastpartpl = past + "šli" ;
|
||||||
|
impsg2 = prefix + "jdi" ; imppl1 = prefix + "jděme" ; imppl2 = prefix + "jděte"
|
||||||
|
}) ** {
|
||||||
|
pastpartfsg = past + "šla" ; pastpartnsg = past + "šlo" ;
|
||||||
|
pastpartfpl = past + "šly" ; pastpartnpl = past + "šla"
|
||||||
|
} ;
|
||||||
|
|
||||||
guessVerbForms : Str -> VerbForms = \inf -> case inf of {
|
guessVerbForms : Str -> VerbForms = \inf -> case inf of {
|
||||||
"být" => copulaVerbForms ;
|
"být" => copulaVerbForms ;
|
||||||
"mít" => haveVerbForms ;
|
"mít" => haveVerbForms ;
|
||||||
"jíst" => jistVerbForms ;
|
"jíst" => jistVerbForms ;
|
||||||
|
"moct" | "moci" => moctVerbForms inf ;
|
||||||
|
"chtít" => chtitVerbForms ;
|
||||||
|
"dát" => datVerbForms ;
|
||||||
|
"dostat" => dostatVerbForms ;
|
||||||
|
"brát" => bratVerbForms ;
|
||||||
|
"vzít" => vzitVerbForms ;
|
||||||
|
"přijmout" => prijmoutVerbForms ;
|
||||||
|
_ + "hrát" => hratVerbForms inf ;
|
||||||
|
"žrát" => zratVerbForms ;
|
||||||
|
"spát" => spatVerbForms ;
|
||||||
|
"prát" => pratVerbForms ;
|
||||||
|
"psát" => psatVerbForms ;
|
||||||
|
"číst" => cistVerbForms ;
|
||||||
|
"vědět" => vedetVerbForms ;
|
||||||
|
"stát" => statVerbForms ;
|
||||||
|
"bát" => batVerbForms ;
|
||||||
|
"zdát" => zdatVerbForms ;
|
||||||
|
"vlát" => vlatVerbForms ;
|
||||||
|
"řvát" => rvatVerbForms ;
|
||||||
|
"znát" => znatVerbForms ;
|
||||||
|
"záležet" => zalezetVerbForms ;
|
||||||
|
"zříci" => zriciVerbForms ;
|
||||||
|
"jít" => jitVerbForms inf [] [] ;
|
||||||
|
"přijít" => jitVerbForms inf "při" "při" ;
|
||||||
|
"najít" => jitVerbForms inf "na" "na" ;
|
||||||
_ + "ovat" => iii_kupovatVerbForms inf ;
|
_ + "ovat" => iii_kupovatVerbForms inf ;
|
||||||
_ + ("ýt" | "ít") => iii_krýtVerbForms inf ;
|
_ + ("ýt" | "ít") => iii_krýtVerbForms inf ;
|
||||||
_ + "nout" => noutVerbForms inf ;
|
_ + "nout" => noutVerbForms inf ;
|
||||||
_ + "nést" => nestVerbForms inf ;
|
_ + "nést" => nestVerbForms inf ;
|
||||||
_ + "at" => atVerbForms inf ;
|
_ + ("at" | "át") => atVerbForms inf ;
|
||||||
_ + "it" => itVerbForms inf ;
|
_ + "it" => itVerbForms inf ;
|
||||||
_ + "ět" => etVerbForms inf "ě" ;
|
_ + "ět" => etVerbForms inf "ě" ;
|
||||||
_ + "et" => etVerbForms inf "e" ;
|
_ + "et" => etVerbForms inf "e" ;
|
||||||
|
|||||||
Reference in New Issue
Block a user