From 591c487d2cf82c9881c8c0dcdcca8a985b37d1bf Mon Sep 17 00:00:00 2001 From: normundsg Date: Mon, 22 Apr 2013 13:51:48 +0000 Subject: [PATCH] Latvian: miscellaneous --- lib/src/latvian/CatLav.gf | 2 +- lib/src/latvian/ExtraLav.gf | 28 +++++++++++++++---- lib/src/latvian/ExtraLavAbs.gf | 15 ++++++++-- lib/src/latvian/LexiconLav.gf | 34 +++++++++++------------ lib/src/latvian/ParadigmsAdjectivesLav.gf | 16 +++++------ lib/src/latvian/ParadigmsLav.gf | 6 ++++ lib/src/latvian/ParadigmsNounsLav.gf | 24 ++++++++-------- lib/src/latvian/StructuralLav.gf | 19 ++++++------- lib/src/latvian/VerbLav.gf | 5 ++++ 9 files changed, 92 insertions(+), 57 deletions(-) diff --git a/lib/src/latvian/CatLav.gf b/lib/src/latvian/CatLav.gf index 840b330d2..23b0612de 100644 --- a/lib/src/latvian/CatLav.gf +++ b/lib/src/latvian/CatLav.gf @@ -77,7 +77,7 @@ lincat N3 = { s : Number => Case => Str ; g : Gender } ** { p1, p2 : ResLav.Prep ; isPre1, isPre2 : Bool } ; PN = { s : Case => Str ; g : Gender ; n : Number } ; - A = { s : AForm => Str } ; + A = { s : ResLav.AForm => Str } ; A2 = A ** { p : ResLav.Prep } ; V, VA = Verb ; diff --git a/lib/src/latvian/ExtraLav.gf b/lib/src/latvian/ExtraLav.gf index 30875df6c..36d1a4570 100644 --- a/lib/src/latvian/ExtraLav.gf +++ b/lib/src/latvian/ExtraLav.gf @@ -1,17 +1,27 @@ --# -path=.:../abstract:../common:../prelude -concrete ExtraLav of ExtraLavAbs = CatLav ** open +concrete ExtraLav of ExtraLavAbs = CatLav ** open ParadigmsLav, ParadigmsPronounsLav, - ResLav + ResLav, + Prelude in { flags coding = utf8 ; lin - to8uz_Prep = mkPrep "uz" Acc Dat ; - + aiz_Prep = mkPrep "aiz" Gen Dat ; + ap_Prep = mkPrep "ap" Acc Dat ; + gar_Prep = mkPrep "gar" Acc Dat ; + kopsh_Prep = mkPrep "kopš" Gen Dat ; + liidz_Prep = mkPrep "līdz" Dat Dat ; + pa_Prep = mkPrep "pa" Acc Dat ; + par_Prep = mkPrep "par" Acc Dat ; + paar_Prep = mkPrep "pār" Acc Dat ; + pie_Prep = mkPrep "pie" Gen Dat ; + pret_Prep = mkPrep "pret" Acc Dat ; + i8fem_Pron = mkPronoun_I Fem ; we8fem_Pron = mkPronoun_We Fem ; @@ -21,7 +31,14 @@ lin they8fem_Pron = mkPronoun_They Fem ; it8fem_Pron = mkPronoun_It_Sg Fem ; - + + {-empty_Det num def neg = \num,def,neg -> { + s = \\_,_ => [] ; + n = num ; + d = def ; + isNeg = neg + } ;-} + -- Zemāk esošās f-cijas nav ExtraLavAbs, tās ir abstract/Extra.gf GenNP np = {s = \\_,_,_ => np.s ! Gen ; d = Def ; isNeg = np.isNeg} ; @@ -31,5 +48,4 @@ lin IAdvAdv adv = {s = "cik" ++ adv.s} ; have_V3 = mkV3 (mkV "būt") nom_Prep dat_Prep Dat ; - } diff --git a/lib/src/latvian/ExtraLavAbs.gf b/lib/src/latvian/ExtraLavAbs.gf index 1e44cb811..84992440c 100644 --- a/lib/src/latvian/ExtraLavAbs.gf +++ b/lib/src/latvian/ExtraLavAbs.gf @@ -1,8 +1,17 @@ --# -path=.:../abstract:../common:../prelude -abstract ExtraLavAbs = Extra ** { +abstract ExtraLavAbs = Extra ** open ResLav, Prelude in { fun - to8uz_Prep : Prep ; -- "to" in the sense of "uz" (direction) + aiz_Prep : Prep ; + ap_Prep : Prep ; + gar_Prep : Prep ; + kopsh_Prep : Prep ; + liidz_Prep : Prep ; + pa_Prep : Prep ; + par_Prep : Prep ; + paar_Prep : Prep ; + pie_Prep : Prep ; + pret_Prep : Prep ; i8fem_Pron : Pron ; we8fem_Pron : Pron ; @@ -12,5 +21,7 @@ abstract ExtraLavAbs = Extra ** { they8fem_Pron : Pron ; it8fem_Pron : Pron ; + --empty_Det : Number -> Definite -> Bool -> Det ; + have_V3 : V3 ; } diff --git a/lib/src/latvian/LexiconLav.gf b/lib/src/latvian/LexiconLav.gf index bb4d6d570..8a513c8e5 100644 --- a/lib/src/latvian/LexiconLav.gf +++ b/lib/src/latvian/LexiconLav.gf @@ -3,6 +3,7 @@ concrete LexiconLav of Lexicon = CatLav ** open ParadigmsLav, StructuralLav, + ExtraLav, ResLav, Prelude in { @@ -13,8 +14,7 @@ flags lin airplane_N = mkN "lidmašīna" ; - answer_V2S = mkV2S (mkV "atbildēt" third_conjugation) dat_Prep that_Subj ; - -- toP = 'answer to [Person]' = 'atbildēt [kam?]' + answer_V2S = mkV2S (mkV "atbildēt" third_conjugation) dat_Prep that_Subj ; -- toP = 'answer to [Person]' = 'atbildēt [kam?]' apartment_N = mkN "dzīvoklis" ; apple_N = mkN "ābols" ; art_N = mkN "māksla" ; @@ -39,8 +39,7 @@ lin bread_N = mkN "maize" ; break_V2 = mkV2 (mkV "lauzt" "laužu" "lauzu") acc_Prep ; broad_A = mkA "plats" ; - brother_N2 = mkN2 (mkN "brālis") gen_Prep True; - -- Ģenitīvs nav kā piederība, bet kā relācija: "Jāņa/tēva brālis", bet ne "mans brālis" (?) + brother_N2 = mkN2 (mkN "brālis") gen_Prep True; -- Ģenitīvs nav kā piederība, bet kā relācija: "Jāņa/tēva brālis", bet ne "mans brālis" (?) brown_A = mkA "brūns" ; butter_N = mkN "sviests" ; buy_V2 = mkV2 (mkV "pirkt" "pērku" "pirku") acc_Prep ; @@ -64,13 +63,13 @@ lin computer_N = mkN "dators" ; country_N = mkN "valsts" ; cousin_N = mkN "brālēns" ; -- FIXME: brālēns/māsīca angļiem ir vienāds... - cow_N = mkN "govs" ; + cow_N = mkN "govs" feminine ; die_V = mkV "nomirt" "nomirstu" "nomiru"; dirty_A = mkA "netīrs" ; distance_N3 = mkN3 (mkN "attālums") from_Prep to_Prep ; -- no / līdz doctor_N = mkN "ārsts" ; dog_N = mkN "suns" ; - door_N = mkN "durvis" ; + door_N = mkN "durvis" feminine ; drink_V2 = mkV2 (mkV "dzert" "dzeru" "dzēru") acc_Prep; --easy_A2V = mkA2V (regA "easy") forP ; -- FIXME: nav tādas konstrukcijas latviešu val. eat_V2 = mkV2 (mkV "ēst" "ēdu" "ēdu") acc_Prep ; @@ -80,7 +79,7 @@ lin father_N2 = mkN2 (mkN "tēvs") gen_Prep True ; fear_VS = mkVS (mkV "baidīties" third_conjugation) that_Subj ; find_V2 = mkV2 (mkV "atrast" "atrodi" "atradu") acc_Prep ; - fish_N = mkN "zivs" ; + fish_N = mkN "zivs" feminine ; floor_N = mkN "grīda" ; forget_V2 = mkV2 (mkV "aizmirst" "aizmirstu" "aizmirsu") acc_Prep ; fridge_N = mkN "ledusskapis" ; @@ -252,30 +251,30 @@ lin back_N = mkN "mugura" ; bark_N = mkN "miza" ; belly_N = mkN "vēders" ; - blood_N = mkN "asinis" Fem ; + blood_N = mkN "asinis" feminine ; bone_N = mkN "kauls" ; - breast_N = mkN "krūts" Fem ; + breast_N = mkN "krūts" feminine ; cloud_N = mkN "mākonis" ; day_N = mkN "diena" ; dust_N = mkN "putekļi" ; - ear_N = mkN "auss" ; + ear_N = mkN "auss" feminine ; earth_N = mkN "zeme" ; egg_N = mkN "ola" ; - eye_N = mkN "acs" ; + eye_N = mkN "acs" feminine ; fat_N = mkN "tauki" ; feather_N = mkN "spalva" ; fingernail_N = mkN "nags" ; - fire_N = mkN "uguns" ; + fire_N = mkN "uguns" feminine ; flower_N = mkN "puķe" ; fog_N = mkN "migla" ; foot_N = mkN "pēda" ; forest_N = mkN "mežs" ; grass_N = mkN "zāle" ; - guts_N = mkN "zarnas" ; -- FIXME: no singular + guts_N = mkN "zarnas" ; hair_N = mkN "mati" ; hand_N = mkN "roka" ; head_N = mkN "galva" ; - heart_N = mkN "sirds" ; + heart_N = mkN "sirds" feminine ; horn_N = mkN "rags" ; husband_N = mkN "vīrs" ; --TODO: kāpēc nav parametrs tāpat kā tēvam? ice_N = mkN "ledus" ; @@ -283,11 +282,11 @@ lin leaf_N = mkN "lapa" ; leg_N = mkN "kāja" ; liver_N = mkN "aknas" ; - louse_N = mkN "uts" ; + louse_N = mkN "uts" feminine ; mouth_N = mkN "mute" ; name_N = mkN "vārds" ; neck_N = mkN "kakls" ; - night_N = mkN "nakts" ; + night_N = mkN "nakts" feminine ; nose_N = mkN "deguns" ; person_N = mkN "persona" ; rain_N = mkN "lietus" ; @@ -373,7 +372,6 @@ lin today_Adv = mkAdv "šodien" ; uncertain_A = mkA "nepārliecināts" ; -oper - par_Prep = mkPrep "par" Acc Dat ; +--oper par_Prep = mkPrep "par" Acc Dat ; } diff --git a/lib/src/latvian/ParadigmsAdjectivesLav.gf b/lib/src/latvian/ParadigmsAdjectivesLav.gf index 5e6dfbe22..c8cd495c0 100644 --- a/lib/src/latvian/ParadigmsAdjectivesLav.gf +++ b/lib/src/latvian/ParadigmsAdjectivesLav.gf @@ -39,20 +39,20 @@ oper -- Indeclinable adjective: theoretically, any #vowel ending mkAdjective_Indecl : Str -> Adj = \lemma -> { s = table{ - AAdj Superl Indef _ _ _ => NON_EXISTENT; - AAdj _ _ _ _ _ => lemma ; - AAdv d => mkAdjective_Adverb lemma ! d-- TODO - notestēt šādu keisu + AAdj Superl Indef _ _ _ => NON_EXISTENT ; + AAdj _ _ _ _ _ => lemma ; + AAdv d => mkAdjective_Adverb lemma ! d-- TODO - notestēt šādu keisu } } ; -- Qualitative adjective: -s, -š mkAdjective_Qual : Str -> Adj = \lemma -> { s = table { - AAdj Posit d g n c => mkAdjective_Pos lemma d ! g ! n ! c; - AAdj Compar d g n c => mkAdjective_Comp lemma d ! g ! n ! c; - AAdj Superl Def g n c => mkAdjective_Sup lemma ! g ! n ! c; - AAdj Superl Indef _ _ _ => NON_EXISTENT; - AAdv d => mkAdjective_Adverb lemma ! d + AAdj Posit d g n c => mkAdjective_Pos lemma d ! g ! n ! c ; + AAdj Compar d g n c => mkAdjective_Comp lemma d ! g ! n ! c ; + AAdj Superl Def g n c => mkAdjective_Sup lemma ! g ! n ! c ; + AAdj Superl Indef _ _ _ => NON_EXISTENT ; + AAdv d => mkAdjective_Adverb lemma ! d } } ; diff --git a/lib/src/latvian/ParadigmsLav.gf b/lib/src/latvian/ParadigmsLav.gf index ab77c69be..c7c46a7a3 100644 --- a/lib/src/latvian/ParadigmsLav.gf +++ b/lib/src/latvian/ParadigmsLav.gf @@ -18,6 +18,9 @@ oper singular : Number = Sg ; plural : Number = Pl ; + masculine : Gender = Masc ; + feminine : Gender = Fem ; + second_conjugation : VerbConj = C2 ; third_conjugation : VerbConj = C3 ; @@ -27,6 +30,9 @@ oper accusative : Case = Acc ; locative : Case = Loc ; + active_voice : PartType = IsUsi ; + passive_voice : PartType = TsTa ; + mkN = overload { mkN : (lemma : Str) -> N = \l -> lin N (mkNoun l) ; diff --git a/lib/src/latvian/ParadigmsNounsLav.gf b/lib/src/latvian/ParadigmsNounsLav.gf index 5535d8dde..870d86727 100644 --- a/lib/src/latvian/ParadigmsNounsLav.gf +++ b/lib/src/latvian/ParadigmsNounsLav.gf @@ -132,7 +132,7 @@ oper Dat => stem + "am" ; Acc => stem + "u" ; Loc => stem + "ā" ; - Voc => stem + Voc => stem } ; Pl => table { Nom => stem + "i" ; @@ -140,7 +140,7 @@ oper Dat => stem + "iem" ; Acc => stem + "us" ; Loc => stem + "os" ; - Voc => stem + "i" + Voc => stem + "i" } } ; g = Masc @@ -190,7 +190,7 @@ oper Dat => stem + "um" ; Acc => stem + "u" ; Loc => stem + "ū" ; - Voc => stem + "u" + Voc => stem + "u" } ; Pl => table { Nom => stem + "i" ; @@ -198,7 +198,7 @@ oper Dat => stem + "iem" ; Acc => stem + "us" ; Loc => stem + "os" ; - Voc => stem + "i" + Voc => stem + "i" } } ; g = Masc @@ -217,7 +217,7 @@ oper Dat => case gend of {Fem => stem + "ai" ; Masc => stem + "am"} ; Acc => stem + "u" ; Loc => stem + "ā" ; - Vod => stem + "a" + Voc => stem + "a" } ; Pl => table { Nom => stem + "as" ; @@ -225,7 +225,7 @@ oper Dat => stem + "ām" ; Acc => stem + "as" ; Loc => stem + "ās" ; - Voc => stem + "as" + Voc => stem + "as" } } ; g = gend @@ -244,7 +244,7 @@ oper Dat => case gend of {Fem => stem + "ei" ; Masc => stem + "em"} ; Acc => stem + "i" ; Loc => stem + "ē" ; - Voc => stem + "e" + Voc => stem + "e" } ; Pl => table { Nom => stem + "es" ; @@ -252,7 +252,7 @@ oper Dat => stem + "ēm" ; Acc => stem + "es" ; Loc => stem + "ēs" ; - Voc => stem + "es" + Voc => stem + "es" } } ; g = gend @@ -273,7 +273,7 @@ oper Dat => case gend of {Fem => stem + "ij" ; Masc => stem + "im"} ; Acc => stem + "i" ; Loc => stem + "ī" ; - Voc => stem + "s" + Voc => stem + "s" } } ; Pl => table { @@ -282,7 +282,7 @@ oper Dat => stem + "īm" ; Acc => stem + "is" ; Loc => stem + "īs" ; - Voc => stem + "is" + Voc => stem + "is" } } ; g = gend @@ -300,7 +300,7 @@ oper Dat => NON_EXISTENT ; Acc => stem + "šanos" ; Loc => NON_EXISTENT ; - Voc => stem + "šanās" + Voc => stem + "šanās" } ; Pl => table { Nom => stem + "šanās" ; @@ -308,7 +308,7 @@ oper Dat => NON_EXISTENT ; Acc => stem + "šanās" ; Loc => NON_EXISTENT ; - Voc => stem + "šanās" + Voc => stem + "šanās" } } ; g = Fem diff --git a/lib/src/latvian/StructuralLav.gf b/lib/src/latvian/StructuralLav.gf index 0bedf6ca4..09c1f1d8f 100644 --- a/lib/src/latvian/StructuralLav.gf +++ b/lib/src/latvian/StructuralLav.gf @@ -15,7 +15,6 @@ flags lin language_title_Utt = ss "latviešu valoda" ; - -- TODO: kā ar loģikā lietotajiem 'visi', 'katrs' ? every_Det = { s = (\\g,c => (mkPronoun_Gend "ikviens").s ! g ! Sg ! c) ; n = Sg ; @@ -112,24 +111,23 @@ lin above_Prep = mkPrep "virs" Gen Dat ; after_Prep = mkPrep "pēc" Gen Dat ; before_Prep = mkPrep "pirms" Gen Dat ; - behind_Prep = mkPrep "aiz" Gen Dat ; + behind_Prep = mkPrep "aiz" Gen Dat ; -- taču "aiz" nav viennozīmīgi "behind" between_Prep = mkPrep "starp" Acc Dat ; for_Prep = mkPrep "priekš" Gen Dat ; from_Prep = mkPrep "no" Gen Dat ; on_Prep = mkPrep "uz" Gen Dat ; with_Prep = mkPrep "ar" Acc Dat ; -- ar sievu, ar sievām in_Prep = mkPrep Loc ; - to_Prep = mkPrep "līdz" Dat Dat ; -- See also: ExtraLav.to8uz_Prep + to_Prep = mkPrep "uz" Acc Dat ; -- See also: ExtraLav.liidz_Prep, pie_Prep possess_Prep = mkPrep Gen ; -- FIXME: vajadzētu vārdu secību otrādi - pirms paskaidrojamā vārda likt under_Prep = mkPrep "zem" Gen Dat ; - with_Prep = mkPrep "ar" Acc Dat ; without_Prep = mkPrep "bez" Gen Dat ; - by8agent_Prep = nom_Prep ; -- TODO: should get rid of this Prep + by8agent_Prep = nom_Prep ; -- TODO: should get rid of this Prep; taču tas parādās Eng2Abs kokos... -- FIXME: nom_Prep vs. dat_Prep/accPrep by8means_Prep = mkPrep "ar" Acc Dat ; - during_Prep = mkPrep "laikā" Gen Gen ; -- FIXME: laikam postfix 'X laikā' jāliek + during_Prep = mkPrep Loc ; in8front_Prep = mkPrep "priekšā" Dat Dat ; - --part_Prep = mkPrep Gen ; --FIXME - vajadzētu vārdu secību otrādi - pirms paskaidrojamā vārda likt - through_Prep = mkPrep "cauri" Dat Dat ; + part_Prep = mkPrep Gen ; --FIXME - vajadzētu vārdu secību otrādi - pirms paskaidrojamā vārda likt + through_Prep = mkPrep "caur" Acc Dat ; except_Prep = mkPrep "izņemot" Acc Acc ; very_AdA = mkAdA "ļoti" ; @@ -277,17 +275,18 @@ oper lai_Subj = ss "lai" ; kameer_Subj = ss "kamēr" ; - emptyPl_Det = { -- TODO: pašlaik netiek izmantots, jāpārnes uz ExtraLav(?) kā dsk. alternatīva a_Art, the_Art, no_Quant, every_Det + {- Netiek izmantoti; to vietā sk. ExtraLav + emptyPl_Det = { s : Gender => Case => Str = \\_,_ => [] ; n = Pl ; d = Indef } ; - emptySg_Det = { -- TODO: analoģiski kā emptyPl_Det s : Gender => Case => Str = \\_,_ => [] ; n = Sg ; d = Indef } ; + -} no_Utt = ss "nē" ; diff --git a/lib/src/latvian/VerbLav.gf b/lib/src/latvian/VerbLav.gf index 9ff464394..7925061a0 100644 --- a/lib/src/latvian/VerbLav.gf +++ b/lib/src/latvian/VerbLav.gf @@ -170,6 +170,7 @@ lin objNeg = False } ; + -- TODO: vai VP nevajag papildlauku isPass? PassV2 v2 = { v = v2 ; compl = \\_ => [] ; @@ -177,6 +178,10 @@ lin objNeg = False -- FIXME: inherit from the object } ; + -- TODO: šajā brīdī ir jāignorē prep (by8agent_Prep); tas jāaizstāj ar v2.topic + -- Tad varēs dzēst ārā komentāru pie StructuralLav.by8agent_Prep + VPSlashPrep vp prep = vp ** {p = prep} ; + AdvVP vp adv = insertObj (\\_ => adv.s) vp ; AdVVP adv vp = insertObjPre (\\_ => adv.s) vp ;