From c24bf306219a81b0b8132992a6c293bc156e1dc6 Mon Sep 17 00:00:00 2001 From: aarneranta Date: Wed, 29 Apr 2020 12:16:41 +0200 Subject: [PATCH] Slovak complete up to Czech, except content words, and needs checking --- src/slovak/NumeralSlo.gf | 32 +++++++++---------- src/slovak/ResSlo.gf | 62 ++++++++++++++++++------------------- src/slovak/StructuralSlo.gf | 16 +++++----- 3 files changed, 54 insertions(+), 56 deletions(-) diff --git a/src/slovak/NumeralSlo.gf b/src/slovak/NumeralSlo.gf index 19538c46..96b2229f 100644 --- a/src/slovak/NumeralSlo.gf +++ b/src/slovak/NumeralSlo.gf @@ -35,31 +35,31 @@ oper mk2Num : Determiner -> Str -> Str -> Str -> LinDigit = \unit, teenbase, tenbase, hundred -> mkNum unit teenbase (tenbase + "cet") hundred ; -oper mk5Num : Str -> Str -> Str -> Str -> LinDigit = - \unit,uniti, teenbase, tenbase -> - mkNum (regNumeral unit uniti) teenbase (tenbase + "desát") (unit ++ "set") ; +oper mk5Num : Str -> Str -> Str -> Str -> Str -> Str -> LinDigit = + \unit,unitich,unitim,unitimi, teenbase, tenbase -> + mkNum (regNumeral unit unitich unitim unitimi) teenbase (tenbase + "desiat") (unit ++ "sto") ; oper bigNumeral : Str -> LinNumeral = \s -> invarNumeral s ; lin num x = x ; -lin n2 = mk2Num twoNumeral "dva" "dva" ("dvě" ++ "stě") ; -lin n3 = mk2Num threeNumeral "tři" "tři" ("tři" ++ "sta") ; -lin n4 = mk2Num fourNumeral "čtr" "čtyři" ("čtyři" ++ "sta") ; -lin n5 = mk5Num "pět" "pěti" "pat" "pa" ; -lin n6 = mk5Num "šest" "šesti" "šest" "še" ; -lin n7 = mk5Num "sedm" "sedmi" "sedm" "sedm"; -lin n8 = mk5Num "osm" "osmi" "osm" "osm"; -lin n9 = mk5Num "devět" "devíti" "devate" "deva" ; +lin n2 = mk2Num twoNumeral "dva" "dva" ("dve" ++ "sto") ; +lin n3 = mk2Num threeNumeral "tri" "tri" ("tri" ++ "sto") ; +lin n4 = mk2Num fourNumeral "štr" "štyři" ("styri" ++ "sto") ; +lin n5 = mk5Num "päť" "piatich" "piatim" "piatimi" "pät" "pät" ; ---- +lin n6 = mk5Num "šest" "šestich" "šestim" "šestimi" "šest" "šest" ; ---- +lin n7 = mk5Num "sedem" "sedemich" "sedemim" "sedemimi" "sedem" "sedem"; ---- +lin n8 = mk5Num "osem" "osemich" "osemim" "osemimi" "osem" "osem"; +lin n9 = mk5Num "deväť" "deviatich" "deviatim" "deviatimi" "deväť" "deväť" ; lin pot01 = { - unit = oneNumeral.s ; hundred = "sto" ; ten = "deset" ; teen = "jedenáct" ; + unit = oneNumeral.s ; hundred = "sto" ; ten = "desať" ; teen = "jedenásť" ; size = Num1 } ; lin pot0 d = d ; -lin pot110 = bigNumeral "deset" ; -lin pot111 = bigNumeral "jedenáct" ; +lin pot110 = bigNumeral "desať" ; +lin pot111 = bigNumeral "jedenásť" ; lin pot1to19 d = bigNumeral d.teen ; lin pot0as1 n = {s = n.unit ; size = n.size} ; @@ -91,8 +91,8 @@ oper tfSize : NumSize -> NumSize = \sz -> oper mkTh : Str -> NumSize -> Str = \attr,size -> case size of { Num1 => "tisíc" ; - Num2_4 => attr ++ "tisíce" ; - Num5 => attr ++ "tisíc" + Num2_4 => attr ++ "tisíc" ; + Num5 => attr ++ "tisí" } ; oper determinerStr : Determiner -> Str = \d -> d.s ! Masc Anim ! Nom ; diff --git a/src/slovak/ResSlo.gf b/src/slovak/ResSlo.gf index 3e241d0c..041a71d0 100644 --- a/src/slovak/ResSlo.gf +++ b/src/slovak/ResSlo.gf @@ -584,14 +584,13 @@ adjFormsAdjective : AdjForms -> Adjective = \afs -> { --------------------- -- Verbs +-- https://en.wikipedia.org/wiki/Slovak_language#Verbs - VerbForms : Type = { ---- TODO more forms to add + VerbForms : Type = { ---- TODO more forms to add ? inf, pressg1, pressg2, pressg3, prespl1, prespl2, prespl3, - pastpartsg, pastpartpl, ----- passpart, - negpressg3 : Str -- matters only for copula + pastpmasc, pastpfem, pastpneutr : Str } ; ComplementCase : Type = {s : Str ; c : Case ; hasPrep : Bool} ; @@ -600,38 +599,36 @@ adjFormsAdjective : AdjForms -> Adjective = \afs -> { = \vf,a,b -> case a of { Ag _ Sg P1 => vf.pressg1 ; Ag _ Sg P2 => vf.pressg2 ; - Ag _ Sg P3 => case b of { - True => vf.pressg3 ; - False => vf.negpressg3 -- matters only for copula - } ; + Ag _ Sg P3 => vf.pressg3 ; Ag _ Pl P1 => vf.prespl1 ; Ag _ Pl P2 => vf.prespl2 ; Ag _ Pl P3 => vf.prespl3 } ; copulaVerbForms : VerbForms = { - inf = "být" ; - pressg1 = "jsem" ; - pressg2 = "jsi" ; + inf = "byť" ; + pressg1 = "som" ; + pressg2 = "si" ; pressg3 = "je" ; - prespl1 = "jsme" ; - prespl2 = "jste" ; - prespl3 = "jsou" ; - pastpartsg = "byl" ; - pastpartpl = "byli" ; - negpressg3 = "ní" ; -- ne is added to this + prespl1 = "sme" ; + prespl2 = "ste" ; + prespl3 = "sú" ; + pastpmasc = "bol" ; + pastpfem = "bola" ; + pastpneutr = "bolo" ; } ; haveVerbForms : VerbForms = { - inf = "mít" ; + inf = "mať" ; pressg1 = "mám" ; pressg2 = "máš" ; - pressg3, negpressg3 = "má" ; + pressg3 = "má" ; prespl1 = "máme" ; prespl2 = "máte" ; - prespl3 = "mají" ; - pastpartsg = "měl" ; - pastpartpl = "měli" ; + prespl3 = "majú" ; + pastpmasc = "mal" ; + pastpfem = "mala" ; + pastpneutr = "malo" ; } ; -- just an example of a traditional paradigm @@ -644,14 +641,15 @@ adjFormsAdjective : AdjForms -> Adjective = \afs -> { in { inf = kupovat ; - pressg1 = kupu + "ji" ; --- kupuju + pressg1 = kupu + "jem" ; pressg2 = kupu + "ješ" ; - pressg3, negpressg3 = kupu + "je" ; + pressg3 = kupu + "je" ; prespl1 = kupu + "jeme" ; prespl2 = kupu + "jete" ; - prespl3 = kupu + "jí" ; --- kupujou - pastpartsg = kupo + "val" ; - pastpartpl = kupo + "vali" ; + prespl3 = kupu + "jú" ; + pastpmasc = "kupoval" ; + pastpfem = "kupovala" ; + pastpneutr = "kupovalo" ; } ; @@ -901,17 +899,17 @@ oper in numeralFormsDeterminer forms Num2_4 ; -- for the numbers 5 upwards - regNumeral : Str -> Str -> Determiner = \pät,piati -> + regNumeral : Str -> Str -> Str -> Str -> Determiner = \pät,piatich,piatim,piatimi -> let forms = { msnom,fsnom,nsnom, fsacc = pät ; - msgen, fsgen, msloc = piati + "ch" ; - msdat = piati + "m" ; - msins, fsins = piati + "mi" ; + msgen, fsgen, msloc = piatich ; + msdat = piatim ; + msins, fsins = piatimi ; } in numeralFormsDeterminer forms Num5 ; invarDeterminer : Str -> NumSize -> Determiner = \sto,size -> - regNumeral sto sto ; + regNumeral sto sto sto sto ; invarNumeral : Str -> Determiner = \s -> invarDeterminer s Num5 ; diff --git a/src/slovak/StructuralSlo.gf b/src/slovak/StructuralSlo.gf index 6fea2106..214ca9fe 100644 --- a/src/slovak/StructuralSlo.gf +++ b/src/slovak/StructuralSlo.gf @@ -4,20 +4,20 @@ concrete StructuralSlo of Structural = CatSlo ** lin and_Conj = mkConj "a" ; by8agent_Prep = mkPrep "od" Gen ; ---- TODO this means "from", there might be no good translation - few_Det = invarNumeral "málo" ; -- CEG 6.8 --- TODO genitive mála + few_Det = invarNumeral "málo" ; ----- for_Prep = mkPrep "pro" accusative ; - from_Prep = mkPrep (pre {"s"|"z" => "ze" ; _ => "z"}) Gen ; ---- consonant clusters + from_Prep = mkPrep (pre {"s"|"z" => "zo" ; _ => "z"}) Gen ; ---- consonant clusters have_V2 = mkV2 haveVerbForms ; - in_Prep = mkPrep (pre {"v"|"m" => "ve" ; _ => "v"}) Loc ; ---- - many_Det = regNumeral "mnoho" "mnoha" ; -- CEG 6.8 ---- - or_Conj = mkConj "nebo" ; - somePl_Det = regNumeral "několik" "několika" ; -- CEG 6.8 ---- - something_NP = {s,clit,prep = \\c => "ně" + coForms ! c ; a = Ag Neutr Sg P3 ; hasClit = False} ; -- CEG 5.6.3 + in_Prep = mkPrep (pre {"v"|"m" => "vo" ; _ => "v"}) Loc ; ---- + many_Det = regNumeral "mnoho" "mnohých" "mnohým" "mnohými" ; -- CEG 6.8 ---- + or_Conj = mkConj "alebo" ; + somePl_Det = {s = \\g,c => (demPronFormsAdjective (mkDemPronForms "nektor") "").s ! g ! Pl ! c ; size = Num5} ; + something_NP = {s,clit,prep = \\c => "nie" + coForms ! c ; a = Ag Neutr Sg P3 ; hasClit = False} ; -- CEG 5.6.3 possess_Prep = mkPrep "" Gen ; that_Quant = demPronFormsAdjective (mkDemPronForms "tamt") "" ; this_Quant = demPronFormsAdjective (mkDemPronForms "t") "to" ; to_Prep = mkPrep "do" Gen ; - with_Prep = mkPrep (pre {"s"|"z" => "se" ; _ => "s"}) Ins ; ---- + with_Prep = mkPrep (pre {"s"|"z" => "so" ; _ => "s"}) Ins ; ---- i_Pron = personalPron (Ag (Masc Anim) Sg P1) ; youSg_Pron = personalPron (Ag (Masc Anim) Sg P2) ;