From d8d8b36f1c583df6e0eafe5bb1eb4c4db6fb33d9 Mon Sep 17 00:00:00 2001 From: aarne Date: Mon, 9 Nov 2015 11:02:09 +0000 Subject: [PATCH] last fixes to make AppEst compile --- examples/app/Makefile | 8 +- lib/src/translator/DictionaryEst.gf | 318 +++++++++++++++++++++++++++- 2 files changed, 316 insertions(+), 10 deletions(-) diff --git a/examples/app/Makefile b/examples/app/Makefile index 26023d7ce..be54632ea 100644 --- a/examples/app/Makefile +++ b/examples/app/Makefile @@ -1,4 +1,4 @@ -all: Phrasebook App12.pgf +all: Phrasebook App15.pgf PROBSFILE=./app.probs GFODIR=./gfos @@ -15,6 +15,7 @@ APP11=AppEng.pgf AppBul.pgf AppChi.pgf AppGer.pgf AppSwe.pgf AppHin.pgf AppFin.p APP12=$(APP11) AppCat.pgf APP13=$(APP12) AppJpn.pgf APP14=$(APP13) AppTha.pgf +APP15=$(APP14) AppEst.pgf # With dependencies: App11.pgf: $(APP11) @@ -25,6 +26,8 @@ App13.pgf: $(APP13) $(GFMKT) -name=App13 $(APP13) +RTS -K200M App14.pgf: $(APP14) $(GFMKT) -name=App14 $(APP14) +RTS -K200M +App15.pgf: $(APP15) + $(GFMKT) -name=App15 $(APP15) +RTS -K200M # Without dependencies: App11: @@ -35,6 +38,8 @@ App13: $(GFMKT) -name=App13 $(APP13) +RTS -K200M App14: $(GFMKT) -name=App14 $(APP14) +RTS -K200M +App15: + $(GFMKT) -name=App15 $(APP15) +RTS -K200M # App grammars for individual languages AppEng.pgf:: ; $(GFMKT) -name=AppEng AppEng.gf @@ -42,6 +47,7 @@ AppBul.pgf:: ; $(GFMKT) -name=AppBul AppBul.gf AppCat.pgf:: ; $(GFMKT) -name=AppCat AppCat.gf +RTS -K100M AppChi.pgf:: ; $(GFMKT) -name=AppChi AppChi.gf +RTS -K100M AppDut.pgf:: ; $(GFMKT) -name=AppDut AppDut.gf +RTS -K64M +AppEst.pgf:: ; $(GFMKT) -name=AppEst AppEst.gf +RTS -K64M AppFin.pgf:: ; $(GFMKT) -name=AppFin AppFin.gf +RTS -K64M AppGer.pgf:: ; $(GFMKT) -name=AppGer AppGer.gf +RTS -K64M AppHin.pgf:: ; $(GFMKT) -name=AppHin AppHin.gf diff --git a/lib/src/translator/DictionaryEst.gf b/lib/src/translator/DictionaryEst.gf index 41e18b76c..bf62e45c9 100644 --- a/lib/src/translator/DictionaryEst.gf +++ b/lib/src/translator/DictionaryEst.gf @@ -3,10 +3,310 @@ concrete DictionaryEst of Dictionary = CatEst ** open ParadigmsEst, (S = StructuralEst), (L = LexiconEst), (R = ResEst), - MorphoEst, SyntaxEst, (E = ExtraEst), Prelude in { + MorphoEst, SyntaxEst, (E = ExtraEst), (X = ConstructX), Prelude in { flags coding=utf8 ; +--------------------- +-- from StructuralEst, AR 9/11/2015 + lin + above_Prep = postGenPrep "peal" ; + after_Prep = postGenPrep "järel" ; + + all_Predet = {s = \\n,c => + let + kaiket = caseTable n (mkN "kõik") + in + case npform2case n c of { + Nom => "kõik" ; + k => kaiket ! k + } + } ; + almost_AdA, almost_AdN = ss "peaaegu" ; + although_Subj = ss "kuigi" ; + always_AdV = ss "alati" ; +-- and_Conj = {s1 = [] ; s2 = "ja" ; n = Pl} ; + because_Subj = ss "sellepärast" ; + before_Prep = prePrep partitive "enne" ; + behind_Prep = postGenPrep "taga" ; + between_Prep = postGenPrep "vahel" ; + both7and_DConj = sd2 "nii" "kui ka" ** {n = Pl} ; + but_PConj = ss "aga" ; + by8agent_Prep = postGenPrep "poolt" ; + by8means_Prep = casePrep adessive ; + can8know_VV = mkVV (mkV "oskama" "osata") ; + can_VV = mkVV (mkV "võima" "võida") ; + during_Prep = postGenPrep "ajal" ; + either7or_DConj = sd2 "kas" "või" ** {n = Sg} ; + everybody_NP = makeNP (mkN "igaüks") Sg ; +---- every_Det = mkDet Sg (mkN "iga") ; + everything_NP = makeNP ((mkN "kõik") ** {lock_N = <>}) Sg ; + everywhere_Adv = ss "kõikjal" ; +---- few_Det = mkDet Sg (mkN "mõni") ; +--- first_Ord = {s = \\n,c => (mkN "ensimmäinen").s ! NCase n c} ; + for_Prep = casePrep allative ; + from_Prep = casePrep elative ; + he_Pron = mkPronoun "tema" "tema" "teda" Sg P3 ; + here_Adv = ss "siin" ; + here7to_Adv = ss "siia" ; + here7from_Adv = ss "siit" ; + how_IAdv = ss "kuidas" ; + how8much_IAdv = ss "kui palju" ; + how8many_IDet = { + s = \\c => "kui" ++ (mkN "mitu" "mitme" "mitut" "TODO" "TODO" "TODO").s ! NCase Sg c ; + n = Sg ; + isNum = False + } ; + if_Subj = ss "kui" ; + in8front_Prep = postGenPrep "ees" ; + i_Pron = mkPronoun "mina" "minu" "mind" Sg P1 ; + in_Prep = casePrep inessive ; + it_Pron = { + s = \\c => pronSe.s ! npform2case Sg c ; + a = agrP3 Sg ; + isPron = False + } ; + less_CAdv = X.mkCAdv "vähem" "kui" ; +---- many_Det = mkDet Sg (mkN "mitu") ; + more_CAdv = X.mkCAdv "rohkem" "kui" ; + most_Predet = {s = \\n,c => (nForms2N (dSuurin "MOST")).s ! NCase n (npform2case n c)} ; +---- much_Det = mkDet Sg {s = \\_ => "palju"} ; + must_VV = mkVVf (mkV "pidama" "pidada" "peab" "peetakse" "pidage" "pidi" "pidanud" "peetud") infMa ; + no_Utt = ss "ei" ; + on_Prep = casePrep adessive ; +--- one_Quant = mkDet Sg DEPREC + only_Predet = {s = \\_,_ => "ainult"} ; +-- or_Conj = {s1 = [] ; s2 = "või" ; n = Pl} ; + otherwise_PConj = ss "muidu" ; + part_Prep = casePrep partitive ; + please_Voc = ss ["palun"] ; --- number + possess_Prep = casePrep genitive ; + quite_Adv = ss "üsna" ; + she_Pron = mkPronoun "tema" "tema" "teda" Sg P3 ; + so_AdA = ss "nii" ; + somebody_NP = { + s = \\c => jokuPron ! Sg ! npform2case Sg c ; + a = agrP3 Sg ; + isPron = False + } ; + someSg_Det = heavyDet { + s = jokuPron ! Sg ; + isNum = False ; isDef = True ; n = Sg + } ; + somePl_Det = heavyDet { + s = jokuPron ! Pl ; + isNum = False ; isDef = True ; + n = Pl + } ; + something_NP = { + s = \\c => mikaInt ! Sg ! npform2case Sg c ; + a = agrP3 Sg ; + isPron = False + } ; + somewhere_Adv = ss "kuskil" ; + that_Quant = heavyQuant { + s = table (MorphoEst.Number) { + Sg => table (MorphoEst.Case) { + c => (mkPronoun "too" "tolle" "toda" Sg P3).s ! NPCase c + } ; + Pl => table (MorphoEst.Case) { + c => (mkPronoun "nood" "nonde" "noid" Sg P3).s ! NPCase c + } + } ; + isNum = False ; isDef = True ; + } ; + that_Subj = ss "et" ; + there_Adv = ss "seal" ; + there7to_Adv = ss "sinna" ; + there7from_Adv = ss "sealt" ; + therefore_PConj = ss "sellepärast" ; + they_Pron = mkPronoun "nemad" "nende" "neid" Pl P3 ; + this_Quant = heavyQuant { + s = table (MorphoEst.Number) { + Sg => table (MorphoEst.Case) { + c => (mkPronoun "see" "selle" "seda" Sg P3).s ! NPCase c + } ; + Pl => table (MorphoEst.Case) { + c => (mkPronoun "need" "nende" "neid" Sg P3).s ! NPCase c + } + } ; + isNum = False ; isDef = True ; + } ; + through_Prep = postGenPrep "kaudu" ; + too_AdA = ss "liiga" ; + to_Prep = casePrep allative ; + under_Prep = postGenPrep "all" ; + very_AdA = ss "väga" ; + want_VV = mkVV (mkV "tahtma") ; + we_Pron = mkPronoun "meie" "meie" "meid" Pl P1 ; + whatPl_IP = { + s = table {NPAcc => "mida" ; c => mikaInt ! Pl ! npform2case Pl c} ; + n = Pl + } ; + whatSg_IP = { + s = \\c => mikaInt ! Sg ! npform2case Sg c ; + n = Sg + } ; + when_IAdv = ss "kui" ; + when_Subj = ss "kui" ; + where_IAdv = ss "kus" ; + which_IQuant = { s = mikaInt } ; + whoSg_IP = { + s = table {NPAcc => "keda" ; c => kukaInt ! Sg ! npform2case Sg c} ; + n = Sg + } ; + whoPl_IP = { + s = table {NPAcc => "keda" ; c => kukaInt ! Pl ! npform2case Pl c} ; + n = Pl + } ; + why_IAdv = ss "miks" ; + without_Prep = prePrep partitive "ilma" ; + with_Prep = prePrep comitative "koos" ; + yes_Utt = ss "jah" ; + youSg_Pron = mkPronoun "sina" "sinu" "sind" Sg P2 ; + youPl_Pron = mkPronoun "teie" "teie" "teid" Pl P2 ; + youPol_Pron = + let p = mkPronoun "teie" "teie" "teid" Pl P2 in + {s = p.s ; a = AgPol} ; + +oper + jokuPron : MorphoEst.Number => (MorphoEst.Case) => Str = + let + keegi = mkN "keegi" "kellegi" "kedagi" "kellegisse" "kellegi" "kedagi" + in + table { + Sg => table { + c => keegi.s ! NCase Sg c + } ; + Pl => table { + c => keegi.s ! NCase Sg c + } + } ; + + -- TODO: maybe remove + jokinPron : MorphoEst.Number => (MorphoEst.Case) => Str = + table { + Sg => table { + Nom => "miski" ; + Iness => "milleski" ; + Elat => "millestki" ; + Ablat => "milleltki" ; + Transl => "millekski" ; + c => mikaInt ! Sg ! c + "gi" + } ; + Pl => table { --TODO correct these plurals + Nom => "miski" ; + Iness => "milleski" ; + Elat => "millestki" ; + Ablat => "milleltki" ; + Transl => "millekski" ; + c => mikaInt ! Pl ! c + "gi" + } + } ; + + --TODO does this work? + mikaInt : MorphoEst.Number => (MorphoEst.Case) => Str = + let { + mi = mkN "mille" + } in + table { + Sg => table { + Nom => "mis" ; + Gen => "mille" ; + Part => "mida" ; + c => mi.s ! NCase Sg c + } ; + Pl => table { + Nom => "mis" ; + Gen => "mille" ; + Part => "mida" ; + c => mi.s ! NCase Pl c + } + } ; + + kukaInt : MorphoEst.Number => (MorphoEst.Case) => Str = + let + kuka = mkN "kes" "kelle" "keda" "kellesse" + "kellede" "keda" ; + in + table { + Sg => table { + c => kuka.s ! NCase Sg c + } ; + Pl => table { + Nom => "kes" ; + c => kuka.s ! NCase Pl c + } + } ; + mikaanPron : MorphoEst.Number => (MorphoEst.Case) => Str = \\n,c => + case of { + <_,Nom> => "ükski" ; + <_,Part> => "ühtegi" ; + <_,Gen> => "ühegi" ; + _ => mikaInt ! n ! c + "gi" ----ki + } ; + + kukaanPron : MorphoEst.Number => (MorphoEst.Case) => Str = + table { + Sg => table { + Nom => "keegi" ; + Part => "kedagi" ; + c => kukaInt ! Sg ! c + "gi" + } ; + Pl => table { + Nom => "ketkään" ; + Part => "keitään" ; + c => kukaInt ! Pl ! c + "gi" + } + } ; + + +oper + makeNP : N -> MorphoEst.Number -> CatEst.NP ; + makeNP noun num = { + s = \\c => noun.s ! NCase num (npform2case num c) ; + a = agrP3 num ; + isPron = False ; + lock_NP = <> + } ; + +lin + not_Predet = {s = \\_,_ => "ei"} ; + + no_Quant = heavyQuant { + s = \\n,c => "mitte" ++ mikaanPron ! n ! c ; + isNum = False ; isDef = True ; + } ; + + if_then_Conj = {s1 = "kui" ; s2 = "siis" ; n = Sg} ; + nobody_NP = { + s = \\c => "mitte" ++ kukaanPron ! Sg ! npform2case Sg c ; + a = agrP3 Sg ; + isPron = False + } ; + + nothing_NP = { + s = \\c => "mitte" ++ mikaanPron ! Sg ! npform2case Sg c ; + a = agrP3 Sg ; + isPron = False + } ; + + at_least_AdN = ss "vähemalt" ; + at_most_AdN = ss "kuni" ; + + as_CAdv = X.mkCAdv "sama palju" "kui" ; + + except_Prep = postPrep partitive "väljaarvatud" ; + + have_V2 = mkV2 (caseV adessive vOlema) ; + + -- Kaarel: TODO: not sure what this is... + -- Name of the language in that language, s/suomi/eesti/ :--P + lin language_title_Utt = ss "eesti" ; + + + +---------------------- -- Conjunctions lin amp_Conj = mkConj "&" ; @@ -34704,7 +35004,7 @@ lin haul_V = mkV "pukseerima" | mkV "sikutama" ; lin haul_V2 = mkV2 "pukseerima" | mkV2 "sikutama" ; lin haunt_V2 = mkV2 "kummitama" | mkV2 "painama" | mkV2 "sageli külastama" ; lin have_V = mkV "olema" | mkV "omama" | mkV "pidama" | mkV "saama" | mkV "võtma" ; -lin have_V2 = mkV2 "olema" | mkV2 "omama" | mkV2 "pidama" | mkV2 "saama" | mkV2 "võtma" ; +----lin have_V2 = mkV2 "olema" | mkV2 "omama" | mkV2 "pidama" | mkV2 "saama" | mkV2 "võtma" ; lin have_VV = mkVV "olema" | mkVV "omama" | mkVV "pidama" | mkVV "saama" | mkVV "võtma" ; lin have_on_V = mkV "kavas olema" | mkV "ninapidi vedama" | mkV "seljas olema" ; lin have_on_V2 = mkV2 "kavas olema" | mkV2 "ninapidi vedama" | mkV2 "seljas olema" ; @@ -35679,7 +35979,7 @@ lin murder_V2 = mkV2 "mõrvama" | mkV2 "tapma" ; lin murmur_V = mkV "pomisema" ; lin murmur_V2 = mkV2 "pomisema" ; lin muss_V2 = mkV2 "segamini ajama" ; -lin must_VV = mkVV "kohustatud olema" | mkVV "pidama" ; +----lin must_VV = mkVV "kohustatud olema" | mkVV "pidama" ; lin muster_V = mkV "koguma" ; lin muster_V2 = mkV2 "koguma" ; lin mute_V2 = mkV2 "summutama" ; @@ -38575,7 +38875,7 @@ lin wank_V = mkV "pihku lööma" ; lin want_V = mkV "tahtma" ; lin want_V2 = mkV2 "tahtma" ; lin want_V2V = mkV2V "tahtma" ; -lin want_VV = mkVV "tahtma" ; +----lin want_VV = mkVV "tahtma" ; lin wanton_V = mkV "õelutsema" | mkV "pillama" ; lin war_V = mkV "sõdima" ; lin warble_V = mkV "trillerdama" ; @@ -39036,7 +39336,7 @@ lin even_Adv = ParadigmsEst.mkAdv "isegi" | ParadigmsEst.mkAdv "paaris" | Paradi lin ever_Adv = ParadigmsEst.mkAdv "alalõpmata" | ParadigmsEst.mkAdv "alati" | ParadigmsEst.mkAdv "kunagi" | ParadigmsEst.mkAdv "väga" ; lin evermore_Adv = ParadigmsEst.mkAdv "edaspidi" | ParadigmsEst.mkAdv "igavesti" ; lin everyplace_Adv = ParadigmsEst.mkAdv "igal pool" ; -lin everywhere_Adv = ParadigmsEst.mkAdv "igale poole" | ParadigmsEst.mkAdv "igal pool" | ParadigmsEst.mkAdv "kõikjal" ; +----lin everywhere_Adv = ParadigmsEst.mkAdv "igale poole" | ParadigmsEst.mkAdv "igal pool" | ParadigmsEst.mkAdv "kõikjal" ; lin ex_officio_Adv = ParadigmsEst.mkAdv "ametikohast tulenevalt" ; lin express_Adv = ParadigmsEst.mkAdv "kiir-" | ParadigmsEst.mkAdv "kiirrong" | ParadigmsEst.mkAdv "selgesõnaline" | ParadigmsEst.mkAdv "väljendama" ; lin extempore_Adv = ParadigmsEst.mkAdv "eksprompt" | ParadigmsEst.mkAdv "hetke ajel" | ParadigmsEst.mkAdv "peast" ; @@ -39110,7 +39410,7 @@ lin heavenwards_Adv = ParadigmsEst.mkAdv "taeva poole" ; lin heavily_Adv = ParadigmsEst.mkAdv "kõvasti" | ParadigmsEst.mkAdv "raskelt" | ParadigmsEst.mkAdv "tugevalt" ; lin heavy_Adv = ParadigmsEst.mkAdv "kõva" | ParadigmsEst.mkAdv "ränk" | ParadigmsEst.mkAdv "raske" | ParadigmsEst.mkAdv "tihe" | ParadigmsEst.mkAdv "tõsine roll" | ParadigmsEst.mkAdv "turske" ; lin hence_Adv = ParadigmsEst.mkAdv "nüüdsest" | ParadigmsEst.mkAdv "seega" | ParadigmsEst.mkAdv "seeläbi" | ParadigmsEst.mkAdv "siit ka" | ParadigmsEst.mkAdv "siit tulenevalt" ; -lin here_Adv = ParadigmsEst.mkAdv "kohal" | ParadigmsEst.mkAdv "siia" | ParadigmsEst.mkAdv "siin" ; +----lin here_Adv = ParadigmsEst.mkAdv "kohal" | ParadigmsEst.mkAdv "siia" | ParadigmsEst.mkAdv "siin" ; lin hereabout_Adv = ParadigmsEst.mkAdv "siinkandis" ; lin hereabouts_Adv = ParadigmsEst.mkAdv "siinkandis" ; lin hereafter_Adv = ParadigmsEst.mkAdv "edaspidi" | ParadigmsEst.mkAdv "nüüdsest peale" | ParadigmsEst.mkAdv "tulevane elu" ; @@ -39317,7 +39617,7 @@ lin quaveringly_Adv = ParadigmsEst.mkAdv "ebajärjekindlalt" ; lin quick_Adv = ParadigmsEst.mkAdv "äkiline" | ParadigmsEst.mkAdv "elav" | ParadigmsEst.mkAdv "hell koht" | ParadigmsEst.mkAdv "kähku" | ParadigmsEst.mkAdv "kiire" | ParadigmsEst.mkAdv "taibukas" ; lin quicker_Adv = ParadigmsEst.mkAdv "kiiremini" | ParadigmsEst.mkAdv "rutem" ; lin quietly_Adv = ParadigmsEst.mkAdv "liikumatult" | ParadigmsEst.mkAdv "tasa" | ParadigmsEst.mkAdv "vaikselt" ; -lin quite_Adv = ParadigmsEst.mkAdv "hoopis" | ParadigmsEst.mkAdv "mõnevõrra" | ParadigmsEst.mkAdv "päris" | ParadigmsEst.mkAdv "täiesti" | ParadigmsEst.mkAdv "täpselt" | ParadigmsEst.mkAdv "üsna" ; +----lin quite_Adv = ParadigmsEst.mkAdv "hoopis" | ParadigmsEst.mkAdv "mõnevõrra" | ParadigmsEst.mkAdv "päris" | ParadigmsEst.mkAdv "täiesti" | ParadigmsEst.mkAdv "täpselt" | ParadigmsEst.mkAdv "üsna" ; lin raggedly_Adv = ParadigmsEst.mkAdv "ebaühtlane" | ParadigmsEst.mkAdv "kärisevalt" | ParadigmsEst.mkAdv "sakiliselt" ; lin rather_Adv = ParadigmsEst.mkAdv "kaunis" | ParadigmsEst.mkAdv "küllaltki" | ParadigmsEst.mkAdv "meelsamini" | ParadigmsEst.mkAdv "pigem" | ParadigmsEst.mkAdv "üpris" | ParadigmsEst.mkAdv "üsna" ; lin rattling_Adv = ParadigmsEst.mkAdv "äge" | ParadigmsEst.mkAdv "elav" | ParadigmsEst.mkAdv "lõgisemine" | ParadigmsEst.mkAdv "logisev" ; @@ -39366,7 +39666,7 @@ lin sometime_Adv = ParadigmsEst.mkAdv "kunagi" | ParadigmsEst.mkAdv "millalgi" ; lin sometimes_Adv = ParadigmsEst.mkAdv "mõnikord" ; lin someway_Adv = ParadigmsEst.mkAdv "kuidagi" | ParadigmsEst.mkAdv "mingil viisil" ; lin somewhat_Adv = ParadigmsEst.mkAdv "mõnevõrra" ; -lin somewhere_Adv = ParadigmsEst.mkAdv "kusagil" ; +----lin somewhere_Adv = ParadigmsEst.mkAdv "kusagil" ; lin soon_Adv = ParadigmsEst.mkAdv "kähku" | ParadigmsEst.mkAdv "peagi" | ParadigmsEst.mkAdv "varsti" ; lin sooner_Adv = ParadigmsEst.mkAdv "ennem" | ParadigmsEst.mkAdv "ennemini" | ParadigmsEst.mkAdv "pigem" | ParadigmsEst.mkAdv "varem" ; lin sotto_voce_Adv = ParadigmsEst.mkAdv "poolel häälel" | ParadigmsEst.mkAdv "sosinal" | ParadigmsEst.mkAdv "sotto voce" ; @@ -39391,7 +39691,7 @@ lin sure_Adv = ParadigmsEst.mkAdv "kindel" | ParadigmsEst.mkAdv "muidugi" | Para lin tandem_Adv = ParadigmsEst.mkAdv "paarisrakend" | ParadigmsEst.mkAdv "tandem" ; lin tenfold_Adv = ParadigmsEst.mkAdv "kümnekordne" | ParadigmsEst.mkAdv "kümnekordselt" ; lin then_Adv = ParadigmsEst.mkAdv "siis" ; -lin there_Adv = ParadigmsEst.mkAdv "seal" | ParadigmsEst.mkAdv "sinna" ; +----lin there_Adv = ParadigmsEst.mkAdv "seal" | ParadigmsEst.mkAdv "sinna" ; lin thereabout_Adv = ParadigmsEst.mkAdv "sealkandis" | ParadigmsEst.mkAdv "selle kohta" ; lin thereabouts_Adv = ParadigmsEst.mkAdv "sealkandis" | ParadigmsEst.mkAdv "selle kohta" ; lin thereafter_Adv = ParadigmsEst.mkAdv "seejärel" | ParadigmsEst.mkAdv "seesugune" | ParadigmsEst.mkAdv "seetõttu" ;