1
0
forked from GitHub/gf-core
Files
gf-core/lib/src/greek/StructuralGre.gf

254 lines
13 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
concrete StructuralGre of Structural = CatGre **
open ResGre, ParadigmsGre, MakeStructuralGre, BeschGre,
Prelude in {
flags coding = utf8 ;
lin
above_Prep = mkPreposition "πάνω από" ;
after_Prep = mkPreposition "μετά από" ;
all_Predet = { s = \\n,g,c => (regAdj "όλος").s ! Posit ! g ! n ! c };
almost_AdA, almost_AdN = ss "σχεδόν" ;
although_Subj = ss "παρόλο που" ** {m = Ind} ;
always_AdV = ss "πάντα" ;
and_Conj = {s1 = [] ; s2 = "και" ; n = Pl} ;
because_Subj = ss "επειδή" ** {m = Ind} ;
before_Prep = mkPreposition "πρίν από" ;
behind_Prep = mkPreposition "πίσω από" ;
between_Prep = mkPreposition2 "ανάμεσα";
both7and_DConj = {s1,s2 = "και" ; n = Pl} ;
but_PConj = ss "αλλά" ;
by8agent_Prep = mkPreposition "από";
by8means_Prep = mkPreposition "από";
can8know_VV = mkVV (v_VerbNoPassive5 "μπορώ" "μπορέσω" "μπόρεσα" "μπορούσα" "μπόρεσε" " " ) ;
can_VV = mkVV (v_VerbNoPassive5 "μπορώ" "μπορέσω" "μπόρεσα" "μπορούσα" "μπόρεσε" " " ) ;
during_Prep = mkPreposition3 "κατα τη διάρκεια" ;
either7or_DConj = mkConj "είτε" "ή" plural ;
every_Det = let kathenas : ResGre.Gender => ResGre.Case => Str = \\g,c => case <g,c> of {
<Masc| Change,Nom |Vocative> => "ο καθένας";
<Masc| Change,Gen|CPrep P_Dat> => "του καθενός" ;
<Masc| Change, Acc |CPrep P_se | CPrep PNul> => prepCase c ++ "τον καθένα" ;
<Fem,Nom |Vocative |Acc |CPrep P_se | CPrep PNul> => prepCase c ++ "η καθεμία";
<Fem,Gen|CPrep P_Dat > => "της καθεμίας" ;
<Neut,Nom |Vocative |Acc |CPrep P_se | CPrep PNul> => prepCase c ++"το καθένα";
<Neut,Gen|CPrep P_Dat > => "του καθενός"
}; in {
s = \\_,c => prepCase c ++ "κάθε" ;
sp = kathenas ;
n = Sg ;
isNeg = False
} ;
everybody_NP = nppolPos (mkDeterminer "όλοι" "όλων" "όλους" "όλες" "όλων" "όλες" "όλα" "όλων" "όλα" "όλα" "όλων" "όλα" Pl) ;
everything_NP = makeNP "τα πάντα" "των πάντων" "στα πάντα" Pl Neut ;
everywhere_Adv = ss "παντού" ;
few_Det ={s,sp = \\g,c => case <g,c> of {
<Masc,Nom |Vocative> => "λίγοι";
<Masc,Gen|CPrep P_Dat> => "λίγων" ;
<Masc ,Acc |CPrep P_se | CPrep PNul> =>prepCase c ++"λίγους" ;
<Fem,Nom |Vocative |Acc |CPrep P_se | CPrep PNul> => prepCase c ++"λίγες";
<Fem,Gen|CPrep P_Dat > => "λίγων" ;
<Neut| Change,Nom |Vocative |Acc |CPrep P_se | CPrep PNul> => prepCase c ++"λίγα";
<Neut| Change,Gen|CPrep P_Dat > => "λίγων"
};
n= Pl;
isNeg = False
} ;
for_Prep = mkPreposition "για" ;
from_Prep = mkPreposition "από" ;
he_Pron = mkPron "αυτός" "του" "τον" "αυτόν" "αυτού" Masc Sg P3 ;
here_Adv = ss "εδώ" ;
here7to_Adv = ss "ως εδώ" ;
here7from_Adv = ss "από εδώ " ;
how_IAdv = ss "πώς" ;
how8much_IAdv = ss "πόσο" ;
how8many_IDet = mkDeterminer "πόσοι" "πόσων" "πόσους" "πόσες" "πόσων" "πόσες" "πόσα" "πόσων" "πόσα" "πόσα" "πόσων" "πόσα" Pl ;
i_Pron = mkPron "εγώ" "μου" "με" "εμένα" "εμού" Masc Sg P1 ;
if_Subj = ss "αν" ** {m = Ind};
in8front_Prep = mkPreposition "μπροστά από";
in_Prep = complPrepSe;
it_Pron = mkPron "αυτό" "του" "το" "αυτό" "αυτού" Neut Sg P3 ;
less_CAdv = {s,s2="λιγότερο"; p= "από" ; c= CPrep PNul ; lock_CAdv = <>} ;
many_Det = {s,sp = \\g,c => case <g,c> of {
<Masc,Nom |Vocative> => "πολλοί";
<Masc |Fem | Neut |Change,Gen|CPrep P_Dat> => "πολλών" ;
<Masc ,Acc |CPrep P_se | CPrep PNul> =>prepCase c ++ "πολλούς" ;
<Fem,Nom |Vocative |Acc |CPrep P_se | CPrep PNul> => prepCase c ++"πολλές";
<Neut| Change,Nom |Vocative |Acc |CPrep P_se | CPrep PNul> => prepCase c ++"πολλά"
};
n= Pl;
isNeg = False
} ;
more_CAdv = {s="πιό"; s2 = "πάνω" ; p="από" ; c= CPrep PNul} ;
most_Predet = { s = \\n,g,c => artDef g n c ++ (regAdj "περισσότερος").s ! Posit ! g ! n ! c };
much_Det = {s,sp = \\g,c => case <g,c> of{
<Masc| Change,Nom> => "πολύς";
<Masc| Change,Gen|CPrep P_Dat> => "πόλύ" ;
<Masc| Change,Acc |CPrep P_se | CPrep PNul> => prepCase c ++"πολύ" ;
<Masc| Change,Vocative> => "πολύ" ;
<Fem,Nom |Vocative |Acc |CPrep P_se | CPrep PNul> =>prepCase c ++ "πολλή";
<Fem,Gen|CPrep P_Dat > => "πολλής" ;
<Neut,Nom |Vocative |Acc |CPrep P_se | CPrep PNul> => prepCase c ++"πολύ";
<Neut,Gen|CPrep P_Dat > => "πολύ"
};
n= Sg;
isNeg = False
} ;
must_VV = mkVV (v_mk_Prepei "πρέπει" "έπρεπε" ** {lock_V = <>});
no_Utt = ss "όχι" ;
on_Prep = complPrepSe ;
only_Predet =let mono : Number =>Gender=> Case => Str= \\n,g,c => case <n,g,c> of {<_,_,_> => prepCase c ++ "μόνο" } in { s = mono} ;
or_Conj = {s1 = [] ; s2 = "ή" ; n = Sg} ;
otherwise_PConj = ss "αλλιώς" ;
part_Prep = complGen ;
please_Voc = ss "παρακαλώ" ;
possess_Prep = complGen ;
quite_Adv = ss "αρκετά" ;
she_Pron = mkPron "αυτή" "της" "την" "αυτήν" "αυτής" Fem Sg P3 ;
so_AdA = ss "τόσο" ;
someSg_Det = {s,sp = \\g,c => case <g,c> of {
<Masc| Change,Nom> => "κάποιος";
<Masc| Change,Gen|CPrep P_Dat> => "κάποιου" ;
<Masc| Change,Acc |CPrep P_se | CPrep PNul> =>prepCase c ++ "κάποιον" ;
<Masc| Change,Vocative> => "κάποιε" ;
<Fem,Nom |Vocative |Acc |CPrep P_se | CPrep PNul> => prepCase c ++"κάποια";
<Fem,Gen|CPrep P_Dat > => "κάποιας" ;
<Neut,Nom |Vocative |Acc |CPrep P_se | CPrep PNul> => prepCase c ++"κάποιο";
<Neut,Gen|CPrep P_Dat > => "κάποιου"
};
n= Sg;
isNeg = False
} ;
somePl_Det = {s,sp = \\g,c => case <g,c> of {
<Masc,Nom |Vocative> => "κάποιοι";
<Masc |Fem | Neut |Change,Gen|CPrep P_Dat> => "κάποιων" ;
<Masc ,Acc |CPrep P_se | CPrep PNul> => prepCase c ++"κάποιους" ;
<Fem,Nom |Vocative |Acc |CPrep P_se | CPrep PNul> => prepCase c ++"κάποιες";
<Neut| Change,Nom |Vocative |Acc |CPrep P_se | CPrep PNul> => prepCase c ++"κάποια"
};
n= Pl;
isNeg = False
} ;
somebody_NP = nppolPos (mkDeterminer "κάποιος" "κάποιου" "κάποιον" "κάποια" "κάποιας" "κάποια" "κάποιο" "κάποιου" "κάποιο" "κάποιος" "κάποιου" "κάποιον" Sg ) ;
something_NP = makeNP "κάτι" Sg Neut False ;
somewhere_Adv = ss "κάπου" ;
that_Quant = { s = \\_,g,n,c => prepCase c ++ (regAdj "εκείνος").s ! Posit ! g ! n ! c ++ artDef g n c ; sp =\\g,n,c => (regAdj "εκείνος").s ! Posit ! g ! n ! c ; isNeg =False };
that_Subj = ss "οτι" ** {m = Ind} ;
there_Adv = ss "εκεί" ;
there7to_Adv = ss "ως εκεί" ;
there7from_Adv = ss "απο εκεί";
therefore_PConj = ss "γι'αυτό" ;
they_Pron = mkPron "αυτοί" "τους" "τους" "αυτούς" "αυτών" Masc Pl P3 ;
this_Quant = {
s =\\_,g,n,c => prepCase c ++ (regAdj "αυτός").s ! Posit ! g ! n ! c ++ artDef g n c ;
sp =\\g,n,c => (regAdj "αυτός").s ! Posit ! g ! n ! c ;
isNeg =False
};
through_Prep = mkPrep4 "μέσω";
to_Prep = complPrepSe ;
too_AdA = ss "υπερβολικά" ;
under_Prep = mkPreposition "κάτω από" ;
very_AdA = ss "πολύ" ;
want_VV = mkVV (VerbNoPassive2syll "θέλω" "θελήσω" "θέλησα" "ήθελα" "ηθελημένος" ** {lock_V = <>}) ;
we_Pron = mkPron "εμείς" "μας" "μας" "εμάς" "ημών" Masc Pl P1 ;
whatPl_IP = {s = \\g,c => prepCase c ++ "τι" ; n= Pl; a = a} where {a = aagr Masc Pl} ;
whatSg_IP = {s = \\g,c => prepCase c ++ "τι" ; n= Sg; a = a} where {a = aagr Masc Sg} ;
when_IAdv = ss "πότε" ;
when_Subj = ss "όταν" ** {m =Con} ;
where_IAdv = ss "που" ;
which_IQuant = {s = \\n,g,c => case <n,g,c> of {
<Sg,Masc | Change,Nom |Vocative> => "ποιός";
<Sg,Masc | Change,Gen|CPrep P_Dat> => "ποιού" ;
<Sg, Masc | Change ,Acc |CPrep P_se | CPrep PNul> => prepCase c ++ "ποιόν" ;
<Sg,Fem,Nom |Vocative |Acc |CPrep P_se | CPrep PNul> => prepCase c ++ "ποιά";
<Sg,Fem,Gen|CPrep P_Dat > => "ποιάς" ;
<Sg,Neut,Nom |Vocative |Acc |CPrep P_se | CPrep PNul> => prepCase c ++"ποιό";
<Sg,Neut,Gen|CPrep P_Dat > => "ποιού" ;
<Pl,Masc,Nom |Vocative> => "ποιoί";
<Pl,Masc,Gen|CPrep P_Dat> => "ποιών" ;
<Pl, Masc| Change, Acc|CPrep P_se | CPrep PNul> => prepCase c ++ "ποιούς" ;
<Pl,Fem,Nom |Vocative |Acc |CPrep P_se | CPrep PNul> => prepCase c ++ "ποιές";
<Pl,Fem,Gen|CPrep P_Dat > => "ποιών" ;
<Pl,Neut | Change,Nom |Vocative |Acc |CPrep P_se | CPrep PNul> => prepCase c ++"ποιά";
<Pl,Neut | Change,Gen|CPrep P_Dat > => "ποιών" }
} ;
whoSg_IP = {s = \\g,c => case <g,c> of {
<Masc | Change ,Nom> =>prepCase c ++ "ποιός" ;
<Fem ,Nom | Acc |CPrep P_se | CPrep PNul > =>prepCase c ++ "ποιά" ;
<Neut ,Nom | Acc | CPrep P_se | CPrep PNul > =>prepCase c ++ "ποιό" ;
<Fem ,Gen> =>prepCase c ++"ποιάς" ;
<Neut | Change | Masc,Gen> => prepCase c ++"ποιού" ;
<Masc ,Acc |CPrep P_se | CPrep PNul > => prepCase c ++"ποιόν" ;
_ => " "
};
a = {g = Masc ; n = Sg} ;
n=Sg
};
whoPl_IP = {s = \\g,c => case <g,c> of {
<Masc ,Nom> => prepCase c ++"ποιοί" ;
<Fem ,Nom | Acc | CPrep P_se | CPrep PNul > => prepCase c ++ "ποιές" ;
<Neut| Change ,Nom | Acc | CPrep P_se | CPrep PNul > => prepCase c ++"ποιά" ;
<Fem | Neut | Change | Masc,Gen> => prepCase c ++"ποιών" ;
<Masc,Acc | CPrep P_se | CPrep PNul > => prepCase c ++"ποιούς" ;
_ => " "
};
a = {g = Masc ; n = Pl} ;
n=Pl
};
why_IAdv = ss "γιατί" ;
with_Prep = mkPreposition "με" ;
without_Prep = mkPreposition "χωρίς" ;
yes_Utt = ss "ναι" ;
youSg_Pron = mkPron "εσύ" "σου" "σε" "εσένα" "εσού" Masc Sg P2 ;
youPl_Pron = mkPron "εσείς" "σας" "σας" "εσάς" "υμών" Masc Pl P2 ;
youPol_Pron = mkPron "εσείς" "σας" "σας" "εσάς" "υμών" Masc Pl P2 ;
no_Quant = let kanenas : ResGre.Gender => ResGre.Number => ResGre.Case => Str = \\g,n,c => case <g,n,c> of {
<Masc| Change,Sg,Nom |Vocative> => "κανένας";
<Masc| Change,Sg,Gen|CPrep P_Dat> => "κανενός" ;
<Masc| Change,Sg, Acc |CPrep P_se | CPrep PNul> => prepCase c ++ "κανέναν" ;
<Fem,Sg,Nom |Vocative |Acc |CPrep P_se | CPrep PNul> => prepCase c ++ "καμία";
<Fem,Sg,Gen|CPrep P_Dat > => "καμιάς" ;
<Neut,Sg,Nom |Vocative |Acc |CPrep P_se | CPrep PNul> => prepCase c ++"κανένα";
<Neut,Sg,Gen|CPrep P_Dat > => "κανενός" ;
<_,Pl,_> => " " };
in {
s = \\_ => kanenas ;
sp = kanenas ;
isNeg = True
} ;
not_Predet = let oxi : Number =>Gender=> Case => Str= \\n,g,c => case <n,g,c> of {<_,_,_> => prepCase c ++ "όχι" } in { s = oxi} ;
if_then_Conj = {s1 = "αν" ; s2 = "τότε" ; n = Sg ; lock_Conj = <>} ;
at_least_AdN = ss "τουλάχιστον" ;
at_most_AdN = ss "το πολύ" ;
nobody_NP = nppolNeg (mkDeterminer "κανένας" "κανενός" "κανέναν" "καμία" "καμιάς" "καμία" "κανένα" "κανενός" "κανένα" "κανένας" "κανενός" "κανέναν" Sg) ;
nothing_NP = makeNP "τίποτα" Sg Neut True;
except_Prep = mkPreposition "εκτός απο";
as_CAdv = {s,s2="τόσο"; p="όσο" ; c= Nom} ;
have_V2 = dirV2 (mkAux "έχω" "είχα" "έχε" "έχετε" "έχων" ** {lock_V = <>}) ;
lin language_title_Utt = ss "Ελληνικά" ;
}