forked from GitHub/gf-core
Greek by Ioanna Papodopoulou - complete, 27th RGL language
This commit is contained in:
6
lib/src/api/CombinatorsGre.gf
Normal file
6
lib/src/api/CombinatorsGre.gf
Normal file
@@ -0,0 +1,6 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource CombinatorsGre = Combinators with
|
||||
(Cat = CatGre),
|
||||
(Structural = StructuralGre),
|
||||
(Constructors = ConstructorsGre) ;
|
||||
3
lib/src/api/ConstructorsGre.gf
Normal file
3
lib/src/api/ConstructorsGre.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource ConstructorsGre = Constructors with (Grammar = GrammarGre) ;
|
||||
5
lib/src/api/SymbolicGre.gf
Normal file
5
lib/src/api/SymbolicGre.gf
Normal file
@@ -0,0 +1,5 @@
|
||||
--# -path=.:alltenses
|
||||
|
||||
resource SymbolicGre = Symbolic with
|
||||
(Symbol = SymbolGre),
|
||||
(Grammar = GrammarGre) ;
|
||||
5
lib/src/api/SyntaxGre.gf
Normal file
5
lib/src/api/SyntaxGre.gf
Normal file
@@ -0,0 +1,5 @@
|
||||
--# -path=.:./alltenses:../prelude
|
||||
|
||||
instance SyntaxGre of Syntax =
|
||||
ConstructorsGre, CatGre, StructuralGre, CombinatorsGre ;
|
||||
|
||||
17
lib/src/api/TryGre.gf
Normal file
17
lib/src/api/TryGre.gf
Normal file
@@ -0,0 +1,17 @@
|
||||
--# -path=.:alltenses
|
||||
|
||||
resource TryGre = SyntaxGre, LexiconGre, ParadigmsGre ;
|
||||
|
||||
{-
|
||||
-[mkAdv, mkDet,mkQuant]**
|
||||
open (P = ParadigmsGre) in {
|
||||
|
||||
oper
|
||||
|
||||
mkAdv = overload SyntaxGre {
|
||||
mkAdv : Str -> Adv = P.mkAdv ;
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
-}
|
||||
80
lib/src/greek/AdjectiveGre.gf
Normal file
80
lib/src/greek/AdjectiveGre.gf
Normal file
@@ -0,0 +1,80 @@
|
||||
concrete AdjectiveGre of Adjective = CatGre ** open ResGre, Prelude in {
|
||||
|
||||
flags coding=utf8;
|
||||
|
||||
lin
|
||||
|
||||
PositA a = {
|
||||
s = \\_=> a.s ! Posit;
|
||||
adv = a.adv ;
|
||||
} ;
|
||||
|
||||
|
||||
ComparA a np = {
|
||||
s = \\d,g,n,c => a.s ! Compar! g ! n ! Nom ++ "από" ++ (np.s ! CPrep PNul).comp ;
|
||||
adv = a.adv ;
|
||||
} ;
|
||||
|
||||
ComplA2 adj np = {
|
||||
s = \\d,g,n,c => adj.s ! Posit !g ! n ! Nom ++ appCompl adj.c2 np ;
|
||||
adv = adj.adv ;
|
||||
isPre = False
|
||||
} ;
|
||||
|
||||
|
||||
ReflA2 adj = {
|
||||
s = \\d,g,n,c => adj.s ! Posit !g ! n ! Nom ++ adj.c2.s ++ reflPron ! (Ag g n P3) !Acc ;
|
||||
isPre = False ;
|
||||
adv= adj.adv
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
UseA2 a = {
|
||||
s = \\_ => a.s ! Posit ;
|
||||
adv = a.adv ;
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
UseComparA a = {
|
||||
s = \\_ => a.s ! Compar ;
|
||||
adv = a.adv ;
|
||||
} ;
|
||||
|
||||
|
||||
CAdvAP ad ap np = {
|
||||
s = \\d,g,n,c => ad.s ++ ap.s ! d ! g ! n ! c ++ ad.p ++ (np.s ! ad.c).comp ;
|
||||
adv = ap.adv ;
|
||||
} ;
|
||||
|
||||
|
||||
AdjOrd ord = {
|
||||
s = \\_, g, n, c => ord.s ! Posit ! g !n ! c;
|
||||
adv = ord.adv ;
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
SentAP ap sc = {
|
||||
s = \\d,g,n,c => ap.s ! d! g ! n! Nom ++ sc.s ;
|
||||
adv = ap.adv ;
|
||||
isPre = False
|
||||
} ;
|
||||
|
||||
|
||||
AdAP ada ap = {
|
||||
s = \\d,g,n,c => ada.s ++ ap.s ! d ! g ! n ! c ;
|
||||
adv = ap.adv ;
|
||||
} ;
|
||||
|
||||
|
||||
AdvAP ap adv = {
|
||||
s = \\d,g,n,c=> ap.s ! d ! g! n ! Nom ++ adv.s ;
|
||||
isPre = False ;
|
||||
adv= ap.adv
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
}
|
||||
35
lib/src/greek/AdverbGre.gf
Normal file
35
lib/src/greek/AdverbGre.gf
Normal file
@@ -0,0 +1,35 @@
|
||||
concrete AdverbGre of Adverb = CatGre ** open ResGre, Prelude in {
|
||||
flags coding = utf8 ;
|
||||
lin
|
||||
|
||||
|
||||
PositAdvAdj a = {s = a.adv ! Posit} ;
|
||||
|
||||
|
||||
ComparAdvAdj cadv a np = {
|
||||
s = cadv.s ++ a.adv ! Posit ++ cadv.p ++ (np.s ! cadv.c).comp
|
||||
} ;
|
||||
|
||||
|
||||
ComparAdvAdjS cadv a s = {
|
||||
s = cadv.s ++ a.adv ! Posit ++ cadv.p ++ "ότι" ++ s.s ! Ind
|
||||
} ;
|
||||
|
||||
|
||||
PrepNP prep np = {
|
||||
s = prep.s ++ (np.s ! prep.c).comp
|
||||
} ;
|
||||
|
||||
AdAdv = cc2 ;
|
||||
|
||||
PositAdAAdj a = {s = a.adv ! Posit} ;
|
||||
|
||||
|
||||
|
||||
SubjS subj s = {
|
||||
s = subj.s ++ s.s ! subj.m
|
||||
} ;
|
||||
|
||||
AdnCAdv cadv = {s = cadv.s ++ cadv.p} ;
|
||||
|
||||
}
|
||||
8
lib/src/greek/AllGre.gf
Normal file
8
lib/src/greek/AllGre.gf
Normal file
@@ -0,0 +1,8 @@
|
||||
--# -path=.:../abstract:../common
|
||||
|
||||
concrete AllGre of AllGreAbs =
|
||||
LangGre,
|
||||
ExtraGre
|
||||
** {} ;
|
||||
|
||||
|
||||
4
lib/src/greek/AllGreAbs.gf
Normal file
4
lib/src/greek/AllGreAbs.gf
Normal file
@@ -0,0 +1,4 @@
|
||||
abstract AllGreAbs =
|
||||
Lang,
|
||||
ExtraGreAbs
|
||||
** {} ;
|
||||
87
lib/src/greek/BackwardGre.gf
Normal file
87
lib/src/greek/BackwardGre.gf
Normal file
@@ -0,0 +1,87 @@
|
||||
concrete BackwardGre of Backward = CatGre ** open ResGre in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
|
||||
lin
|
||||
|
||||
-- A repository of obsolete constructs, needed for backward compatibility.
|
||||
-- They create spurious ambiguities if used in combination with Lang.
|
||||
|
||||
-- from Verb 19/4/2008
|
||||
|
||||
|
||||
|
||||
ComplV2 v2 np =
|
||||
let
|
||||
nps = np.s ! v2.c
|
||||
in {
|
||||
v = v2 ;
|
||||
clit = nps.clit ;
|
||||
obj = \\_ => nps.obj
|
||||
} ;
|
||||
|
||||
-- ComplV2 v np = insertObj (\\_ => v.c2 ++ np.s ! Acc) (predV v) ;
|
||||
-- ComplV3 v np np2 =
|
||||
-- insertObj (\\_ => v.c2 ++ np.s ! Acc ++ v.c3 ++ np2.s ! Acc) (predV v) ;
|
||||
-- ComplV2V v np vp =
|
||||
-- insertObj (\\a => infVP v.isAux vp Simul CPos a)
|
||||
-- (insertObj (\\_ => v.c2 ++ np.s ! Acc) (predV v)) ;
|
||||
-- ComplV2S v np s =
|
||||
-- insertObj (\\_ => conjThat ++ s.s)
|
||||
-- (insertObj (\\_ => v.c2 ++ np.s ! Acc) (predV v)) ;
|
||||
-- ComplV2Q v np q =
|
||||
-- insertObj (\\_ => q.s ! QIndir)
|
||||
-- (insertObj (\\_ => v.c2 ++ np.s ! Acc) (predV v)) ;
|
||||
-- ComplV2A v np ap =
|
||||
-- insertObj (\\_ => v.c2 ++ np.s ! Acc ++ ap.s ! np.a) (predV v) ;
|
||||
|
||||
-- ReflV2 v = insertObj (\\a => v.c2 ++ reflPron ! a) (predV v) ;
|
||||
|
||||
-- from Sentence 19/4/2008
|
||||
|
||||
- SlashV2 np v2 =
|
||||
-- mkClause (np.s ! Nom) np.a (predV v2) ** {c2 = v2.c2} ;
|
||||
|
||||
-- SlashVVV2 np vv v2 =
|
||||
-- mkClause (np.s ! Nom) np.a
|
||||
--- (insertObj (\\a => infVP vv.isAux (predV v2) Simul CPos a) (predVV vv)) **
|
||||
-- {c2 = v2.c2} ;
|
||||
|
||||
-- from Noun 19/4/2008
|
||||
|
||||
--NumInt n = {s = n.s ; n = Pl} ;
|
||||
-- OrdInt n = {s = n.s ++ "th"} ; --- DEPRECATED
|
||||
|
||||
-- DetSg quant ord = {
|
||||
-- s = quant.s ! Sg ++ ord.s ;
|
||||
-- n = Sg
|
||||
-- } ;
|
||||
|
||||
-- DetPl quant num ord = {
|
||||
-- s = quant.s ! num.n ++ num.s ++ ord.s ;
|
||||
-- n = num.n
|
||||
-- } ;
|
||||
|
||||
-- NoNum = {s = []; n = Pl } ;
|
||||
|
||||
-- DefArt = {s = \\_ => artDef} ;
|
||||
|
||||
-- IndefArt = {
|
||||
-- s = table {
|
||||
-- Sg => artIndef ;
|
||||
-- Pl => []
|
||||
-- }
|
||||
-- } ;
|
||||
|
||||
--MassDet = {s = \\_ => []} ;
|
||||
|
||||
|
||||
|
||||
-- from Structural 19/4/2008
|
||||
|
||||
-- that_NP = regNP "that" Sg ;
|
||||
-- these_NP = regNP "these" Pl ;
|
||||
-- this_NP = regNP "this" Sg ;
|
||||
-- those_NP = regNP "those" Pl ;
|
||||
|
||||
}
|
||||
2840
lib/src/greek/BeschGre.gf
Normal file
2840
lib/src/greek/BeschGre.gf
Normal file
File diff suppressed because it is too large
Load Diff
102
lib/src/greek/CatGre.gf
Normal file
102
lib/src/greek/CatGre.gf
Normal file
@@ -0,0 +1,102 @@
|
||||
concrete CatGre of Cat = CommonGre ** open ResGre, Prelude in {
|
||||
|
||||
flags coding =utf8 ;
|
||||
|
||||
lincat
|
||||
|
||||
|
||||
S = {s : Mood => Str} ;
|
||||
|
||||
QS = {s : QForm => Str} ;
|
||||
|
||||
RS = {s : Mood => Agr => Str ; c : Case} ;
|
||||
|
||||
SSlash = { s : AAgr => Mood => Str ;n3 : Agr => Str ; c2 : Compl} ;
|
||||
|
||||
Cl = {s :Order => ResGre.TTense => Anteriority => Polarity => Mood => Str} ;
|
||||
|
||||
ClSlash = {s : AAgr => Order => ResGre.TTense => Anteriority => Polarity => Mood => Str ;n3 : Agr => Str ; c2 : Compl} ;
|
||||
|
||||
Imp = {s : Polarity => Number => Aspect => Str } ;
|
||||
|
||||
QCl = {s : ResGre.TTense => Anteriority => Polarity => QForm => Str} ;
|
||||
|
||||
IP = {s : Gender => Case => Str ; n : Number ;a : AAgr};
|
||||
|
||||
IComp = {s : Str} ;
|
||||
|
||||
IDet = {s : Gender => Case => Str ; n : Number} ;
|
||||
|
||||
IQuant = {s : Number => Gender => Case => Str } ;
|
||||
|
||||
RCl = {s : Agr => ResGre.TTense => Anteriority => Polarity => Mood => Str ; c : Case } ;
|
||||
|
||||
RP = {s : Bool => AAgr => Case => Str ; a : AAgr ; hasAgr : Bool} ;
|
||||
|
||||
VP = ResGre.VP ;
|
||||
|
||||
VPSlash = ResGre.VP ** {n3 : Agr => Str ; c2 : Compl} ;
|
||||
|
||||
Comp = {s : Agr => Str} ;
|
||||
|
||||
AP = ResGre.Adj ;
|
||||
|
||||
|
||||
-- Noun
|
||||
|
||||
CN = Noun ;
|
||||
|
||||
NP =NounPhrase;
|
||||
|
||||
Pron = Pronoun ;
|
||||
|
||||
Det = {s : Gender => Case => Str ; sp : Gender => Case => Str ; n : Number ;isNeg : Bool};
|
||||
|
||||
Predet = {s :Number => Gender => Case =>Str} ;
|
||||
|
||||
Ord = {s :Degree => Gender => Number => Case => Str ; adv : Degree => Str } ;
|
||||
|
||||
Num = {s : Gender => Case => Str ; isNum : Bool ; n : Number} ;
|
||||
|
||||
Card = {s : Gender => Case => Str ; n : Number} ;
|
||||
|
||||
Quant = ResGre.Quantifier;
|
||||
|
||||
|
||||
-- Numerals
|
||||
|
||||
Numeral = {s : CardOrd => Str ; n : Number } ;
|
||||
|
||||
Digits = {s : CardOrd => Str ; n : Number} ;
|
||||
|
||||
-- Structural
|
||||
|
||||
Conj = {s1,s2 : Str ; n : Number} ;
|
||||
|
||||
Subj = {s : Str ; m : Mood} ;
|
||||
|
||||
Prep = {s : Str ; c : Case ; isDir : Bool} ;
|
||||
|
||||
|
||||
-- Open lexical classes, e.g. Lexicon
|
||||
|
||||
V, VS, VQ, VA = Verb ;
|
||||
|
||||
V2, VV, V2S, V2Q = Verb ** {c2 : Compl} ;
|
||||
|
||||
V3, V2V,V2A = Verb ** {c2, c3 : Compl} ;
|
||||
|
||||
A = ResGre.Adj ; --{s : Degree => Gender => Number => Case => Str } ;
|
||||
|
||||
A2 = {s :Degree => Gender => Number => Case => Str ; adv : Degree => Str ;c2 : Compl } ;
|
||||
|
||||
|
||||
N = Noun;
|
||||
|
||||
N2 = {s : Number => Case => Str ; g : Gender} ** {c2 : Compl} ;
|
||||
|
||||
N3 = {s : Number => Case => Str ; g : Gender} ** {c2,c3 : Compl} ;
|
||||
|
||||
PN = PName ;
|
||||
|
||||
}
|
||||
30
lib/src/greek/CommonGre.gf
Normal file
30
lib/src/greek/CommonGre.gf
Normal file
@@ -0,0 +1,30 @@
|
||||
concrete CommonGre of Common = open (R = ParamX), ResGre in {
|
||||
|
||||
flags coding = utf8 ;
|
||||
|
||||
lincat
|
||||
|
||||
Text = {s : Str} ;
|
||||
Phr = {s : Str} ;
|
||||
Utt = {s : Str} ;
|
||||
Voc = {s : Str} ;
|
||||
SC = {s : Str} ;
|
||||
Adv = {s : Str} ;
|
||||
AdV = {s : Str} ;
|
||||
AdA = {s : Str} ;
|
||||
AdN = {s : Str} ;
|
||||
IAdv = {s : Str} ;
|
||||
CAdv = {s : Str; p : Str} ** {c:Case};
|
||||
PConj = {s : Str} ;
|
||||
Interj = {s : Str} ;
|
||||
|
||||
|
||||
Temp = {s : Str ; t : TTense ; a : R.Anteriority ;m : Mood } ;
|
||||
Tense = {s : Str ; t : TTense ; m : Mood } ;
|
||||
Ant = {s : Str ; a : R.Anteriority} ;
|
||||
Pol = {s : Str ; p : R.Polarity} ;
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
77
lib/src/greek/ConjunctionGre.gf
Normal file
77
lib/src/greek/ConjunctionGre.gf
Normal file
@@ -0,0 +1,77 @@
|
||||
concrete ConjunctionGre of Conjunction =
|
||||
CatGre ** open CommonGre, ResGre, Coordination, Prelude in {
|
||||
|
||||
flags coding =utf8 ;
|
||||
|
||||
lin
|
||||
|
||||
ConjS conj ss = conjunctDistrTable Mood conj ss ;
|
||||
|
||||
ConjAdv conj ss = conjunctDistrSS conj ss ;
|
||||
|
||||
|
||||
|
||||
ConjNP conj ss = heavyNP (conjunctDistrTable Case conj ss ** {
|
||||
a = Ag (agrFeatures ss.a).g (conjNumber (agrFeatures ss.a).n conj.n) (agrFeatures ss.a).p ;
|
||||
isClit = False ; isNeg = ss.isNeg
|
||||
}) ;
|
||||
|
||||
|
||||
ConjAP conj ss = conjunctDistrTable4 Degree Gender Number Case conj ss ** {
|
||||
adv = ss.adv
|
||||
} ;
|
||||
|
||||
|
||||
ConjRS conj ss = conjunctDistrTable2 Mood Agr conj ss ** {
|
||||
c = ss.c
|
||||
} ;
|
||||
|
||||
ConjIAdv = conjunctDistrSS ;
|
||||
|
||||
ConjCN co ns = conjunctDistrTable2 Number Case co ns ** {g = ns.g;} ;
|
||||
|
||||
|
||||
BaseS = twoTable Mood ;
|
||||
ConsS = consrTable Mood comma ;
|
||||
BaseAdv = twoSS ;
|
||||
ConsAdv = consrSS comma ;
|
||||
|
||||
|
||||
|
||||
BaseNP x y = {
|
||||
s1 = \\c => (x.s ! conjunctCase c).comp ;
|
||||
s2 = \\c => (y.s ! conjunctCase c).comp ;
|
||||
a = conjAgr Sg x.a y.a ; isNeg = orB x.isNeg y.isNeg
|
||||
} ;
|
||||
|
||||
ConsNP x xs = {
|
||||
s1 = \\c => (x.s ! conjunctCase c).comp ++ comma ++ xs.s1 ! c ;
|
||||
s2 = \\c => xs.s2 ! conjunctCase c ;
|
||||
a = conjAgr Sg x.a xs.a ; isNeg = orB x.isNeg xs.isNeg
|
||||
} ;
|
||||
|
||||
|
||||
BaseAP x y = twoTable4 Degree Gender Number Case x y ** {adv = x.adv} ;
|
||||
ConsAP xs x = consrTable4 Degree Gender Number Case comma xs x ** {adv = x.adv};
|
||||
|
||||
|
||||
BaseIAdv = twoSS ;
|
||||
ConsIAdv = consrSS comma ;
|
||||
|
||||
BaseRS x y = twoTable2 Mood Agr x y ** {c = y.c} ;
|
||||
ConsRS xs x = consrTable2 Mood Agr comma xs x ** {c = xs.c} ;
|
||||
|
||||
BaseCN x y = twoTable2 Number Case x y ** {g = conjGender x.g y.g } ;
|
||||
ConsCN x xs = consrTable2 Number Case comma x xs ** {g = conjGender x.g xs.g } ;
|
||||
|
||||
|
||||
lincat
|
||||
[S] = {s1,s2 : Mood => Str} ;
|
||||
[Adv] = {s1,s2 : Str} ;
|
||||
[IAdv] = {s1,s2 : Str} ;
|
||||
[NP] = {s1,s2 : Case => Str ; a : Agr } ;
|
||||
[AP] = {s1,s2 : Degree => Gender => Number => Case => Str ; adv : Degree => Str } ;
|
||||
[RS] = {s1,s2 : Mood => Agr => Str ; c : Case} ;
|
||||
[CN] = {s1,s2 : Number => Case => Str ; g : Gender} ;
|
||||
|
||||
}
|
||||
27
lib/src/greek/ExtraGre.gf
Normal file
27
lib/src/greek/ExtraGre.gf
Normal file
@@ -0,0 +1,27 @@
|
||||
concrete ExtraGre of ExtraGreAbs = CatGre **
|
||||
open
|
||||
CommonGre,
|
||||
ResGre,
|
||||
NounGre,
|
||||
PhraseGre,
|
||||
SentenceGre,
|
||||
Prelude in {
|
||||
|
||||
flags coding = utf8 ;
|
||||
|
||||
|
||||
lin
|
||||
|
||||
-- TImperf = {s = [] ; t = ResGre.TImperf; m = Ind} ;
|
||||
|
||||
|
||||
UttImpSgImperf pol imp = {s = pol.s ++ imp.s ! pol.p ! Sg ! Imperf} ;
|
||||
UttImpPlImperf pol imp = {s = pol.s ++ imp.s ! pol.p ! Pl ! Imperf} ;
|
||||
|
||||
theyFem_Pron = mkPron "αυτές" "τους" "τις" "αυτές" "αυτών" Fem Pl P3 ;
|
||||
theyNeut_Pron = mkPron "αυτά" "τους" "τα" "αυτά" "αυτών" Neut Pl P3 ;
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
12
lib/src/greek/ExtraGreAbs.gf
Normal file
12
lib/src/greek/ExtraGreAbs.gf
Normal file
@@ -0,0 +1,12 @@
|
||||
abstract ExtraGreAbs = Extra ** {
|
||||
|
||||
fun
|
||||
TPasse, TImperf : Tense ;
|
||||
|
||||
|
||||
theyFem_Pron: Pron ;
|
||||
theyNeut_Pron: Pron ;
|
||||
|
||||
UttImpSgImperf : Pol -> Imp -> Utt; -- (don't) love yourself
|
||||
UttImpPlImperf : Pol -> Imp -> Utt; -- (don't) love yourselves
|
||||
}
|
||||
26
lib/src/greek/GrammarGre.gf
Normal file
26
lib/src/greek/GrammarGre.gf
Normal file
@@ -0,0 +1,26 @@
|
||||
|
||||
concrete GrammarGre of Grammar =
|
||||
VerbGre,
|
||||
NounGre,
|
||||
SentenceGre,
|
||||
PhraseGre,
|
||||
StructuralGre,
|
||||
RelativeGre,
|
||||
AdjectiveGre,
|
||||
ConjunctionGre,
|
||||
NumeralGre,
|
||||
AdverbGre,
|
||||
TenseGre,
|
||||
TextGre,
|
||||
IdiomGre,
|
||||
QuestionGre
|
||||
;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
55
lib/src/greek/IdiomGre.gf
Normal file
55
lib/src/greek/IdiomGre.gf
Normal file
@@ -0,0 +1,55 @@
|
||||
concrete IdiomGre of Idiom = CatGre ** open Prelude,BeschGre, ResGre in {
|
||||
|
||||
flags coding=utf8 ;
|
||||
|
||||
lin
|
||||
|
||||
ImpersCl vp = predVP [] (Ag Neut Sg P3) vp ;
|
||||
GenericCl vp = predVP "κάποιος" (Ag Neut Sg P3) vp ;
|
||||
|
||||
|
||||
CleftNP np rs = predVP [] (np.a)
|
||||
(insertComplement (\\_ => rs.s ! Ind ! np.a)
|
||||
(insertComplement (\\_ => (np.s ! rs.c).comp) (predV copula))) ;
|
||||
|
||||
CleftAdv ad s = predVP [] (agrP3 Masc Sg)
|
||||
(insertComplement (\\_ => "που" ++ s.s ! Ind)
|
||||
(insertComplement (\\_ => ad.s) (predV copula))) ;
|
||||
|
||||
ExistNP np =
|
||||
predVP [] (np.a)
|
||||
(insertComplement (\\_ => (np.s ! Nom).comp) (predV Exist)) ;
|
||||
|
||||
|
||||
ExistIP ip = {
|
||||
s = \\t,a,p =>
|
||||
let
|
||||
cls = (predVP [] (agrP3 Neut ip.n) (predV Exist)).s ! Inv ! t ! a ! p ! Ind ;
|
||||
who = ip.s ! Neut ! Acc
|
||||
in table {
|
||||
QDir => who ++ cls ;
|
||||
QIndir => who ++ cls
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
ProgrVP vp = {
|
||||
v = vp.v;
|
||||
clit = vp.clit ;
|
||||
clit2 = vp.clit2 ;
|
||||
comp = \\a => vp.comp ! a;
|
||||
isNeg=False;
|
||||
voice = vp.voice ;
|
||||
aspect = Imperf
|
||||
} ;
|
||||
|
||||
|
||||
ImpPl1 vp = {s = (predVP [] (Ag Masc Pl P1) vp).s ! Main ! TPres ! Simul ! Pos !Hortative } ;
|
||||
|
||||
ImpP3 np vp = {s = (predVP (np.s ! Nom).comp np.a vp).s ! Inv ! TPres ! Simul ! Pos !Hortative } ;
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
4
lib/src/greek/LangGre.gf
Normal file
4
lib/src/greek/LangGre.gf
Normal file
@@ -0,0 +1,4 @@
|
||||
concrete LangGre of Lang =
|
||||
GrammarGre,
|
||||
LexiconGre
|
||||
;
|
||||
360
lib/src/greek/LexiconGre.gf
Normal file
360
lib/src/greek/LexiconGre.gf
Normal file
@@ -0,0 +1,360 @@
|
||||
concrete LexiconGre of Lexicon = CatGre **
|
||||
open ParadigmsGre,ResGre, BeschGre, Prelude in {
|
||||
|
||||
flags coding = utf8 ;
|
||||
|
||||
|
||||
|
||||
lin
|
||||
|
||||
add_V3 = dirV3 (v_Verb1dx "προσθέτω" "προσθέσω" "πρόσθεσα" "πρόσθετα")prepse ;
|
||||
airplane_N = mkN "αεροπλάνο" ;
|
||||
alas_Interj = ss "αλλοίμονο" ;
|
||||
already_Adv = ss "ήδη" ;
|
||||
animal_N = mkN "ζώο" ;
|
||||
answer_V2S = mkV2S (v_Verb2a "απαντώ" "απαντήσω" "απάντησα" "απαντούσα") gen ;
|
||||
apartment_N = mkN "διαμέρισμα" "διαμερίσματα" Neut;
|
||||
apple_N = mkN "μήλο" ;
|
||||
art_N = mkN "τέχνη" Fem ;
|
||||
ashes_N = mkN "στάχτη" Fem ;
|
||||
ask_V2Q = mkV2Q (v_Verb2a "ρωτώ" "ρωτήσω" "ρώτησα" "ρωτούσα") acc ;
|
||||
baby_N = mkN "μωρό" ;
|
||||
back_N = mkN "πλάτη" Fem;
|
||||
bad_A = mkAd3 "κακός" ;
|
||||
bank_N = mkN "τράπεζα" Fem;
|
||||
bark_N =mkN "γάβγισμα" "γαβγίσματα" Neut ;
|
||||
beautiful_A = mkAd3 "όμορφος" ;
|
||||
become_VA = mkVA (v_VerbDeponent3 "γίνομαι" "γίνω" "έγινα" "γινόμουν" "γίνε" "γίνετε" "γινωμένος") ;
|
||||
beer_N = mkNoun_thalassa "μπύρα" Fem ;
|
||||
beg_V2V = mkV2V (v_Verb2a "παρακαλώ" "παρακαλέσω" "παρακάλεσα" "παρακαλούσα" ) acc acc ;
|
||||
belly_N = mkN "κοιλιά" ;
|
||||
big_A = mkAd3 "μεγάλος" ;
|
||||
bike_N = mkN "ποδήλατο" "ποδηλάτων" Neut;
|
||||
bird_N = mkN "πουλί" ;
|
||||
bite_V2 = dirV2 (v_Verb1b "δαγκώνω" "δαγκώσω" "δάγκωσα" "δάγκωνα") ;
|
||||
black_A = mkA "μαύρος" ;
|
||||
blood_N = regIrreg "αίμα" ;
|
||||
blow_V = v_Verb2a "φυσώ" "φυσήξω" "φύσηξα" "φυσούσα" ;
|
||||
blue_A = mkAdjAklito "μπλέ" ;
|
||||
boat_N = mkN "βάρκα" Fem;
|
||||
bone_N = mkN "κόκκαλο" ;
|
||||
breast_N = mkN "στήθος" Fem ;
|
||||
breathe_V = v_VerbNoPassive "αναπνέω" "αναπνεύσω" "ανέπνευσα" "ανέπνεα" "ανέπνευσε" "" ;
|
||||
book_N =mkN "βιβλίο" ;
|
||||
boot_N = mkN "μπότα" Fem;
|
||||
boss_N = mkN "αφεντικό" ;
|
||||
boy_N = mkN "αγόρι" Neut;
|
||||
bread_N = mkN "ψωμί" ;
|
||||
break_V2 = dirV2(v_VerbContr2 "σπάω" "σπάσω" "έσπασα" "έσπαζα") ;
|
||||
broad_A = mkA "ευρύς" "ευρέως" ;
|
||||
brother_N2 = ofN2 (mkN "αδελφός") ;
|
||||
brown_A = mkAdjAklito "καφέ" ;
|
||||
burn_V= v_VerbContr2 "κλαίω" "κλάψω" "έκλαψα" "έκλαιγα" ;
|
||||
butter_N = mkN "βούτυρο" "βουτύρων" Neut;
|
||||
buy_V2= dirV2 (v_Verb1d "αγοράζω" "αγοράσω" "αγόρασα" "αγόραζα" ) ;
|
||||
camera_N = mkN "κάμερα" Fem;
|
||||
cap_N = mkN "καπάκι" Neut;
|
||||
car_N = mkN "αυτοκίνητο" "αυτοκινήτων" Neut ;
|
||||
carpet_N = mkN "χαλί" ;
|
||||
cat_N = mkN "γάτα" Fem;
|
||||
ceiling_N = mkN "ταβάνι" Neut ;
|
||||
chair_N = mkN "καρέκλα" Fem ;
|
||||
cheese_N = mkN "τυρί";
|
||||
child_N = mkN "παιδί";
|
||||
church_N = mkN "εκκλησία" Fem;
|
||||
city_N = mkN "πόλη" "πόλεις" Fem;
|
||||
clean_A = mkAd3 "καθαρός" ;
|
||||
clever_A = mkAd3 "έξυπνος" ;
|
||||
close_V2 = dirV2 (v_Verb1c "κλείνω" "κλείσω" "έκλεισα" "έκλεινα") ;
|
||||
cloud_N= mkN "σύννεφο" ;
|
||||
coat_N = mkN "παλτό" ;
|
||||
cold_A = mkAd "κρύος" ;
|
||||
come_V = v_VerbDeponent4 "έρχομαι" "έρθω" "ήρθα" "ερχόμουν" "έλα" "ελάτε" "ερχόμενος" ;
|
||||
computer_N = mkN "υπολογιστής" ;
|
||||
correct_A = mkAd3 "σωστός" ;
|
||||
country_N = mkN "χώρα" Fem;
|
||||
count_V2 = dirV2 (v_Verb2a "μετρώ" "μετρήσω" "μέτρησα" "μετρούσα") ;
|
||||
cousin_N = mkN "ξάδελφος" "ξαδέλφων" Masc ;
|
||||
cow_N = mkN "αγελάδα" ;
|
||||
cut_V2 = dirV2 (v_Verb1c "κόβω" "κόψω" "έκοψα" "έκοβα") ;
|
||||
day_N = mkN "μέρα" Fem;
|
||||
die_V = v_VerbNoPassive "πεθαίνω" "πεθάνω" "πέθανα" "πέθαινα" "πέθανε" "πεθαμένος" ;
|
||||
dig_V =v_Verb1c "σκάβω" "σκάψω" "έσκαψα" "έσκαβα" ;
|
||||
dirty_A = regAdj "βρώμικος" ;
|
||||
distance_N3 = mkN3 (mkN "απόσταση" "αποστάσεις" Fem) acc (mkPreposition "ως" ** {lock_Prep = <>});
|
||||
doctor_N = mkN "γιατρός" ;
|
||||
dog_N = mkN "σκύλος" ;
|
||||
door_N = mkN "πόρτα" Fem;
|
||||
do_V2 = dirV2 (v_VerbNoPassive1 "κάνω" "κάνω" "έκανα" "έκανα" " ") ;
|
||||
drink_V2 = dirV2 (v_VerbContrIrregNPassPerf "πίνω" "πιώ" "ήπια" "έπινα");
|
||||
dry_A = mkA "στεγνός" ;
|
||||
dull_A = mkA "αμβλύς" "αμβλέως" ;
|
||||
dust_N = mkN "σκόνη" Fem ;
|
||||
ear_N =mkN "αφτί" ;
|
||||
earth_N = mkN "γή" "γής" "γή" "γή" "" "" "" "" Fem ;
|
||||
easy_A2V = mkA2V (mkAd "εύκολος") acc gen ;
|
||||
eat_V2 = dirV2 (v_VerbContrIrreg "τρώω" "φάω" "έφαγα" "έτρωγα" ) ;
|
||||
egg_N = mkN "αβγό" ;
|
||||
empty_A = mkAd "άδειος" ;
|
||||
enemy_N = mkN "εχθρός" ;
|
||||
eye_N =mkN "μάτι" Neut ;
|
||||
factory_N = mkN "εργοστάσιο" "εργοστασίων" Neut;
|
||||
fall_V = v_VerbNoPassive1 "πέφτω" "πέσω" "έπεσα" "έπεφτα" "πεσμένος" ;
|
||||
far_Adv = ss "μακρυά" ;
|
||||
father_N2 = ofN2 (mkN "πατέρας") ;
|
||||
fat_N = mkN "λίπος" Neut ;
|
||||
fear_VS = mkVS (v_VerbDeponent "φοβάμαι" "φοβηθώ" "φοβήθηκα" "φοβόμουν" "φοβήσου" "φοβισμένος") ;
|
||||
fear_V2 =dirV2 (v_VerbDeponent "φοβάμαι" "φοβηθώ" "φοβήθηκα" "φοβόμουν" "φοβήσου" "φοβισμένος") ;
|
||||
feather_N = mkN "φτερό" ;
|
||||
fight_V2 = dirV2 (v_Verb2a "πολεμώ" "πολεμήσω" "πολέμησα" "πολεμούσα" ) ;
|
||||
find_V2 = dirV2 (v_VerbContracIrregNopassive "βρίσκω" "βρώ" "βρήκα" "έβρισκα" "βρες" "βρισκόμενος");
|
||||
fingernail_N = mkN "νύχι" Neut ;
|
||||
fire_N = mkN "φωτιά" ;
|
||||
fish_N = mkN "ψάρι" Neut ;
|
||||
float_V = v_VerbNoPassive1 "πλέω" "πλεύσω" "έπλευσα" "έπλεα" "πλεούμενος" ;
|
||||
floor_N = mkN "πάτωμα" "πατώματα" Neut;
|
||||
flower_N = mkN "λουλούδι" Neut ;
|
||||
flow_V = v_Verb2b "κυλώ" "κυλήσω" "κύλησα" "κυλούσα" ;
|
||||
fly_V = v_Verb2b "πετώ" "πετάξω" "πέταξα" "πετούσα" ;
|
||||
fog_N = mkN "ομίχλη" Fem ;
|
||||
foot_N = mkN "πόδι" Neut ;
|
||||
forest_N = mkN "δάσος" Neut ;
|
||||
forget_V2 = dirV2 (v_VerbNoPassive3 "ξεχνώ" "ξεχάσω" "ξέχασα" "ξεχνούσα" "ξέχνα" "ξεχασμένος" );
|
||||
freeze_V = v_VerbNoPassive "παγώνω" "παγώσω" "πάγωσα" "πάγωνα" "πάγωσε" "παγωμένος" ;
|
||||
fridge_N = mkN "ψυγείο" ;
|
||||
friend_N = mkN "φίλος" ; --ΟΧΙ γιατι εχει 3 γενη
|
||||
fruit_N = mkN "φρούτο" ;
|
||||
full_A = mkA "γεμάτος" ;
|
||||
fun_AV = mkAV (mkAd "αστείος") ;
|
||||
garden_N = mkN "κήπος" ;
|
||||
girl_N = mkN "κορίτσι" Neut ;
|
||||
give_V3 = dirV3 (v_Verb1a "δίνω" "δώσω" "έδωσα" "έδινα") gen ;
|
||||
glove_N = mkN "γάντι" Neut;
|
||||
gold_N = mkN "χρυσός" ;
|
||||
good_A = mkAd3 "καλός" ;
|
||||
go_V = v_Verbirreg_pigaInw "πηγαίνω" "πάω" "πήγα" "πήγαινα" ;
|
||||
grammar_N =mkN "γραμματική" ;
|
||||
grass_N = mkN "γρασίδι" Neut ;
|
||||
green_A = regAdj "πράσινος" ;
|
||||
guts_N = mkN "έντερο" "εντέρων" Neut ;
|
||||
hair_N =mkN "τρίχα" Fem ;
|
||||
hand_N = mkN "χέρι" Neut ;
|
||||
harbour_N = mkN "λιμάνι" Neut;
|
||||
hate_V2 = dirV2 (v_mkVerb2B3 "μισώ" "μισήσω" "μίσησα" "μισούσα");
|
||||
hat_N = regN "καπέλο" ;
|
||||
head_N =mkN "κεφάλι" Neut ;
|
||||
heart_N =mkN "καρδιά" ;
|
||||
hear_V2 = dirV2 (v_VerbContr "ακούω" "ακούσω" "άκουσα" "άκουγα");
|
||||
heavy_A =mkAd4 "βαρύς" ;
|
||||
hill_N = mkN "λόφος" ;
|
||||
hit_V2 = dirV2 (v_Verb2a "χτυπώ" "χτυπήσω" "χτύπησα" "χτυπούσα" );
|
||||
hold_V2 = dirV2 (v_Verb2a "κρατώ" "κρατήσω" "κράτησα" "κρατούσα" );
|
||||
hope_VS = mkVS (v_VerbNoPassive "ελπίζω" "ελπίσω" "ήλπισα" "ήλπιζα" "έλπισε" " ") ;
|
||||
horn_N =mkN "κέρατο" "κεράτων" Neut;
|
||||
horse_N = mkN "άλογο" "αλόγων" Neut;
|
||||
hot_A = mkAd3 "ζεστός" ;
|
||||
house_N = mkN "σπίτι" Neut;
|
||||
hunt_V2 =dirV2 (v_Verb2a "κυνηγώ" "κυνηγήσω" "κυνήγησα" "κυνηγούσα" );
|
||||
husband_N =mkN "σύζηγος" "συζήγων" Masc ;
|
||||
ice_N = mkN "πάγος" ;
|
||||
important_A = mkAd3 "σημαντικός" ;
|
||||
industry_N = mkN "βιομηχανία" Fem ;
|
||||
iron_N = mkN "σίδερο" ;
|
||||
john_PN = mkPN "Γιάννης" ;
|
||||
jump_V = v_Verb2a "πηδώ" "πηδήξω" "πήδηξα" "πηδούσα";
|
||||
kill_V2= dirV2 (v_Verb1dx "σκοτώνω" "σκοτώσω" "σκότωσα" "σκότωνα" ) ;
|
||||
king_N = regNaniso "βασιλιάς" ;
|
||||
knee_N = mkN "γόνατο" "γονάτων" Neut;
|
||||
know_V2 = dirV2 (v_VerbNoPassive1 "ξέρω" "ξέρω" "ήξερα" "ήξερα" " ");
|
||||
know_VQ = mkVQ (v_VerbNoPassive1 "ξέρω" "ξέρω" "ήξερα" "ήξερα" " ");
|
||||
know_VS = mkVS (v_VerbNoPassive1 "ξέρω" "ξέρω" "ήξερα" "ήξερα" " ");
|
||||
lake_N = mkN "λίμνη" Fem;
|
||||
lamp_N = mkN "λάμπα" Fem ;
|
||||
language_N =mkN "γλώσσα" Fem ;
|
||||
laugh_V = v_Verb2a "γελώ" "γελάσω" "γέλασα" "γελούσα" ;
|
||||
leaf_N = mkN "φύλλο" ;
|
||||
learn_V2 = dirV2 (v_Verb1dxx "μαθαίνω" "μάθω" "έμαθα" "μάθαινα");
|
||||
leather_N = mkN "δέρμα" "δέρματα" Neut ;
|
||||
leave_V2 = dirV2 (v_Verb1b "αφήνω" "αφήσω" "άφησα" "άφηνα" );
|
||||
left_Ord =mkA "αριστερός";
|
||||
leg_N = mkN "πόδι" Neut ;
|
||||
lie_V = compoundV (v_VerbContrIrreg2 "λέω" "πώ" "είπα" "έλεγα" ) "ψέματα" ;
|
||||
like_V2 = dirV2 (v_Verb2a "αγαπώ" "αγαπήσω" "αγάπησα" "αγαπούσα" );
|
||||
like_V2 = dirV2 (v_Verb2a "αγαπώ" "αγαπήσω" "αγάπησα" "αγαπούσα" );
|
||||
listen_V2 = dirV2 (v_VerbContr "ακούω" "ακούσω" "άκουσα" "άκουγα");
|
||||
liver_N = mkN "συκώτι" Neut ;
|
||||
live_V = VerbNoPassive4 "ζώ" "ζήσω" "έζησα" "ζούσα" "ζήσε" " " ;
|
||||
long_A = mkAd4 "μακρύς" ;
|
||||
lose_V2 = dirV2 (v_Verb1a "χάνω" "χάσω" "έχασα" "έχανα") ;
|
||||
louse_N =mkN "ψείρα" Fem;
|
||||
love_N = mkN "αγάπη" Fem ;
|
||||
love_V2 = dirV2 (v_Verb2a "αγαπώ" "αγαπήσω" "αγάπησα" "αγαπούσα" );
|
||||
man_N = mkN "άνδρας" Masc ;
|
||||
married_A2 = mkA2 (mkA "παντρεμένος") (mkPreposition "με" ** {lock_Prep = <>});
|
||||
meat_N = regIrreg "τέρας" ;
|
||||
milk_N = regIrreg "γάλα" ;
|
||||
moon_N = mkN "φεγγάρι" Neut;
|
||||
mother_N2 = ofN2 (mkN "μητέρα");
|
||||
mountain_N = mkN "βουνό";
|
||||
mouth_N = mkN "στόμα" "στόματα" Neut;
|
||||
music_N = mkN "μουσική" ;
|
||||
name_N = mkN "όνομα" "ονόματα" Neut;
|
||||
narrow_A = mkA "στενός" ;
|
||||
near_A = mkA "κοντινός" ;
|
||||
neck_N = mkN "λαιμός" ;
|
||||
new_A = mkAd "καινούριος" ;
|
||||
newspaper_N = mkN "εφημερίδα" ;
|
||||
night_N = mkN "νύχτα" Fem ;
|
||||
nose_N = mkN "μύτη" Fem ;
|
||||
now_Adv = ss "τώρα" ;
|
||||
number_N = mkN "αριθμός" ;
|
||||
oil_N = mkN "λάδι" Neut;
|
||||
old_A = mkAd "παλιός" ;
|
||||
open_V2 = dirV2 (v_Verb1b "ανοίγω" "ανοίξω" "άνοιξα" "άνοιγα");
|
||||
paint_V2A = mkV2A (v_Verb1a "βάφω" "βάψω" "έβαψα" "έβαφα" ) acc acc;
|
||||
paper_N = mkN "χαρτί" ;
|
||||
paris_PN = mkPN "Παρίσι" ;
|
||||
peace_N = mkN "ειρήνη" Fem;
|
||||
pen_N = mkNounAklito "στυλό" Neut;
|
||||
person_N = mkN "πρόσωπο" "προσώπων" Neut ;
|
||||
planet_N = mkN "πλανήτης" Neut;
|
||||
plastic_N = mkN "πλαστικό" ;
|
||||
play_V = v_Verb1a "παίζω" "παίξω" "έπαιξα" "έπαιζα" ;
|
||||
play_V2 = dirV2 (v_Verb1a "παίζω" "παίξω" "έπαιξα" "έπαιζα" );
|
||||
policeman_N = mkN "αστυνομικός" ;
|
||||
priest_N = regNaniso "παπάς" ;
|
||||
probable_AS = mkAS (mkAd3 "πιθανός") ;
|
||||
pull_V2 = dirV2 ( v_Verb2a "τραβώ" "τραβήξω" "τράβηξα" "τραβούσα" ) ;
|
||||
push_V2 = dirV2 (v_Verb1c "σπρώχνω" "σπρώξω" "έσπρωξα" "έσπρωχνα" ) ;
|
||||
put_V2 = dirV2 (v_Verb1c "βάζω" "βάλω" "έβαλα" "έβαζα" ) ;
|
||||
queen_N = mkN "βασίλισσα" Fem;
|
||||
question_N = mkN "ερώτηση" "ερωτήσεις" Fem ;
|
||||
radio_N = mkN "ραδιόφωνο" "ραδιοφώνων" Neut ;
|
||||
rain_N = mkN "βροχή" ;
|
||||
rain_V0 = mkV0 (v_mkVerbAproswpo "βρέχει" "βρέξει" "έβρεξε" "έβρεχε") ;
|
||||
read_V2 = dirV2 (v_Verb1d "διαβάζω" "διαβάσω" "διάβασα" "διάβαζα");
|
||||
ready_A = mkA "έτοιμος" ;
|
||||
reason_N = mkN "λόγος" ;
|
||||
red_A = regAdj "κόκκινος" ;
|
||||
religion_N = mkN "θρησκεία" Fem ;
|
||||
restaurant_N = mkN "εστιατόριο" "εστιατορίων" Neut ;
|
||||
right_Ord =mkAd "δεξιός" ;
|
||||
river_N = mkN "ποτάμι" Neut ;
|
||||
road_N = mkN "δρόμος" ;
|
||||
rock_N = mkN "βράχος" ;
|
||||
roof_N = mkN "στέγη" Fem;
|
||||
root_N = mkN "ρίζα" Fem ;
|
||||
rope_N = mkN "σχοινί" ;
|
||||
rotten_A = mkAd "σάπιος" ;
|
||||
round_A = mkA "στρογγυλός" ;
|
||||
rubber_N = mkN "γόμα" Fem ;
|
||||
rub_V2 = dirV2 (v_Verb1a "τρίβω" "τρίψω" "έτριψα" "έτριβα") ;
|
||||
rule_N = mkN "κανόνας" ;
|
||||
run_V = VerbNoPassive1 "τρέχω" "τρέξω" "έτρεξα" "έτρεχα" " " ;
|
||||
salt_N = mkN "αλάτι" Neut;
|
||||
sand_N = mkN "άμμος" "άμμων" Fem;
|
||||
say_VS = mkVS ( v_VerbContrIrreg2 "λέω" "πώ" "είπα" "έλεγα");
|
||||
school_N = mkN "σχολείο" ;
|
||||
science_N = mkN "επιστήμη" Fem ;
|
||||
scratch_V2 = dirV2 (v_Verb1a "ξύνω" "ξύσω" "έξυσα" "έξυνα") ;
|
||||
sea_N = mkN "θάλασσα" Fem ;
|
||||
seed_N =mkN "σπόρος" ;
|
||||
seek_V2 = dirV2 (v_Verb2a "αναζητώ" "αναζητήσω" "αναζήτησα" "αναζητούσα");
|
||||
see_V2 = dirV2 ( v_VerbContrIrreg3 "βλέπω" "δώ" "είδα" "έβλεπα" );
|
||||
sell_V3 = dirV3 (v_Verb2a "πουλώ" "πουλήσω" "πούλησα" "πουλούσα") prepse;
|
||||
send_V3 = dirV3 (v_Verb1a "στέλνω" "στείλω" "έστειλα" "έστελνα") prepse ;
|
||||
sew_V = v_Verb1a "ράβω" "ράψω" "έραψα" "έραβα" ;
|
||||
sharp_A =mkA "αιχμηρός" ;
|
||||
sheep_N = mkN "πρόβατο" "προβάτων" Neut ;
|
||||
ship_N = mkN "πλοίο" ;
|
||||
shirt_N = mkN "πουκάμισο" ;
|
||||
shoe_N = mkN "παπούτσι" Neut;
|
||||
shop_N = mkN "κατάστημα" "καταστήματα" Neut ;
|
||||
short_A = mkAd "κοντός" ;
|
||||
silver_N = mkN "ασήμι" Neut;
|
||||
sing_V = v_Verb2a "τραγουδώ" "τραγουδήσω" "τραγούδησα" "τραγουδούσα" ;
|
||||
sister_N = mkN "αδελφή" ;
|
||||
sit_V = v_VerbDeponent5 "κάθομαι" "καθήσω" "κάθησα" "καθόμουν" "κάθισε" "καθίστε" "καθισμένος" ;
|
||||
skin_N = regIrreg "δέρμα" ;
|
||||
sky_N = mkN "ουρανός" ;
|
||||
sleep_V = v_VerbDeponent "κοιμάμαι" "κοιμηθώ" "κοιμήθηκα" "κοιμόμουν" "κοιμήσου" "κοιμισμένος" ;
|
||||
small_A = mkAd3 "μικρός" ;
|
||||
smell_V = v_Verb1d "μυρίζω" "μυρίσω" "μύρισα" "μύριζα" ;
|
||||
smoke_N = mkN "καπνός" ;
|
||||
smooth_A = mkA "μαλακός" ;
|
||||
snake_N = mkN "φίδι" Neut;
|
||||
snow_N = mkN "χιόνι" Neut;
|
||||
sock_N = mkN "κάλτσα" Fem ;
|
||||
song_N = mkN "τραγούδι" Neut ;
|
||||
speak_V2 = dirV2 ( v_Verb2a "μιλώ" "μιλήσω" "μίλησα" "μιλούσα") ;
|
||||
spit_V = v_Verb1c "φτύνω" "φτύσω" "έφτυσα" "έφτυνα" ;
|
||||
split_V2 = dirV2 (v_Verb1d "χωρίζω" "χωρίσω" "χώρισα" "χώριζα") ;
|
||||
squeeze_V2 = dirV2 (v_Verb1c "σφίγγω" "σφίξω" "έσφιξα" "έσφιγγα" );
|
||||
stab_V2 = dirV2 (v_Verb1b "μαχαιρώνω" "μαχαιρώσω" "μαχαίρωσα" "μαχαίρωνα");
|
||||
stand_V = v_VerbDeponent2 "στέκομαι" "σταθώ" "στάθηκα" "στεκόμουν" "στάσου" "στεκόμενος" ;
|
||||
star_N = mkN "αστέρι" Neut ;
|
||||
steel_N = mkN "ατσάλι" Neut;
|
||||
stick_N = mkN "ραβδί" ;
|
||||
stone_N = mkN "πέτρα" Fem ;
|
||||
stop_V = v_Verb2a "σταματώ" "σταματήσω" "σταμάτησα" "σταματούσα" ;
|
||||
stove_N = mkN "φούρνος" ;
|
||||
straight_A = mkAd "ίσιος" ;
|
||||
student_N = mkN "φοιτητής" ;
|
||||
stupid_A = mkAdIrreg "ηλίθιος" ;
|
||||
suck_V2 = dirV2 ( v_Verb2a "ρουφώ" "ρουφήξω" "ρούφηξα" "ρουφούσα") ;
|
||||
sun_N = mkN "ήλιος" ;
|
||||
swell_V = v_Verb1c "πρήζω" "πρήξω" "έπρηξα" "έπρηζα" ;
|
||||
swim_V = v_VerbNoPassive3 "κολυμπώ" "κολυμπήσω" "κολύμπησα" "κολυμπούσα" "κολύμπα" "" ;
|
||||
switch8off_V2 = dirV2 (v_Verb1a "σβήνω" "σβήσω" "έσβησα" "έσβηνα") ;
|
||||
switch8on_V2 = dirV2 (v_Verb1b "ανάβω" "ανάψω" "άναψα" "άναβα") ;
|
||||
table_N = mkN "τραπέζι" Neut ;
|
||||
tail_N =mkN "ουρά" ;
|
||||
talk_V3 = mkV3 (v_Verb2a "μιλώ" "μιλήσω" "μίλησα" "μιλούσα") prepse (mkPreposition "για" ** {lock_Prep = <>}) ;
|
||||
teacher_N =mkN "δάσκαλος" "δασκάλων" Masc;
|
||||
teach_V2 = dirV2 ( v_Verb1d "διδάσκω" "διδάξω" "δίδαξα" "δίδασκα") ;
|
||||
television_N = mkN "τηλεόραση" "τηλεοράσεις" Fem ;
|
||||
thick_A = mkAd "παχύς";
|
||||
thin_A = mkA "λεπτός" ;
|
||||
think_V = v_VerbDeponent2 "σκέφτομαι" "σκεφτώ" "σκέφτηκα" "σκεφτόμουν" "σκέψου" "σκεπτόμενος" ;
|
||||
throw_V2 = dirV2 (v_Verb1c "ρίχνω" "ρίξω" "έριξα" "έριχνα" );
|
||||
tie_V2 = dirV2 (v_Verb1a "δένω" "δέσω" "έδεσα" "έδενα" );
|
||||
today_Adv = ss "σήμερα" ;
|
||||
tongue_N =mkN "γλώσσα" Fem;
|
||||
tooth_N = mkN "δόντι" Neut;
|
||||
train_N = mkN "τρένο";
|
||||
travel_V = v_Verb1b "ταξιδεύω" "ταξιδέψω" "ταξίδεψα" "ταξίδευα" ;
|
||||
tree_N = mkN "δέντρο";
|
||||
turn_V = v_Verb1d "γυρίζω" "γυρίσω" "γύρισα" "γύριζα" ;
|
||||
ugly_A = mkA "άσχημος" ;
|
||||
uncertain_A = mkA "αβέβαιος" ;
|
||||
understand_V2 = dirV2 (v_VerbNoPassive "καταλαβαίνω" "καταλάβω" "κατάλαβα" "καταλάβαινα" "κατάλαβε" " ") ;
|
||||
university_N = mkN "πανεπιστήμιο" "πανεπιστημίων" Neut;
|
||||
village_N = mkN "χωριό";
|
||||
vomit_V = v_Verb2c "ξερνώ" "ξεράσω" "ξέρασα" "ξερνούσα" ;
|
||||
wait_V2 = dirV2 ( v_VerbNoPassive "περιμένω" "περιμένω" "περίμενα" "περίμενα" "περίμενε" " ") ;
|
||||
walk_V = v_Verb2a "περπατώ" "περπατήσω" "περπάτησα" "περπατούσα" ;
|
||||
warm_A = mkAd3 "ζεστός" ;
|
||||
war_N = mkN "πόλεμος" "πολέμων" Masc;
|
||||
wash_V2 = dirV2 (v_Verb1c "πλένω" "πλύνω" "έπλυνα" "έπλενα" );
|
||||
watch_V2 = dirV2 (v_Verb1b "κοιτάζω" "κοιτάξω" "κοίταξα" "κοίταζα");
|
||||
water_N = mkN "νερό";
|
||||
wet_A = mkA "υγρός" ;
|
||||
white_A = mkA "άσπρος" ;
|
||||
wide_A = mkAd "φαρδύς" ;
|
||||
wife_N =mkN "σύζηγος" "συζήγων" Fem ;
|
||||
wind_N = regNaniso "αέρας" ;
|
||||
window_N = mkN "παράθυρο" "παραθύρων" Neut ;
|
||||
wine_N = mkN "κρασί" ;
|
||||
wing_N = mkN "φτερό" ;
|
||||
win_V2 = dirV2 (v_Verb1dx "κερδίζω" "κερδίσω" "κέρδισα" "κέρδιζα") ;
|
||||
wipe_V2 = dirV2 (v_Verb1dx "σκουπίζω" "σκουπίσω" "σκούπισα" "σκούπιζα") ;
|
||||
woman_N =mkN "γυναίκα" Fem;
|
||||
wonder_VQ = mkVQ (v_VerbDeponent "αναρωτιέμαι" "αναρωτηθώ" "αναρωτήθηκα" "αναρωτιόμουν" "αναρωτήσου" "αναρωτώμενος") ;
|
||||
wood_N = mkN "ξύλο" ;
|
||||
worm_N = mkN "σκουλήκι" Neut ;
|
||||
write_V2 = dirV2 (v_Verb1a "γράφω" "γράψω" "έγραφα" "έγραψα" ) ;
|
||||
year_N = regIrreg "χρόνος" ;
|
||||
yellow_A = mkA "κίτρινος" ;
|
||||
young_A = mkAd "νέος" ;
|
||||
|
||||
} ;
|
||||
12
lib/src/greek/MakeStructuralGre.gf
Normal file
12
lib/src/greek/MakeStructuralGre.gf
Normal file
@@ -0,0 +1,12 @@
|
||||
resource MakeStructuralGre = open CatGre, ParadigmsGre, ResGre, Prelude in {
|
||||
|
||||
|
||||
oper
|
||||
|
||||
mkSubj : Str -> Subj = \x ->
|
||||
{s = x ; m = Ind ; lock_Subj = <>} ;
|
||||
mkConj : Str -> Str -> Number -> Conj = \x,y,n ->
|
||||
{s1 = x ; s2 = y ; n = n ; lock_Conj = <>} ;
|
||||
|
||||
|
||||
}
|
||||
58
lib/src/greek/MorphoGre.gf
Normal file
58
lib/src/greek/MorphoGre.gf
Normal file
@@ -0,0 +1,58 @@
|
||||
--# -path=.:../../prelude
|
||||
|
||||
|
||||
|
||||
-- This resource morphology contains definitions needed in the resource
|
||||
-- syntax. To build a lexicon, it is better to use $ParadigmsEng$, which
|
||||
-- gives a higher-level access to this module.
|
||||
|
||||
resource MorphoGre = open Prelude, (Predef=Predef), ResGre in {
|
||||
|
||||
flags coding=utf8 ;
|
||||
|
||||
--2 Determiners
|
||||
|
||||
--oper
|
||||
|
||||
--mkDet : (s1,_,_,_,_,_,_,_,_ : Str) -> Number -> Det = \mn,mg,ma,yn,yg,ya,nn,ng,na,n ->
|
||||
-- {
|
||||
-- s = table {
|
||||
-- Masc => table { Nom => mn ; Gen => mg ; Acc => ma } ;
|
||||
-- Fem => table { Nom => yn ; Gen => yg ; Acc => ya } ;
|
||||
-- Neut => table { Nom => nn ; Gen => ng ; Acc => na }
|
||||
-- } ;
|
||||
-- n = n ;
|
||||
-- } ;
|
||||
|
||||
|
||||
--2 Pronouns
|
||||
|
||||
|
||||
--mkPronoun: (aftos,tou,ton : Str) -> Gender -> Number -> Person -> Pronoun =
|
||||
-- \aftos,tou,ton,g,n,p -> {
|
||||
-- s = table {
|
||||
-- Nom => {clit = [] ; obj = aftos; isClit = False} ;
|
||||
-- Gen => {clit = tou ; obj = [] ; isClit = True} ;
|
||||
-- Acc => {clit = ton ; obj = [] ; isClit = True}
|
||||
-- } ;
|
||||
-- g = g;
|
||||
-- a = Ag g n p
|
||||
-- } ;
|
||||
|
||||
-- mkPronoun: (aftos,tou,ton, afton : Str) -> Gender -> Number -> Person -> Pronoun =
|
||||
-- \aftos,tou,ton,afton, g,n,p -> {
|
||||
-- s = table {
|
||||
-- Nom => {clit = [] ; obj = aftos; isClit = False ; emph = [] } ;
|
||||
-- Gen => {clit = tou ; obj = [] ; isClit = True ; emph = [] } ;
|
||||
-- Acc => {clit = ton ; obj = [] ; isClit = True ; emph = Preposition.c ++ afton}
|
||||
-- } ;
|
||||
-- g = g;
|
||||
-- a = Ag g n p
|
||||
-- } ;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
} ;
|
||||
|
||||
247
lib/src/greek/NounGre.gf
Normal file
247
lib/src/greek/NounGre.gf
Normal file
@@ -0,0 +1,247 @@
|
||||
concrete NounGre of Noun = CatGre ** open ResGre, ParadigmsGre, Prelude in {
|
||||
|
||||
flags coding= utf8 ;
|
||||
|
||||
lin
|
||||
|
||||
|
||||
DetCN det cn =
|
||||
let
|
||||
g = cn.g ;
|
||||
n = det.n
|
||||
in heavyNPpol det.isNeg {
|
||||
s = \\c => det.s ! cn.g ! c ++ cn.s ! det.n ! c ;
|
||||
a =Ag cn.g det.n P3 ;
|
||||
} ;
|
||||
|
||||
UsePN pn = {
|
||||
s = \\c=> {
|
||||
comp = artDef pn.g Sg c ++ pn.s ! Sg ! c ;
|
||||
c1 = [] ;
|
||||
c2 = [] ;
|
||||
isClit = False
|
||||
} ;
|
||||
a = Ag pn.g Sg P3;
|
||||
isNeg =False;
|
||||
} ;
|
||||
|
||||
UsePron pron = pron ** {isNeg = False} ;
|
||||
|
||||
|
||||
PredetNP pred np =
|
||||
let agr = complAgr np.a in
|
||||
heavyNPpol np.isNeg {
|
||||
s = \\c => pred.s !agr.n ! agr.g ! c ++ (np.s ! c).comp;
|
||||
a =Ag agr.g agr.n P3 ;
|
||||
} ;
|
||||
|
||||
|
||||
PPartNP np v2 =
|
||||
let agr = agrFeatures np.a
|
||||
in
|
||||
{
|
||||
s = \\c => {
|
||||
comp = possCase agr.g agr.n c ++ v2.s ! Participle Posit agr.g agr.n c ++ (np.s ! c).comp ;
|
||||
c1 = [] ;
|
||||
c2 = [] ;
|
||||
isClit = False
|
||||
} ;
|
||||
a = np.a ;
|
||||
isNeg =False;
|
||||
} ;
|
||||
|
||||
|
||||
AdvNP np adv = {
|
||||
s = \\c => {
|
||||
comp = (np.s ! c).comp ++ adv.s;
|
||||
c1 = [] ;
|
||||
c2 = [] ;
|
||||
isClit = False
|
||||
} ;
|
||||
a = np.a ;
|
||||
isNeg =False;
|
||||
} ;
|
||||
|
||||
|
||||
RelNP np rs = {
|
||||
s = \\c => {
|
||||
comp = (np.s ! c).comp ++ "," ++ rs.s! Ind ! np.a ;
|
||||
c1 = [] ;
|
||||
c2 = [] ;
|
||||
isClit = False
|
||||
} ;
|
||||
a = np.a ;
|
||||
isNeg =False;
|
||||
} ;
|
||||
|
||||
DetNP det =
|
||||
let
|
||||
g = Neut ;
|
||||
n = det.n
|
||||
in heavyNP {
|
||||
s = det.sp ! g ;
|
||||
a = agrP3 g n ;
|
||||
isClit = False
|
||||
} ;
|
||||
|
||||
|
||||
DetQuant quant num = {
|
||||
s = \\g,c => quant.s ! num.isNum ! g ! num.n ! c ++ num.s ! g !c;
|
||||
sp = \\g,c => case num.isNum of {
|
||||
True => quant.s ! True ! g! num.n ! c ++ num.s ! g !c;
|
||||
False => quant.sp !g ! num.n ! c ++ num.s ! g!c
|
||||
} ;
|
||||
n = num.n ;
|
||||
isNeg = quant.isNeg
|
||||
} ;
|
||||
|
||||
DetQuantOrd quant num ord = {
|
||||
s,sp = \\g,c => quant.s ! num.isNum ! g ! num.n ! c ++ num.s ! g !c++
|
||||
ord.s ! Posit ! g ! num.n !c;
|
||||
n = num.n ;
|
||||
isNeg = quant.isNeg
|
||||
} ;
|
||||
|
||||
NumPl = {s = \\g,c => []; n = Pl ; isNum = False} ;
|
||||
|
||||
NumSg = {s = \\g,c => []; n = Sg ; isNum = False} ;
|
||||
|
||||
NumCard n = n ** {isNum = True} ;
|
||||
|
||||
NumNumeral numeral = {s = \\g,c => numeral.s ! NCard g c; n = numeral.n } ;
|
||||
|
||||
NumDigits numeral = {s = \\g,c => numeral.s ! NCard g c; n = numeral.n } ;
|
||||
|
||||
AdNum adn num = {s = \\g,c => adn.s ++ num.s!g!c; n = num.n } ;
|
||||
|
||||
OrdNumeral numeral = {s = \\_,g,n,c=> numeral.s ! NOrd g n c ;
|
||||
adv= table { Posit => " " ; Compar => " " ; Superl => " "}
|
||||
} ;
|
||||
|
||||
|
||||
OrdDigits numeral = {s = \\_,g,n,c=> numeral.s ! NOrd g n c ;
|
||||
adv= table { Posit => " " ; Compar => " " ; Superl => " "}
|
||||
} ;
|
||||
|
||||
OrdSuperl a = {s = \\d,g,n,c=> a.s ! Superl ! g ! n ! c ;
|
||||
adv= a.adv
|
||||
} ;
|
||||
|
||||
|
||||
DefArt = {
|
||||
s = \\_,g,n,c => artDef g n c ;
|
||||
sp = \\g,n,c => artDef g n c ;
|
||||
isNeg =False ;
|
||||
} ;
|
||||
|
||||
IndefArt = {
|
||||
s = \\_,g,n,c => artIndef g n c ;
|
||||
sp = \\g,n,c => artIndef g n c ;
|
||||
isNeg =False ;
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
MassNP cn =
|
||||
let
|
||||
g = cn.g ;
|
||||
n = Sg
|
||||
in heavyNP {
|
||||
s = \\c => cn.s ! n ! c ;
|
||||
c1 = [];
|
||||
c2 = [];
|
||||
isClit = False ;
|
||||
a = agrP3 g n ;
|
||||
isNeg =False;
|
||||
} ;
|
||||
|
||||
|
||||
PossPron pron = {
|
||||
s = \\_,g,n,c =>possCase g n c ++ (regAdj "δικός").s !Posit! g !n !c ++ pron.poss ;
|
||||
sp = \\ g,n,c =>possCase g n c ++ (regAdj "δικός").s !Posit! g !n !c ++ pron.poss;
|
||||
isNeg = False;
|
||||
} ;
|
||||
|
||||
|
||||
UseN n = n;
|
||||
|
||||
|
||||
ComplN2 f x = {
|
||||
s = \\n,c => f.s ! n ! c++ appCompl f.c2 x ;
|
||||
g = f.g ;
|
||||
} ;
|
||||
|
||||
ComplN3 f x = {
|
||||
s = \\n,c => f.s ! n ! c++ appCompl f.c2 x ;
|
||||
g = f.g ;
|
||||
c2 = f.c3
|
||||
} ;
|
||||
|
||||
UseN2 n = n ;
|
||||
|
||||
Use2N3 f = f ;
|
||||
|
||||
Use3N3 f = f ** {c2 = f.c3} ;
|
||||
|
||||
|
||||
AdjCN ap cn = {
|
||||
s = \\n,c => ap.s ! Posit ! cn.g ! n ! c ++ cn.s ! n ! c ;
|
||||
g = cn.g
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
RelCN cn rs =
|
||||
let
|
||||
g = cn.g ;
|
||||
in {
|
||||
s = \\n,c => cn.s ! n ! c ++"," ++ rs.s ! Ind ! agrP3 g n ;
|
||||
g = g
|
||||
} ;
|
||||
|
||||
|
||||
AdvCN cn ad = {s = \\n,c => cn.s ! n ! c ++ ad.s ; g = cn.g} ;
|
||||
|
||||
SentCN cn sc = {s = \\n,c => cn.s ! n ! c ++ sc.s ; g = cn.g} ;
|
||||
|
||||
|
||||
ApposCN cn np =
|
||||
let g = cn.g
|
||||
in {
|
||||
s = \\n,c => cn.s ! n ! c ++ (np.s ! Nom).comp ;
|
||||
g = g
|
||||
} ;
|
||||
|
||||
|
||||
PossNP cn np =
|
||||
let g = cn.g
|
||||
in {
|
||||
s = \\n,c => cn.s ! n !c ++ (np.s ! Gen).c1 ;
|
||||
g = g
|
||||
} ;
|
||||
|
||||
|
||||
PartNP cn np =
|
||||
let g = cn.g
|
||||
in {
|
||||
s = \\n,c => cn.s ! n !c ++ (np.s ! Nom).comp ;
|
||||
g = g
|
||||
} ;
|
||||
|
||||
|
||||
CountNP det np =
|
||||
let agr = complAgr np.a
|
||||
in {
|
||||
s = \\c => {
|
||||
comp = det.s ! agr.g ! c ++ "από" ++ (np.s ! CPrep PNul).comp ;
|
||||
c1 = [] ;
|
||||
c2 = [] ;
|
||||
isClit = False
|
||||
} ;
|
||||
a = Ag agr.g det.n P3;
|
||||
isNeg =False;
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
}
|
||||
312
lib/src/greek/NumeralGre.gf
Normal file
312
lib/src/greek/NumeralGre.gf
Normal file
@@ -0,0 +1,312 @@
|
||||
concrete NumeralGre of Numeral = CatGre ** open ResGre,Prelude in {
|
||||
|
||||
flags coding= utf8 ;
|
||||
|
||||
|
||||
lincat
|
||||
Digit = {s : DForm => CardOrd => Str} ;
|
||||
Sub10 = {s : DForm => CardOrd => Str ; n : Number} ;
|
||||
Sub100 = {s : CardOrd => Str ; n : Number} ;
|
||||
Sub1000 = {s : CardOrd => Str ; n : Number} ;
|
||||
Sub1000000 = {s : CardOrd => Str ; n : Number} ;
|
||||
|
||||
|
||||
|
||||
|
||||
lin num x = x ;
|
||||
|
||||
lin n2 = mkNum "δύο" "δώδεκα" "είκοσι" "διακόσια" "δεύτερος" "δωδέκατος" "εικοστός" "διακοσιοστός" "δις" "δωδεκάκις" "εικοσάκις" "διακοσάκις" ;
|
||||
|
||||
lin n3 = mkNum3 "τρία" "δεκατρία" "τριάντα" "τριακόσια" "τρίτος" "τριακοστός" "τριακοσιοστός" "τρις" "δεκατριάκις" "τριαντάκις" "τριακοσάκις";
|
||||
|
||||
lin n4 = mkNum3 "τέσσερα" "δεκατέσσερα" "σαράντα" "τετρακόσια" "τέταρτος" "τεσσαρακοστός" "τετρακοσιοστός" "τετράκις" "δεκατετράκις" "τεσσαρακοντάκις" "τετρακοσάκις" ;
|
||||
|
||||
lin n5 = mkNum2 "πέντε" "δεκαπέντε" "πενήντα" "πεντακόσια" "πέμπτος" "πεντηκοστός" "πεντακοσιοστός" "πεντάκις" "δεκαπεντάκις" "πεντηκοντάκις" "πεντακοσάκις";
|
||||
|
||||
lin n6 = mkNum2 "έξι" "δεκαέξι" "εξήντα" "εξακόσια" "έκτος" "εξηκοστός" "εξακοσιοστός" "εξακισ" "δεκαεξάκις" "εξηκοντάκις" "εξακοσάκις" ;
|
||||
|
||||
lin n7 = mkNum2 "εφτά" "δεκαεφτά" "εβδομήντα" "εφτακόσια" "έβδομος" "εβδομηκοστός" "εφτακοσιοστός" "εφτάκις" "δεκαεφτάκις" "εβδομηκοντάκις" "επτακοσάκις";
|
||||
|
||||
lin n8 = mkNum2 "οχτώ" "δεκαοχτώ" "ογδόντα" "οχτακόσια" "όγδοος" "ογδοηκοστός" "οχτακοσιοστός" "οχτακισ" "δεκαοκτάκις" "ογδοηκοντάκις" "οκτακοσάκις";
|
||||
|
||||
lin n9 = mkNum2 "εννιά" "δεκαεννιά" "ενενήντα" "εννιακόσια" "ένατος" "ενενηκοστός" "εννιακοσιοστός" "εννιάκις" "δεκαεννεάκις" "ενενηκοντάκις" "εννεακοσάκις";
|
||||
|
||||
lin pot01 = mkNumEna "ένα" "έντεκα" "ενδέκατος" "δέκα" "εκατό" "πρώτος" "δέκατος" "εκατοστός" "εντεκάκις" "δεκάκις" "εκατοντάκις" ** {n = Sg} ;
|
||||
lin pot0 d = d ** {n = Pl} ;
|
||||
lin pot110 = {s=\\c => pot01.s ! ten ! c; n = Pl} ;
|
||||
lin pot111 = spl ((mkNumEna "" "έντεκα" "ενδέκατος" "" "" "" "" "" "εντεκάκις" "" "").s !teen ) ;
|
||||
lin pot1to19 d = {s = d.s ! teen } ** {n = Pl} ;
|
||||
lin pot0as1 n = {s = n.s ! unit} ** {n = n.n} ;
|
||||
lin pot1 d = {s = d.s ! ten} ** {n = Pl} ;
|
||||
lin pot1plus d e = {s = \\co =>
|
||||
d.s ! ten ! co ++ e.s ! unit !co ; n = Pl} ;
|
||||
lin pot1as2 n = n ;
|
||||
lin pot2 d = {s = d.s ! hundr isNot} ** {n = Pl} ;
|
||||
lin pot2plus d e = {s = \\co =>
|
||||
d.s ! hundr Is ! co ++ e.s ! co ; n = Pl} ;
|
||||
lin pot2as3 n = n ;
|
||||
|
||||
lin pot3 n = {
|
||||
s = \\co => case n.n of {
|
||||
Sg => Xilias co n.s n.n ++ cardOrdXiliaSg "χίλια" "χιλιοστός" ! co ;
|
||||
Pl => Xilias co n.s n.n ++ cardOrdXiliaPl "χιλιάδες" "χιλιοστός" ! co }
|
||||
} ** {n = Pl} ;
|
||||
|
||||
|
||||
lin pot3plus n m = {
|
||||
s = \\co => case n.n of {
|
||||
Sg => Xilias co n.s n.n ++ cardOrdXiliaSg "χίλια" "χιλιοστός" ! co ++ m.s ! co ;
|
||||
Pl => Xilias co n.s n.n ++ n.s ! NCardX ++ cardOrdXiliaPl "χιλιάδες" "χιλιοστός" ! co ++ m.s ! co }
|
||||
} ** {n = Pl} ;
|
||||
|
||||
|
||||
oper
|
||||
|
||||
|
||||
|
||||
invNum : CardOrd = NCard Fem Nom ;
|
||||
|
||||
|
||||
Xilias : CardOrd -> (CardOrd => Str) -> Number -> Str = \co,d,n ->
|
||||
case n of {Sg =>[] ; _ =>
|
||||
case co of {
|
||||
NOrd _ _ _ => d ! NCardX ;
|
||||
_ => d ! invNum
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
-----regular form of numerals-------
|
||||
mkNum : (x1,_,_,_,_,_,_,_,_,_,_,x11 : Str) -> {s : DForm => CardOrd => Str} =
|
||||
\dyo,dwdeka,eikosi,diakosia,deyteros,dwdekatos,eikostos,diakosiostos,dis,dwdekakis,eikosakis, diakosakis ->
|
||||
{s = table {
|
||||
unit => cardOrd dyo deyteros dis;
|
||||
teen => cardOrd dwdeka dwdekatos dwdekakis;
|
||||
ten => cardOrd eikosi eikostos eikosakis ;
|
||||
hundr _ => cardOrd4 diakosia diakosiostos diakosakis
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
|
||||
-----case with complex teen ("δεκατος έβδομος") -------
|
||||
mkNum2 : (x1,_,_,_,_,_,_,_,_,_,x10 : Str) -> {s : DForm => CardOrd => Str} =
|
||||
\dyo,dwdeka,eikosi,diakosia,deyteros,eikostos,diakosiostos,dis, dwdekakis,eikosakis, diakosakis ->
|
||||
{s = table {
|
||||
unit => cardOrd dyo deyteros dis ;
|
||||
teen => cardOrd2 dwdeka deyteros dwdekakis ;
|
||||
ten => cardOrd eikosi eikostos eikosakis;
|
||||
hundr _ => cardOrd4 diakosia diakosiostos diakosakis
|
||||
}
|
||||
} ;
|
||||
|
||||
mkNum3 : (x1,_,_,_,_,_,_,_,_,_,x10 : Str) -> {s : DForm => CardOrd => Str} =
|
||||
\tria,dekatria,trianta,triakosia,tritos,triakostos,triakosiostos,tris,dekatriakis, triantakis, triakosakis ->
|
||||
{s = table {
|
||||
unit => cardOrd4 tria tritos tris ;
|
||||
teen => cardOrd3 dekatria tritos dekatriakis ;
|
||||
ten => cardOrd trianta triakostos triantakis ;
|
||||
hundr _ => cardOrd4 triakosia triakosiostos triakosakis
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
-----Number 1 is a case itself. ------
|
||||
mkNumEna : (x1,_,_,_,_,_,_,_,_,_,x11 : Str) -> {s : DForm => CardOrd => Str} =
|
||||
\ena,enteka,endekatos, deka,ekato, protos,dekatos,ekatostos, entekakis,dekakis, ekatontakis->
|
||||
{s = table {
|
||||
unit => cardOrd4 ena protos ena ;
|
||||
teen => cardOrd enteka endekatos entekakis;
|
||||
ten => cardOrd deka dekatos dekakis;
|
||||
hundr Is => cardOrd (ekato + "ν") ekatostos ekatontakis ;
|
||||
hundr isNot => cardOrd ekato ekatostos ekatontakis
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
cardOrd : Str -> Str ->Str -> CardOrd => Str = \dyo,deyteros,dis ->
|
||||
table {
|
||||
NCard _ _ => dyo ;
|
||||
NCardX => dis ;
|
||||
NOrd g n c => (regAdj deyteros).s ! Posit ! g ! n ! c
|
||||
} ;
|
||||
|
||||
cardOrd2 : Str -> Str -> Str -> CardOrd => Str = \dyo,deyteros, dis ->
|
||||
table {
|
||||
NCard _ _ => dyo ;
|
||||
NCardX => dis;
|
||||
NOrd g n c => (regAdj "δέκατος").s ! Posit ! g ! n ! c ++ (regAdj deyteros).s ! Posit ! g ! n ! c
|
||||
} ;
|
||||
|
||||
|
||||
cardOrd3 : Str -> Str ->Str -> CardOrd => Str = \tria,tritos, tris ->
|
||||
table {
|
||||
NCard g c => case <g,c> of {
|
||||
<Masc, Gen|CPrep P_Dat> => mkGen134 tria;
|
||||
<Masc, Nom > => mkMasc134 tria;
|
||||
<Masc, _> => mkMascAcc134 tria;
|
||||
<Fem, Nom | Acc | Vocative | CPrep P_se |CPrep PNul > => mkFem134 tria ;
|
||||
<Neut | Change, Nom | Acc | Vocative|CPrep P_se |CPrep PNul > => tria ;
|
||||
<Neut | Change, Gen|CPrep P_Dat> => mkGen134 tria;
|
||||
<Fem, Gen|CPrep P_Dat> => mkGenFem134 tria
|
||||
} ;
|
||||
NCardX => tris ;
|
||||
NOrd g n c => (regAdj "δέκατος").s ! Posit ! g ! n ! c ++ (regAdj tritos).s ! Posit ! g ! n ! c
|
||||
} ;
|
||||
|
||||
cardOrd4 : Str -> Str ->Str -> CardOrd => Str = \tria,tritos, tris ->
|
||||
table {
|
||||
NCard g c => case <g,c> of {
|
||||
<Masc , Gen|CPrep P_Dat> => mkGen134 tria;
|
||||
<Masc, Nom > => mkMasc134 tria;
|
||||
<Masc, _> => mkMascAcc134 tria;
|
||||
<Fem, Nom | Acc | Vocative | CPrep P_se |CPrep PNul > => mkFem134 tria ;
|
||||
<Neut | Change, Nom | Acc | Vocative |CPrep P_se |CPrep PNul > => tria ;
|
||||
<Neut | Change, Gen|CPrep P_Dat> => mkGen134 tria;
|
||||
<Fem, Gen|CPrep P_Dat> => mkGenFem134 tria
|
||||
} ;
|
||||
NCardX => tris ;
|
||||
NOrd g n c => (regAdj tritos).s ! Posit ! g ! n ! c
|
||||
} ;
|
||||
|
||||
|
||||
cardOrdXiliaSg : Str -> Str -> CardOrd => Str = \xilia, xiliostos ->
|
||||
table {
|
||||
NCard g c => case <g,c> of {
|
||||
<Masc, Gen|CPrep P_Dat> => mkGen134 xilia;
|
||||
<Masc, Nom > => mkMasc134 xilia;
|
||||
<Masc, _> => mkMascAcc134 xilia;
|
||||
<Fem, Nom | Acc | Vocative | CPrep P_se |CPrep PNul > => mkFem134 xilia ;
|
||||
<Neut | Change, Nom | Acc | Vocative |CPrep P_se |CPrep PNul > => xilia ;
|
||||
<Neut | Change, Gen|CPrep P_Dat> => mkGen134 xilia;
|
||||
<Fem, Gen|CPrep P_Dat> => mkGenFem134 xilia
|
||||
} ;
|
||||
NCardX => [] ;
|
||||
NOrd g n c => (regAdj xiliostos).s ! Posit ! g ! n ! c
|
||||
} ;
|
||||
|
||||
|
||||
cardOrdXiliaPl : Str -> Str -> CardOrd => Str = \xiliades,xiliostos ->
|
||||
table {
|
||||
NCard g c => case <g,c> of {
|
||||
<_,Nom | Acc | Vocative | CPrep P_se |CPrep PNul> => xiliades ;
|
||||
<_,Gen|CPrep P_Dat> => mkPlxiliaGen xiliades
|
||||
} ;
|
||||
NCardX => [] ;
|
||||
NOrd g n c => (regAdj xiliostos).s ! Posit ! g ! n ! c
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
|
||||
mkGen134: Str -> Str = \s -> case s of
|
||||
{
|
||||
x+ "τρία" => x+ "τριών" ;
|
||||
x+ "ένα" => x+ "ενός" ;
|
||||
x+ "τέσσερα" => x+ "τεσσάρων" ;
|
||||
x+ "όσια" => x+ "οσίων";
|
||||
x+ "χίλια" => x+ "χιλίων"
|
||||
};
|
||||
|
||||
mkMasc134: Str -> Str = \s -> case s of
|
||||
{
|
||||
x+ "τρία" => x+ "τρείς" ;
|
||||
x+ "ένα" => x+ "ένας" ;
|
||||
x+ "τέσσερα" => x+ "τέσσερεις" ;
|
||||
x+ "όσια" => x+ "όσιοι";
|
||||
x+ "χίλια" => x+ "χίλιοι"
|
||||
};
|
||||
|
||||
|
||||
mkMascAcc134: Str -> Str = \s -> case s of
|
||||
{
|
||||
x+ "τρία" => x+ "τρείς" ;
|
||||
x+ "ένα" => x+ "έναν" ;
|
||||
x+ "τέσσερα" => x+ "τέσσερεις" ;
|
||||
x+ "όσια" => x+ "όσιους";
|
||||
x+ "χίλια" => x+ "χίλιους"
|
||||
};
|
||||
|
||||
mkFem134: Str -> Str = \s -> case s of
|
||||
{
|
||||
x+ "τρία" => x+ "τρείς" ;
|
||||
x+ "ένα" => x+ "μία" ;
|
||||
x+ "τέσσερα" => x+ "τέσσερεις" ;
|
||||
x+ "όσια" => x+ "όσιες";
|
||||
x+ "χίλια" => x+ "χίλιες"
|
||||
};
|
||||
|
||||
mkGenFem134: Str -> Str = \s -> case s of
|
||||
{
|
||||
x+ "τρία" => x+ "τριών" ;
|
||||
x+ "ένα" => x+ "μίας" ;
|
||||
x+ "τέσσερα" => x+ "τεσσάρων";
|
||||
x+ "όσια" => x+ "οσίων";
|
||||
x+ "χίλια" => x+ "χιλίων"
|
||||
};
|
||||
|
||||
|
||||
mkPlxiliaGen :Str -> Str = \s -> case s of
|
||||
{
|
||||
x+ "χιλιάδες" => x+ "χιλιάδων" };
|
||||
|
||||
|
||||
|
||||
spl : (CardOrd => Str) -> {s : CardOrd => Str ; n : Number} = \s -> {
|
||||
s = s ;
|
||||
n = Pl
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
-- numerals as sequences of digits
|
||||
|
||||
lincat
|
||||
Dig = TDigit ;
|
||||
|
||||
lin
|
||||
IDig d = d ;
|
||||
|
||||
IIDig d i = {
|
||||
s = \\o => d.s ! NCard Neut Nom ++ i.s ! o ;
|
||||
n = Pl
|
||||
} ;
|
||||
|
||||
D_0 = mk2Dig "0" Pl;
|
||||
D_1 = mk3Dig "1" Sg ;
|
||||
D_2 = mk2Dig "2" Pl ;
|
||||
D_3 = mk2Dig "3" Pl;
|
||||
D_4 = mk2Dig "4" Pl;
|
||||
D_5 = mk2Dig "5" Pl;
|
||||
D_6 = mk2Dig "6" Pl;
|
||||
D_7 = mk2Dig "7" Pl;
|
||||
D_8 = mk2Dig "8" Pl;
|
||||
D_9 = mk2Dig "9" Pl ;
|
||||
|
||||
oper
|
||||
|
||||
mk3Dig : Str -> Number -> TDigit = \c,n -> {
|
||||
s = table {NCard _ _ => c ;
|
||||
NCardX => c ;
|
||||
NOrd Masc _ _ => c + "ος" ; NOrd Fem _ _=> c + "η" ;
|
||||
NOrd _ _ _=> c + "ο"
|
||||
} ;
|
||||
n = n
|
||||
} ;
|
||||
|
||||
|
||||
mk2Dig : Str ->Number -> TDigit = \c,n -> {
|
||||
s = table {NCard _ _ => c ;
|
||||
NCardX => c ;
|
||||
NOrd Masc _ _=> c + "ος" ; NOrd Fem _ _=> c + "η" ;
|
||||
NOrd _ _ _=> c + "ο"
|
||||
} ;
|
||||
n = n
|
||||
} ;
|
||||
|
||||
TDigit = { n : Number ; s : CardOrd => Str } ;
|
||||
|
||||
}
|
||||
1
lib/src/greek/OverloadGre.gf
Normal file
1
lib/src/greek/OverloadGre.gf
Normal file
@@ -0,0 +1 @@
|
||||
resource OverloadGre = Overload with (Grammar = GrammarGre) ;
|
||||
315
lib/src/greek/ParadigmsGre.gf
Normal file
315
lib/src/greek/ParadigmsGre.gf
Normal file
@@ -0,0 +1,315 @@
|
||||
resource ParadigmsGre =
|
||||
open ResGre, CatGre,BeschGre, Prelude in {
|
||||
|
||||
flags coding = utf8 ;
|
||||
|
||||
oper
|
||||
masculine : Gender = Masc ;
|
||||
feminine : Gender = Fem ;
|
||||
neutral : Gender = Neut ;
|
||||
|
||||
accusative : Case = Acc ;
|
||||
genitive : Case = Gen ;
|
||||
|
||||
indicative : Mood = Ind ;
|
||||
conjunctive : Mood = Con ;
|
||||
|
||||
|
||||
singular : Number = Sg;
|
||||
plural : Number = Pl;
|
||||
|
||||
|
||||
|
||||
mkN = overload {
|
||||
mkN : (dentro : Str) -> N
|
||||
= \n -> lin N (regN n) ;
|
||||
mkN : (s : Str) -> Gender -> N
|
||||
= \n,g -> lin N (mkN1 n g) ;
|
||||
mkN : (s1,s2,s3,s4,p1,p2,p3,p4 : Str) -> Gender -> N
|
||||
= \s1,s2,s3,s4,p1,p2,p3,p4,g -> lin N (mkNoun s1 s2 s3 s4 p1 p2 p3 p4 g) ;
|
||||
mkN : (s1,s2: Str) -> Gender -> N
|
||||
= \s1,s2,g -> lin N (mkNending s1 s2 g) ;
|
||||
};
|
||||
|
||||
|
||||
mkN1 : Str -> Gender -> N = \x,g ->
|
||||
case x of {
|
||||
c + ("α"|"η") => mkNoun_thalassa x g ;
|
||||
c + ("ας"|"ης"|"ής"|"έας"| "ος") => mkNoun_touristas x g;
|
||||
c + ("ι"|"υ"|"όι"|"άι") => mkNoun_agori x g ;
|
||||
c + ("ον"|"όν"|"άν"|"αν" | "εν" ) => mkNoun_endiaferon x g
|
||||
} ** {lock_N = <>} ;
|
||||
|
||||
mkNending : Str -> Str -> Gender -> N = \x,n,g ->
|
||||
case <x,n> of {
|
||||
<c + "ος", c + "ων"> => mkNoun_anthropos x n g ;
|
||||
<c + "η", c + "εις"> => mkNoun_kivernisi x n g ;
|
||||
<c + "ης", c + "ηδες"> => mkNoun_fournaris x n g ;
|
||||
<c + "ας", c + "ων"> => mkNoun_filakas x n g ;
|
||||
<c + "ο", c + "ων"> => mkNoun_prosopo x n g ;
|
||||
<c + ("ώς" | "ός" | "ως" ) , c + ("ος"|"ός" ) > => mkNoun_fws x n g ;
|
||||
<c + ("μα" | "ιμο" ), c + "ατα"> => mkNoun_provlima x n g ;
|
||||
<c + "ος", c + "η"> => mkNoun_megethos x n g
|
||||
} ** {lock_N = <>} ;
|
||||
|
||||
|
||||
|
||||
mkN2 : N -> Prep -> N2 ; ---η μητέρα + γενική
|
||||
ofN2 : N -> N2 ;
|
||||
mkN2 = \n,p -> n ** {lock_N2 = <> ; c2 = p} ;
|
||||
ofN2 n = mkN2 n gen ;
|
||||
|
||||
mkN3 : N -> Prep -> Prep -> N3 ;
|
||||
mkN3 = \n,p,q -> n ** {lock_N3 = <> ; c2 = p ; c3 = q} ;
|
||||
|
||||
|
||||
|
||||
mkPN = overload {
|
||||
mkPN : (anna : Str) -> PN
|
||||
= \p -> lin PN (regName p) ;
|
||||
mkPN : (nm,gm,am,vm,pn,pa : Str) -> Gender -> PN
|
||||
= \ nm,gm,am,vm,pn,pa, g -> lin PN (mkName nm gm am vm pn pa g) ;
|
||||
} ;
|
||||
|
||||
makeNP = overload {
|
||||
makeNP : (_,_,_: Str) -> Number -> Gender -> NP = mkpanta;
|
||||
makeNP : Str -> Number -> Gender ->Bool -> NP = mkkati
|
||||
} ;
|
||||
|
||||
|
||||
mkpanta : Str -> Str -> Str -> Number -> Gender -> NP =
|
||||
\tapanta, twnpantwn,stapanta, n, g -> let ag = agrP3 g n in
|
||||
{s = \\c => case c of
|
||||
{Nom | Vocative => {c1 = [] ; c2 = [];
|
||||
comp = tapanta; isClit = False
|
||||
} ;
|
||||
Gen |CPrep P_Dat => {c1 = []; c2 = [];
|
||||
comp = twnpantwn; isClit = False};
|
||||
Acc => {c1 = []; c2 = [];
|
||||
comp = tapanta; isClit = False};
|
||||
CPrep P_se => {c1 = []; c2 = [];
|
||||
comp = stapanta ; isClit = False};
|
||||
CPrep PNul => {c1 = []; c2 = [];
|
||||
comp = tapanta; isClit = False}
|
||||
};
|
||||
a = ag ;
|
||||
isNeg = False ;
|
||||
lock_NP = <>
|
||||
};
|
||||
|
||||
mkkati : Str ->Number -> Gender -> Bool -> NP =
|
||||
\kati, n, g,b -> let ag = agrP3 g n in
|
||||
{s = \\c => case c of
|
||||
{Nom | Vocative |Gen |CPrep P_Dat |Acc |CPrep P_se |CPrep PNul=> {c1 = [] ; c2 = [];
|
||||
comp = kati; isClit = False}
|
||||
};
|
||||
a = ag ;
|
||||
isNeg = b ;
|
||||
lock_NP = <>
|
||||
};
|
||||
|
||||
|
||||
|
||||
mkA = overload {
|
||||
mkA : (a : Str) -> A
|
||||
= \a -> lin A (regAdj a) ;
|
||||
mkA : (a,b: Str) -> A
|
||||
= \a,b -> lin A (mkA1 a b)
|
||||
};
|
||||
|
||||
|
||||
|
||||
mkAd: Str -> A = \s -> regAdj1 s **{lock_A = <>} ;
|
||||
mkAd2 : Str -> A = \s -> regAdj2 s **{lock_A = <>} ;
|
||||
mkAd3 : Str -> A = \s -> regAdj3 s **{lock_A = <>} ;
|
||||
mkAd4 : Str -> A = \s -> regAdj4 s **{lock_A = <>} ;
|
||||
mkAd5 : Str -> A = \s -> regAdj5 s **{lock_A = <>} ;
|
||||
mkAdIrreg : Str -> A = \s -> irregAdj s **{lock_A = <>} ;
|
||||
|
||||
mkA1 : Str -> Str -> A = \x,n ->
|
||||
case <x,n> of {
|
||||
<c + "ης", c + "ες"> => mkAdjective4 x n ;
|
||||
<c + "ων", c + "όντων"> => mkAdjective3 x n ;
|
||||
<c + "ύς", c + "έως"> => mkAdjectiveIr x n
|
||||
} ** {lock_A = <>} ;
|
||||
|
||||
|
||||
|
||||
mkA2 : A -> Prep -> A2 ;
|
||||
mkA2 a p = a ** {c2 = p ; lock_A2 = <>} ;
|
||||
|
||||
mkA2V : A -> Prep -> Prep -> A2V;
|
||||
A2S, A2V : Type = A2 ;
|
||||
mkA2V v p q = mkA2 v p ** {s3 = q.p2 ; c3 = q.p1 ; lock_A2V = <>} ;
|
||||
|
||||
|
||||
mkAV v = v ** { lock_AV = <>} ;
|
||||
mkAV : A -> AV ;
|
||||
AS, AV : Type = A ;
|
||||
|
||||
mkAS : A -> AS ;
|
||||
mkAS v = v ** {lock_AS = <>} ;
|
||||
|
||||
mkV2 = overload {
|
||||
mkV2 : V -> V2
|
||||
= dirV2 ;
|
||||
mkV2 : V -> Prep -> V2
|
||||
= mmkV2
|
||||
} ;
|
||||
|
||||
mkVS : V -> VS ;
|
||||
mkVS v = v ** {m = \\_ => Ind; lock_VS = <>} ;
|
||||
|
||||
mkVQ : V -> VQ ;
|
||||
mkVQ v = v ** {lock_VQ = <>} ;
|
||||
|
||||
|
||||
mkVV : V -> VV ;
|
||||
mkVV v = v ** {c2 = complAcc ; lock_VV = <>} ;
|
||||
|
||||
mkVA : V -> VA ;
|
||||
mkVA v = v ** {lock_VA = <>} ;
|
||||
|
||||
|
||||
|
||||
acc : Prep ;
|
||||
gen : Prep ;
|
||||
dat : Prep ;
|
||||
prepse : Prep ;
|
||||
mkPrep : Str -> Preposition ;
|
||||
mkPrep2 : Str -> Preposition ;
|
||||
mkPrep3 : Str -> Preposition ;
|
||||
mkPrep4 : Str -> Preposition ;
|
||||
|
||||
Preposition = Compl ;
|
||||
acc = complAcc ** {lock_Prep = <>} ;
|
||||
gen = complGen ** {lock_Prep = <>} ;
|
||||
dat = complDat ** {lock_Prep = <>} ;
|
||||
prepse = complPrepSe** {lock_Prep = <>} ;
|
||||
mkPrep p = {s = p ; c = CPrep PNul ; isDir = False ; lock_Prep = <>} ;
|
||||
mkPrep2 p = {s = p ; c = CPrep P_se ; isDir = False ; lock_Prep = <>} ; -----for compround preposition using a preposition plus "σε"(μέσα σε)
|
||||
mkPrep3 p = {s = p ; c = Gen ; isDir = False ; lock_Prep = <>} ; -----preposition that takes a genitive instead of accusative
|
||||
mkPrep4 p = {s = p ; c = CPrep P_Dat ; isDir = False ; lock_Prep = <>} ; -----for few prepositions that use dative
|
||||
|
||||
Preposition : Type ;
|
||||
mkPreposition : Str -> Preposition ;
|
||||
mkPreposition = mkPrep ;
|
||||
mkPreposition2 : Str -> Preposition ;
|
||||
mkPreposition2 = mkPrep2 ;
|
||||
mkPreposition3 : Str -> Preposition ;
|
||||
mkPreposition3 = mkPrep3 ;
|
||||
mkPreposition4 : Str -> Preposition ;
|
||||
mkPreposition4 = mkPrep4 ;
|
||||
|
||||
mkV3 : overload {
|
||||
mkV3 : V -> V3 ;
|
||||
mkV3 : V -> Prep -> V3 ;
|
||||
mkV3 : V -> Prep -> Prep -> V3
|
||||
} ;
|
||||
|
||||
mkV3 = overload {
|
||||
mkV3 : V -> V3 = dirdirV3 ; -- dino,_,_
|
||||
mkV3 : V -> Prep -> V3 = dirV3 ; -- bazw,_,se
|
||||
mkV3 : V -> Prep -> Prep -> V3 = mmkV3 -- milaw, se, gia
|
||||
} ;
|
||||
|
||||
mmkV3 v p q = v ** {c2 = p ; c3 = q ; lock_V3 = <>} ;
|
||||
dirV3 v p = mmkV3 v acc p ;
|
||||
dirdirV3 v = dirV3 v gen ;
|
||||
|
||||
mmkV3 : V -> Prep -> Prep -> V3 ; -- milaw, se, gia
|
||||
dirV3 : V -> Prep -> V3 ; -- dino,_,se
|
||||
dirdirV3 : V -> V3 ; -- dino,_,_
|
||||
|
||||
|
||||
mmkV : V -> Str -> V ;
|
||||
mmkV v s = v ** {s = s } ;
|
||||
expressV : V -> Str -> V = \v,s -> mmkV v s ;
|
||||
|
||||
mmkV2 : V -> Prep -> V2 ;
|
||||
mmkV2 v p = v ** {c2 = p ; lock_V2 = <>} ;
|
||||
dirV2 : V -> V2 = \v -> mmkV2 v acc ;
|
||||
|
||||
|
||||
mkV2V : V -> Prep -> Prep -> V2V ;
|
||||
mkV2V v p q = mmkV3 v p q ** {lock_V2V = <>} ;
|
||||
|
||||
mkV2S : V -> Prep -> V2S ;
|
||||
mkV2S v p = mmkV2 v p ** {mn,mp = Ind ; lock_V2S = <>} ;
|
||||
|
||||
mkV2Q : V -> Prep -> V2Q ;
|
||||
mkV2Q v p = mmkV2 v p ** {lock_V2Q = <>} ;
|
||||
|
||||
mkV2A : V -> Prep -> Prep -> V2A ;
|
||||
mkV2A v p q = mmkV3 v p q ** {lock_V2A = <>} ;
|
||||
|
||||
|
||||
mkV0 : V -> V0 ;
|
||||
V0 : Type ;
|
||||
V0 : Type = V;
|
||||
mkV0 v = v ** {lock_V0 = <>} ;
|
||||
|
||||
mkNV : Verb -> V = \v -> {s = v.s ;vtype = v.vtype ;lock_V = <> } ;
|
||||
|
||||
---- for verbs that are formed periphrastically /usually a verb and a noun ( to lie -> λέω ψέματα / to sunbathe -> κάνω ηλιοθεραπεία)----
|
||||
compoundV : Verb -> Str -> V = \v,f -> {s = \\vf => v.s ! vf ++ f; lock_V = <>} ;
|
||||
|
||||
|
||||
v_mk_Prepei :(x1,x2 : Str) -> V = \x1,x2 -> mkNV (mk_Prepei x1 x2) ;
|
||||
v_Verb1a :(x1,x2,x3,x4 : Str) -> V = \x1,x2,x3,x4 -> mkNV (Verb1a x1 x2 x3 x4) ;
|
||||
v_Verb1b :(x1,x2,x3,x4 : Str) -> V = \x1,x2,x3,x4 -> mkNV (Verb1b x1 x2 x3 x4) ;
|
||||
v_Verb1c :(x1,x2,x3,x4 : Str) -> V = \x1,x2,x3,x4 -> mkNV (Verb1c x1 x2 x3 x4) ;
|
||||
v_Verb1d :(x1,x2,x3,x4 : Str) -> V = \x1,x2,x3,x4 -> mkNV (Verb1d x1 x2 x3 x4) ;
|
||||
|
||||
v_Verb1dx :(x1,x2,x3,x4 : Str) -> V = \x1,x2,x3,x4 -> mkNV (Verb1dx x1 x2 x3 x4) ;
|
||||
v_Verb1dxx :(x1,x2,x3,x4 : Str) -> V = \x1,x2,x3,x4 -> mkNV (Verb1dxx x1 x2 x3 x4) ;
|
||||
v_Verb1dxxx :(x1,x2,x3,x4 : Str) -> V = \x1,x2,x3,x4 -> mkNV (Verb1dxxx x1 x2 x3 x4) ;
|
||||
v_Verb1prepSuf :(x1,x2,x3,x4 : Str) -> V = \x1,x2,x3,x4 -> mkNV (Verb1prepSuf x1 x2 x3 x4) ;
|
||||
|
||||
v_Verb2a :(x1,x2,x3,x4 : Str) -> V = \x1,x2,x3,x4 -> mkNV (Verb2a x1 x2 x3 x4) ;
|
||||
v_Verb2b :(x1,x2,x3,x4 : Str) -> V = \x1,x2,x3,x4 -> mkNV (Verb2b x1 x2 x3 x4) ;
|
||||
v_Verb2c :(x1,x2,x3,x4 : Str) -> V = \x1,x2,x3,x4 -> mkNV (Verb2c x1 x2 x3 x4) ;
|
||||
|
||||
v_Verb2Ba :(x1,x2,x3,x4 : Str) -> V = \x1,x2,x3,x4 -> mkNV (Verb2Ba x1 x2 x3 x4) ;
|
||||
v_Verb2Bb :(x1,x2,x3,x4 : Str) -> V = \x1,x2,x3,x4 -> mkNV (Verb2Bb x1 x2 x3 x4) ;
|
||||
v_mkVerb2B3 :(x1,x2,x3,x4 : Str) -> V = \x1,x2,x3,x4 -> mkNV (mkVerb2B3 x1 x2 x3 x4) ;
|
||||
v_Verbirreg_pigaInw :(x1,x2,x3,x4 : Str) -> V = \x1,x2,x3,x4 -> mkNV (Verbirreg_pigaInw x1 x2 x3 x4) ;
|
||||
v_mkVerbAproswpo :(x1,x2,x3,x4 : Str) -> V = \x1,x2,x3,x4 -> mkNV (mkVerbAproswpo x1 x2 x3 x4) ;
|
||||
|
||||
v_VerbContr :(x1,x2,x3,x4 : Str) -> V = \x1,x2,x3,x4 -> mkNV (VerbContr x1 x2 x3 x4) ;
|
||||
v_VerbContr2 :(x1,x2,x3,x4 : Str) -> V = \x1,x2,x3,x4 -> mkNV (VerbContr2 x1 x2 x3 x4) ;
|
||||
v_VerbContrIrreg :(x1,x2,x3,x4 : Str) -> V = \x1,x2,x3,x4 -> mkNV (VerbContrIrreg x1 x2 x3 x4) ;
|
||||
v_VerbContrIrreg2 :(x1,x2,x3,x4 : Str) -> V = \x1,x2,x3,x4 -> mkNV (VerbContrIrreg2 x1 x2 x3 x4) ;
|
||||
v_VerbContrIrreg3 :(x1,x2,x3,x4 : Str) -> V = \x1,x2,x3,x4 -> mkNV (VerbContrIrreg3 x1 x2 x3 x4) ;
|
||||
v_VerbContrIrregNPassPerf :(x1,x2,x3,x4 : Str) -> V = \x1,x2,x3,x4 -> mkNV (VerbContrIrregNPassPerf x1 x2 x3 x4) ;
|
||||
v_VerbExw :(x1,x2,x3,x4 : Str) -> V = \x1,x2,x3,x4 -> mkNV (VerbExw x1 x2 x3 x4) ;
|
||||
v_VerbExwNoPass :(x1,x2,x3,x4 : Str) -> V = \x1,x2,x3,x4 -> mkNV (VerbExwNoPass x1 x2 x3 x4) ;
|
||||
|
||||
v_VerbContr2NoPassive :(x1,x2,x3,x4,x5 : Str) -> V = \x1,x2,x3,x4,x5 -> mkNV (VerbContr2NoPassive x1 x2 x3 x4 x5) ;
|
||||
v_VerbNoPassive1 :(x1,x2,x3,x4,x5 : Str) -> V = \x1,x2,x3,x4,x5 -> mkNV (VerbNoPassive1 x1 x2 x3 x4 x5) ;
|
||||
v_VerbNoPassive2syll :(x1,x2,x3,x4,x5 : Str) -> V = \x1,x2,x3,x4,x5 -> mkNV (VerbNoPassive2syll x1 x2 x3 x4 x5) ;
|
||||
v_Verb2aIrreg :(x1,x2,x3,x4,x5 : Str) -> V = \x1,x2,x3,x4,x5 -> mkNV (Verb2aIrreg x1 x2 x3 x4 x5) ;
|
||||
v_VerbNpperf :(x1,x2,x3,x4,x5 : Str) -> V = \x1,x2,x3,x4,x5 -> mkNV (VerbNpperf x1 x2 x3 x4 x5) ;
|
||||
v_VerbNpperf2 :(x1,x2,x3,x4,x5 : Str) -> V = \x1,x2,x3,x4,x5 -> mkNV (VerbNpperf2 x1 x2 x3 x4 x5) ;
|
||||
v_VerbIN :(x1,x2,x3,x4,x5 : Str) -> V = \x1,x2,x3,x4,x5 -> mkNV (VerbIN x1 x2 x3 x4 x5) ;
|
||||
|
||||
v_VerbDeponent :(x1,x2,x3,x4,x5,x6 : Str) -> V = \x1,x2,x3,x4,x5,x6-> mkNV (VerbDeponent x1 x2 x3 x4 x5 x6) ;
|
||||
v_VerbDeponent2 :(x1,x2,x3,x4,x5,x6 : Str) -> V = \x1,x2,x3,x4,x5,x6-> mkNV (VerbDeponent2 x1 x2 x3 x4 x5 x6) ;
|
||||
v_VerbNoPassive :(x1,x2,x3,x4,x5,x6 : Str) -> V = \x1,x2,x3,x4,x5,x6-> mkNV (VerbNoPassive x1 x2 x3 x4 x5 x6) ;
|
||||
v_VerbNoPassive2 :(x1,x2,x3,x4,x5,x6 : Str) -> V = \x1,x2,x3,x4,x5,x6-> mkNV (VerbNoPassive2 x1 x2 x3 x4 x5 x6) ;
|
||||
v_VerbNoPassive3 :(x1,x2,x3,x4,x5,x6 : Str) -> V = \x1,x2,x3,x4,x5,x6-> mkNV (VerbNoPassive3 x1 x2 x3 x4 x5 x6) ;
|
||||
v_VerbNoPassive4 :(x1,x2,x3,x4,x5,x6 : Str) -> V = \x1,x2,x3,x4,x5,x6-> mkNV (VerbNoPassive4 x1 x2 x3 x4 x5 x6) ;
|
||||
v_VerbNoPassive5 :(x1,x2,x3,x4,x5,x6 : Str) -> V = \x1,x2,x3,x4,x5,x6-> mkNV (VerbNoPassive5 x1 x2 x3 x4 x5 x6) ;
|
||||
v_VerbContracIrregNopassive :(x1,x2,x3,x4,x5,x6 : Str) -> V = \x1,x2,x3,x4,x5,x6-> mkNV (VerbContracIrregNopassive x1 x2 x3 x4 x5 x6) ;
|
||||
v_VerbContracIrregNopassive2 :(x1,x2,x3,x4,x5,x6 : Str) -> V = \x1,x2,x3,x4,x5,x6-> mkNV (VerbContracIrregNopassive2 x1 x2 x3 x4 x5 x6) ;
|
||||
|
||||
v_VerbDeponent3 :(x1,x2,x3,x4,x5,x6,x7 : Str) -> V = \x1,x2,x3,x4,x5,x6,x7-> mkNV (VerbDeponent3 x1 x2 x3 x4 x5 x6 x7) ;
|
||||
v_VerbDeponent4 :(x1,x2,x3,x4,x5,x6,x7 : Str) -> V = \x1,x2,x3,x4,x5,x6,x7-> mkNV (VerbDeponent4 x1 x2 x3 x4 x5 x6 x7) ;
|
||||
v_VerbDeponent5 :(x1,x2,x3,x4,x5,x6,x7 : Str) -> V = \x1,x2,x3,x4,x5,x6,x7-> mkNV (VerbDeponent5 x1 x2 x3 x4 x5 x6 x7) ;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
35
lib/src/greek/PhraseGre.gf
Normal file
35
lib/src/greek/PhraseGre.gf
Normal file
@@ -0,0 +1,35 @@
|
||||
concrete PhraseGre of Phrase = CatGre ** open Prelude, CommonGre, ResGre,ParadigmsGre in {
|
||||
|
||||
|
||||
flags coding=utf8 ;
|
||||
|
||||
lin
|
||||
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
|
||||
|
||||
UttS s = {s = s.s ! Ind} ;
|
||||
UttQS qs = {s = qs.s ! QDir} ;
|
||||
UttImpSg pol imp = {s = pol.s ++ imp.s ! pol.p ! Sg ! Perf} ; -----Imperf in Extra
|
||||
UttImpPl pol imp = {s = pol.s ++ imp.s ! pol.p ! Pl !Perf} ; ----- Imperf in Extra
|
||||
UttImpPol pol imp = {s = pol.s ++ imp.s ! pol.p ! Pl ! Perf} ;
|
||||
|
||||
UttIP ip = {s = ip.s ! Masc ! Nom} ;
|
||||
UttIAdv iadv = iadv ;
|
||||
UttNP np = {s = (np.s ! Nom).comp } ;
|
||||
---- UttNP np = {s = ((np.s ! Nom).comp | [] ) } ; -- AR removed empty string variant
|
||||
UttVP vp = {s = (predVP [] (Ag Masc Sg P3) vp).s ! Main ! TPres ! Simul ! Pos !Con} ;
|
||||
UttAdv adv = adv ;
|
||||
UttCN n = {s = n.s ! Sg ! Nom} ;
|
||||
|
||||
UttCard n = {s = n.s ! Neut ! Nom } ;
|
||||
UttInterj i = i ;
|
||||
UttAP ap = {s = ap.s ! Posit ! Masc ! Sg ! Nom } ;
|
||||
|
||||
|
||||
NoPConj = {s = []} ;
|
||||
PConjConj conj = {s = conj.s2} ;
|
||||
|
||||
NoVoc = {s = []} ;
|
||||
VocNP np = {s = "," ++ (np.s ! Vocative).comp } ;
|
||||
|
||||
}
|
||||
|
||||
150
lib/src/greek/QuestionGre.gf
Normal file
150
lib/src/greek/QuestionGre.gf
Normal file
@@ -0,0 +1,150 @@
|
||||
concrete QuestionGre of Question = CatGre ** open ResGre, Prelude in {
|
||||
|
||||
flags coding= utf8 ;
|
||||
|
||||
lin
|
||||
|
||||
|
||||
QuestCl cl = {
|
||||
s = \\t,a,p =>
|
||||
let cls = cl.s ! Main ! t ! a ! p !Ind ;
|
||||
in table {
|
||||
QDir => cls ;
|
||||
QIndir => "αν" ++ cls
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
QuestVP qp vp = {
|
||||
s = \\t,a,p =>
|
||||
let cl = (predVP (qp.s ! qp.a.g ! Nom) (Ag qp.a.g qp.n P3 ) vp).s ! Main! t ! a! p! Ind
|
||||
in table {
|
||||
QDir => cl ;
|
||||
QIndir => cl
|
||||
}
|
||||
} ;
|
||||
|
||||
QuestIComp icomp np = {
|
||||
s = \\t,a,p =>
|
||||
let
|
||||
vp = predV copula;
|
||||
cl = (predVP (np.s ! Nom).comp np.a vp).s ! Inv ! t ! a ! p! Ind ;
|
||||
why = icomp.s
|
||||
in table {
|
||||
QDir => why ++ cl ;
|
||||
QIndir => why ++ cl
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
|
||||
QuestSlash ip slash = {
|
||||
s = \\t,a,p =>
|
||||
let
|
||||
cls = slash.s ! ip.a ! Inv ! t ! a ! p! Ind;
|
||||
who = ip.s ! Masc ! slash.c2.c ++slash.c2.s
|
||||
in table {
|
||||
QDir => who ++ cls ;
|
||||
QIndir => who ++ cls
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
QuestIAdv iadv cl = {
|
||||
s = \\t,a,p =>
|
||||
let
|
||||
cls = cl.s ! Inv ! t ! a ! p!Ind ;
|
||||
why = iadv.s
|
||||
in table {
|
||||
QDir => why ++ cls ;
|
||||
QIndir => why ++ cls
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
CompIAdv a = a ;
|
||||
|
||||
|
||||
CompIP ip = {s = ip.s !Masc ! Nom} ;
|
||||
|
||||
PrepIP p ip = {
|
||||
s = p.s ++ ip.s! Masc ! p.c
|
||||
} ;
|
||||
|
||||
|
||||
AdvIP ip adv = {
|
||||
s = \\g,c => ip.s ! g! c ++ adv.s ;
|
||||
n = ip.n;
|
||||
a = ip.a
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
AdvIAdv i a = {s = i.s ++ a.s} ;
|
||||
|
||||
|
||||
IdetCN idet cn =
|
||||
let
|
||||
g= cn.g ;
|
||||
n = idet.n;
|
||||
a = aagr g n
|
||||
in {
|
||||
s = \\g,c => idet.s ! cn.g ! c ++ cn.s ! n ! c ;
|
||||
n = n ;
|
||||
a = a
|
||||
} ;
|
||||
|
||||
|
||||
IdetQuant idet num =
|
||||
let
|
||||
n = num.n
|
||||
in {
|
||||
s = \\g,c => idet.s ! n! g ! c ++ num.s !g !c;
|
||||
n = n
|
||||
} ;
|
||||
|
||||
|
||||
IdetIP idet =
|
||||
let
|
||||
g = Neut ;
|
||||
n = idet.n ;
|
||||
a = aagr g n
|
||||
in {
|
||||
s = idet.s ;
|
||||
n = n ;
|
||||
a =a
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
lincat
|
||||
QVP = ResGre.VP ;
|
||||
lin
|
||||
ComplSlashIP vp ip = insertObject vp.c2 {s = \\c => {
|
||||
comp = ip.s ! Masc ! c ;
|
||||
c1 = [] ;
|
||||
c2 = [] ;
|
||||
isClit = False
|
||||
} ;a = Ag Masc ip.n P3;isNeg= False } vp ;
|
||||
|
||||
|
||||
AdvQVP vp adv = insertAdv adv.s vp ;
|
||||
|
||||
AddAdvQVP vp adv = insertAdv adv.s vp ;
|
||||
|
||||
QuestQVP qp vp = {
|
||||
s = \\t,a,p =>
|
||||
let
|
||||
cl = (predVP (qp.s ! qp.a.g ! Nom) (Ag qp.a.g qp.n P3 ) vp).s ! Main! t ! a! p! Ind
|
||||
in table {
|
||||
QDir => cl ;
|
||||
QIndir => cl
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
53
lib/src/greek/RelativeGre.gf
Normal file
53
lib/src/greek/RelativeGre.gf
Normal file
@@ -0,0 +1,53 @@
|
||||
concrete RelativeGre of Relative = CatGre ** open Prelude, ResGre in {
|
||||
|
||||
flags coding= utf8;
|
||||
|
||||
lin
|
||||
|
||||
|
||||
|
||||
RelCl cl = {
|
||||
s = \\ag,t,a,p,_ =>"ώστε" ++ cl.s ! Main ! t ! a ! p ! Ind ;
|
||||
c = Nom
|
||||
} ;
|
||||
|
||||
RelVP rp vp = case rp.hasAgr of {
|
||||
True => {s = \\ag,t,a,p,m =>
|
||||
(predVP
|
||||
(rp.s ! False! complAgr ag ! Nom )
|
||||
(Ag rp.a.g rp.a.n P3)
|
||||
vp).s ! Main !t !a! p! m ; c = Nom } ;
|
||||
False => {s = \\ag,t,a,p,m =>
|
||||
(predVP
|
||||
(rp.s ! True! complAgr ag ! Nom)
|
||||
ag
|
||||
vp).s! Main !t! a! p! m ; c = Nom
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
RelSlash rp slash = {
|
||||
s = \\ag,t,a,p,m =>
|
||||
let aag = complAgr ag
|
||||
in
|
||||
slash.c2.s ++ rp.s ! False ! aag ! slash.c2.c ++
|
||||
slash.s ! aag ! Main ! t ! a ! p ! m ;
|
||||
c = Acc
|
||||
} ;
|
||||
|
||||
|
||||
FunRP p np rp = {
|
||||
s = \\_,a,c => (np.s ! c).comp ++ p.s ++ rp.s ! False ! a ! p.c ;
|
||||
a = complAgr np.a ;
|
||||
hasAgr = True
|
||||
} ;
|
||||
|
||||
|
||||
IdRP = {
|
||||
s = relPron ;
|
||||
a = {g = Masc ; n = Sg} ;
|
||||
hasAgr = False
|
||||
} ;
|
||||
}
|
||||
|
||||
1835
lib/src/greek/ResGre.gf
Normal file
1835
lib/src/greek/ResGre.gf
Normal file
File diff suppressed because it is too large
Load Diff
103
lib/src/greek/SentenceGre.gf
Normal file
103
lib/src/greek/SentenceGre.gf
Normal file
@@ -0,0 +1,103 @@
|
||||
concrete SentenceGre of Sentence = CatGre ** open Prelude, ResGre,ParadigmsGre in {
|
||||
|
||||
flags coding= utf8;
|
||||
|
||||
lin
|
||||
|
||||
PredVP np vp = predVPPol np.isNeg ((np.s ! Nom).comp) np.a vp ;
|
||||
---- PredVP np vp = predVPPol np.isNeg ((np.s ! Nom).comp | [] ) np.a vp ; -- AR removed empty subject variant
|
||||
|
||||
PredSCVP sc vp = predVP sc.s (agrP3 Neut Sg) vp ;
|
||||
|
||||
|
||||
|
||||
SlashVP np v2 = {s = \\agr =>
|
||||
let
|
||||
vp = v2
|
||||
in
|
||||
(predVP (np.s ! Nom).comp np.a vp).s ;n3 = v2.n3 ; c2 = v2.c2 };
|
||||
|
||||
|
||||
AdvSlash slash adv = {
|
||||
s = \\ag,o,m,t,a,p => slash.s !ag ! o ! m ! t! a ! p ++ adv.s ;
|
||||
n3 = slash.n3 ;
|
||||
c2 = slash.c2
|
||||
} ;
|
||||
|
||||
|
||||
SlashPrep cl prep = {
|
||||
s = \\_ => cl.s ;
|
||||
n3 = \\_ => [] ;
|
||||
c2 = {s = prep.s ; c = prep.c ; isDir = False}
|
||||
} ;
|
||||
|
||||
|
||||
SlashVS np vs slash = {
|
||||
s = \\ag =>
|
||||
(predVP
|
||||
(np.s ! Nom).comp np.a
|
||||
(insertComplement (\\b => conjThat ++ slash.s ! ag ! Ind)
|
||||
(predV vs))).s
|
||||
} ** {n3 = slash.n3 ; c2 = slash.c2};
|
||||
|
||||
|
||||
ImpVP vp = {
|
||||
s = \\pol,n,aspect=>
|
||||
let
|
||||
a = Ag Masc Sg P2 ;
|
||||
a2 = Ag Masc Pl P2 ;
|
||||
in
|
||||
case <pol,n,aspect> of {
|
||||
<Pos,Sg,Perf> => vp.v.s ! VImperative Perf Sg Active ++ vp.clit ++ vp.clit2 ++ vp.comp ! a ;
|
||||
<Pos,Pl,Perf> => vp.v.s ! VImperative Perf Pl Active ++ vp.clit ++ vp.clit2 ++vp.comp ! a2 ;
|
||||
<Pos,Sg,Imperf> => vp.v.s ! VImperative Imperf Sg Active ++ vp.clit ++ vp.clit2 ++ vp.comp ! a ;
|
||||
<Pos,Pl,Imperf> => vp.v.s ! VImperative Imperf Pl Active ++ vp.clit ++ vp.clit2 ++vp.comp ! a2 ;
|
||||
<Neg,Sg,Perf> => "μην" ++ vp.clit ++ vp.clit2 ++ vp.v.s ! VPres Con Sg P2 Active Perf++ vp.comp ! a ;
|
||||
<Neg,Pl,Perf> => "μην" ++ vp.clit ++ vp.clit2++ vp.v.s ! VPres Con Pl P2 Active Perf++ vp.comp ! a2;
|
||||
<Neg,Sg,Imperf> => "μην" ++ vp.clit ++ vp.clit2 ++ vp.v.s ! VPres Ind Sg P2 Active Perf++ vp.comp ! a ;
|
||||
<Neg,Pl,Imperf> => "μην" ++ vp.clit ++ vp.clit2++ vp.v.s ! VPres Ind Pl P2 Active Perf++ vp.comp ! a2
|
||||
} ;
|
||||
} ;
|
||||
|
||||
|
||||
EmbedS s = {s = conjThat ++ s.s ! Ind} ;
|
||||
|
||||
EmbedQS qs = {s = qs.s ! QIndir} ;
|
||||
|
||||
EmbedVP vp = {s = (predVP [] (Ag Masc Sg P3) vp).s ! Main ! TPres ! Simul ! Pos !Con};
|
||||
|
||||
|
||||
|
||||
UseCl t p cl = {s = \\o => t.s ++ p.s ++ cl.s !Main ! t.t !t.a! p.p ! t.m } ;
|
||||
|
||||
|
||||
UseQCl t p cl = {
|
||||
s = \\q => t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p ! q
|
||||
} ;
|
||||
|
||||
|
||||
UseRCl t p cl = {
|
||||
s = \\r,ag => t.s ++ p.s ++ cl.s ! ag ! t.t ! t.a ! p.p ! r ;
|
||||
c = cl.c
|
||||
} ;
|
||||
|
||||
UseSlash t p cl = {
|
||||
s = \\ag,m =>
|
||||
t.s ++ p.s ++ cl.s ! ag ! Main ! t.t ! t.a ! p.p ! m ;
|
||||
n3 = cl.n3 ;
|
||||
c2 = cl.c2
|
||||
} ;
|
||||
|
||||
AdvS a s ={s = \\m => a.s ++ s.s ! m} ;
|
||||
|
||||
ExtAdvS a s ={s = \\m => a.s ++ "," ++ s.s ! m} ;
|
||||
|
||||
SSubjS a s b = {
|
||||
s = \\m => a.s !m ++ s.s ++ b.s ! s.m
|
||||
} ;
|
||||
|
||||
RelS s r = {
|
||||
s = \\o => s.s ! o ++ "," ++ r.s ! Ind ! agrP3 Neut Sg
|
||||
} ;
|
||||
|
||||
}
|
||||
39
lib/src/greek/StressGre.gf
Normal file
39
lib/src/greek/StressGre.gf
Normal file
@@ -0,0 +1,39 @@
|
||||
resource StressGre = {
|
||||
|
||||
flags coding=utf8 ;
|
||||
|
||||
|
||||
|
||||
oper
|
||||
|
||||
mkN : Str -> Str * Str = \s -> case s of {
|
||||
c + v@(#stressedVowel) + x@(? + ?) + "α" => <s,c + unstress v + x + "ών"> ;
|
||||
_ => <s,s>
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
|
||||
stressedVowel : pattern Str = #("ά" | "ό" | "ί"| "έ" );
|
||||
|
||||
unstress : Str -> Str = \v -> case v of {
|
||||
"ά" => "α" ;
|
||||
"ό" => "ο" ;
|
||||
"ί" => "ι" ;
|
||||
"έ" => "ε" ;
|
||||
_ => v
|
||||
} ;
|
||||
|
||||
stress : Str -> Str = \v -> case v of {
|
||||
"α" => "ά" ;
|
||||
"ο" => "ό" ;
|
||||
"ι" => "ί" ;
|
||||
"ε" => "έ" ;
|
||||
_ => v
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
264
lib/src/greek/StructuralGre.gf
Normal file
264
lib/src/greek/StructuralGre.gf
Normal file
@@ -0,0 +1,264 @@
|
||||
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_VerbNoPassive1 "ξέρω" "ξέρω" "ήξερα" "ήξερα" " ") ;
|
||||
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="λιγότερο"; 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="πιό"; 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 = table {
|
||||
Sg => table {Masc | Change=> table { Nom => "ποιός";
|
||||
Gen => "ποιού";
|
||||
Acc | CPrep P_se |CPrep PNul => "ποιόν" ;
|
||||
Voc => " "
|
||||
};
|
||||
Fem => table { Nom | Acc | CPrep P_se |CPrep PNul => "ποιά";
|
||||
Gen => "ποιάς";
|
||||
Voc => " "
|
||||
};
|
||||
Neut => table { Nom | Acc | CPrep P_se |CPrep PNul => "ποιό";
|
||||
Gen => "ποιού";
|
||||
Voc => " "
|
||||
} };
|
||||
Pl => table {Masc => table { Nom => "ποιoί";
|
||||
Gen => "ποιών";
|
||||
Acc |CPrep P_se |CPrep PNul => "ποιούς" ;
|
||||
Voc => " "
|
||||
};
|
||||
Fem => table { Nom | Acc | CPrep P_se |CPrep PNul => "ποιές";
|
||||
Gen => "ποιών" ;
|
||||
Voc => " "
|
||||
};
|
||||
Neut | Change => table { Nom | Acc | CPrep P_se |CPrep PNul => "ποιά";
|
||||
Gen => "ποιών";
|
||||
Voc => " "
|
||||
}}}};
|
||||
|
||||
whoSg_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 ,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="τόσο"; p="όσο" ; c= Nom} ;
|
||||
have_V2 = dirV2 (mkAux "έχω" "είχα" "έχε" "έχετε" "έχων" ** {lock_V = <>}) ;
|
||||
lin language_title_Utt = ss "Ελληνικά" ;
|
||||
|
||||
}
|
||||
|
||||
46
lib/src/greek/SymbolGre.gf
Normal file
46
lib/src/greek/SymbolGre.gf
Normal file
@@ -0,0 +1,46 @@
|
||||
concrete SymbolGre of Symbol =
|
||||
CatGre ** open Prelude, CommonGre, ResGre in {
|
||||
|
||||
flags coding= utf8 ;
|
||||
|
||||
|
||||
lin
|
||||
SymbPN i = {s = \\_,_ => i.s ; g = Masc };
|
||||
IntPN i = {s = \\_,_ => i.s ; g = Masc } ;
|
||||
FloatPN i = {s = \\_,_ => i.s ; g = Masc } ;
|
||||
NumPN i = {s = \\_,_ => i.s ! Masc ! Nom ; g = Masc } ;
|
||||
|
||||
|
||||
CNIntNP cn i = heavyNP {
|
||||
s = \\c => prepCase c ++ cn.s ! Sg!c ++ i.s ;
|
||||
a = agrP3 cn.g Sg ;
|
||||
hasClit = False
|
||||
} ;
|
||||
CNSymbNP det cn xs = let g = cn.g in heavyNP {
|
||||
s = \\c => det.s ! g ! c ++ cn.s ! det.n ! c++ xs.s ;
|
||||
a = agrP3 g det.n ;
|
||||
hasClit = False
|
||||
} ;
|
||||
CNNumNP cn i = heavyNP {
|
||||
s = \\c => artDef cn.g Sg c ++ cn.s ! Sg!c ++ i.s ! Masc!c ;
|
||||
a = agrP3 cn.g Sg ;
|
||||
hasClit = False
|
||||
} ;
|
||||
|
||||
SymbS sy = {s = \\_ => sy.s} ;
|
||||
|
||||
SymbNum n = {s = \\_,_ => n.s ; isNum = True ; n = Pl} ;
|
||||
SymbOrd n = {s = \\_,_,_,_ => n.s ++ "." ; adv= table { Posit => " " ; Compar => " " ; Superl => " "}} ;
|
||||
|
||||
lincat
|
||||
|
||||
Symb, [Symb] = SS ;
|
||||
|
||||
lin
|
||||
|
||||
MkSymb s = s ;
|
||||
|
||||
BaseSymb = infixSS "και" ;
|
||||
ConsSymb = infixSS "," ;
|
||||
|
||||
}
|
||||
26
lib/src/greek/TenseGre.gf
Normal file
26
lib/src/greek/TenseGre.gf
Normal file
@@ -0,0 +1,26 @@
|
||||
--concrete TenseEll of Tense =
|
||||
-- CatEll ** open ResEll, CommonEll , Prelude in {
|
||||
|
||||
concrete TenseGre of Tense = ResGre [TTense,Mood,Voice] ,CommonGre ** open (R = ParamX) in {
|
||||
|
||||
|
||||
flags coding = utf8 ;
|
||||
|
||||
lin
|
||||
TTAnt t a = {s = t.s ++ a.s ; t = t.t ; a = a.a ; m = t.m } ;
|
||||
|
||||
|
||||
TPres = {s = [] ; t = ResGre.TPres ; m = Ind} ;
|
||||
TPast = {s = [] ; t = ResGre.TPast; m = Ind} ;
|
||||
TFut = {s = [] ; t = ResGre.TFut; m = Ind} ;
|
||||
TCond = {s = [] ; t = ResGre.TCond; m = Ind} ;
|
||||
|
||||
|
||||
ASimul = {s = []} ** {a = R.Simul} ;
|
||||
AAnter = {s = []} ** {a = R.Anter} ; --# notpresent
|
||||
|
||||
PPos = {s = []} ** {p = R.Pos} ;
|
||||
PNeg = {s = []} ** {p = R.Neg} ;
|
||||
|
||||
}
|
||||
|
||||
11
lib/src/greek/TextGre.gf
Normal file
11
lib/src/greek/TextGre.gf
Normal file
@@ -0,0 +1,11 @@
|
||||
concrete TextGre of Text = CatGre ** {
|
||||
flags coding=utf8 ;
|
||||
|
||||
|
||||
lin
|
||||
TEmpty = {s = []} ;
|
||||
TFullStop x xs = {s = x.s ++ "." ++ xs.s} ;
|
||||
TQuestMark x xs = {s = x.s ++ ";" ++ xs.s} ;
|
||||
TExclMark x xs = {s = x.s ++ "!" ++ xs.s} ;
|
||||
|
||||
}
|
||||
122
lib/src/greek/VerbGre.gf
Normal file
122
lib/src/greek/VerbGre.gf
Normal file
@@ -0,0 +1,122 @@
|
||||
concrete VerbGre of Verb = CatGre ** open ResGre,CommonGre, Prelude in {
|
||||
|
||||
flags coding = utf8;
|
||||
|
||||
lin
|
||||
|
||||
UseV v = predV v ;
|
||||
|
||||
|
||||
ComplVV v vp =
|
||||
insertComplement (\\a => case a of {
|
||||
Ag _ n p => "να" ++ vp.clit ++ vp.clit2 ++ vp.v.s ! VPres Con n p Active Perf ++ vp.comp ! a}) (predV v) ;
|
||||
|
||||
|
||||
ComplVS v s =
|
||||
insertComplement(\\_ => "ότι" ++ s.s ! Ind) (predV v);
|
||||
|
||||
ComplVQ v q =
|
||||
insertComplement (\\_ => q.s ! QIndir) (predV v) ;
|
||||
|
||||
|
||||
ComplVA v ap = insertComplement (\\a => case a of {
|
||||
Ag g n _ => ap.s ! Posit ! g ! n ! Nom } ) (predV v) ;
|
||||
|
||||
SlashV2a v = mkVPSlash v.c2 (predV v)** {n3 = \\_ => [] ;c2 = v.c2 } ;
|
||||
|
||||
Slash2V3 v np = mkVPSlash v.c3 (insertObject v.c2 np (predV v)) ** {n3 = \\_ => [] ;c2 = v.c3 } ;
|
||||
|
||||
Slash3V3 v np = mkVPSlash v.c2 (insertObject v.c3 np (predV v))** {n3 = \\_ => []; c2 = v.c2 } ;
|
||||
|
||||
SlashV2V v vp = mkVPSlash v.c2 ( predV v) ** {
|
||||
n3 = \\a =>
|
||||
let agr = clitAgr a
|
||||
in
|
||||
v.c3.s ++ "να" ++ vp.clit ++ vp.clit2 ++ vp.v.s ! VPres Con agr.n agr.p Active Perf ++ vp.comp! a ;
|
||||
c2 = v.c2
|
||||
} ;
|
||||
|
||||
|
||||
SlashV2S v s = mkVPSlash v.c2 (predV v) ** {
|
||||
n3 = \\_ => "οτι" ++ s.s ! Ind;
|
||||
c2 = v.c2
|
||||
} ;
|
||||
|
||||
|
||||
SlashV2Q v q = mkVPSlash v.c2 (predV v )** {
|
||||
n3 = \\_ => q.s ! QIndir;
|
||||
c2 = v.c2
|
||||
} ;
|
||||
|
||||
|
||||
SlashV2A v ap = mkVPSlash v.c2 (predV v )** {
|
||||
n3 =\\a => let agr = complAgr a in ap.s ! Posit ! agr.g ! agr.n ! Acc ;
|
||||
c2 = v.c2
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
ComplSlash vp np = insertObject vp.c2 np (insertComplement (\\a => vp.c2.s ++ vp.n3 ! np.a ) vp ) ;
|
||||
|
||||
|
||||
SlashVV v vp =
|
||||
insertComplement (\\a => case a of {
|
||||
Ag _ n p => "να" ++ vp.clit ++ vp.clit2 ++ vp.v.s ! VPres Con n p Active Perf++ vp.comp ! a})
|
||||
(predV v) ** {n3 = vp.n3 ; c2 = vp.c2} ;
|
||||
|
||||
|
||||
SlashV2VNP v np vp =
|
||||
mkVPSlash vp.c2( insertObject v.c2 np (predV v)) ** {
|
||||
n3 = \\a =>
|
||||
let agr = clitAgr a
|
||||
in
|
||||
v.c2.s ++ "να" ++ vp.clit ++ vp.clit2 ++ vp.v.s ! VPres Con agr.n agr.p Active Perf ++ vp.comp! a ;
|
||||
c2 = v.c2
|
||||
} ;
|
||||
|
||||
|
||||
ReflVP v = insertComplement (\\a => v.c2.s ++ reflPron ! a ! Acc) v ;
|
||||
|
||||
UseComp comp = insertComplement comp.s (predV copula) ;
|
||||
|
||||
PassV2 v = {
|
||||
v = v ;
|
||||
clit = [] ;
|
||||
clit2 = [] ;
|
||||
comp = \\a => [] ;
|
||||
isNeg = False;
|
||||
voice = Passive ;
|
||||
aspect = Perf ;
|
||||
} ;
|
||||
|
||||
AdvVP vp adv = insertAdv adv.s vp ;
|
||||
|
||||
AdVVP adv vp= insertAdV adv.s vp ;
|
||||
|
||||
AdvVPSlash vp adv = insertAdv adv.s vp ** {n3 = \\_ => [] ;c2 = vp.c2} ;
|
||||
|
||||
AdVVPSlash adv vp = insertAdV adv.s vp ** {n3 = \\_ => [] ;c2 = vp.c2} ;
|
||||
|
||||
VPSlashPrep vp prep = vp ** {n3 = \\_ => [] ;
|
||||
c2 = {s = prep.s ; c = prep.c ; isDir = False}
|
||||
} ;
|
||||
|
||||
|
||||
CompAP ap = {s=\\a => case a of {
|
||||
Ag g n _ => ap.s ! Compar! g ! n ! Nom
|
||||
}
|
||||
} ;
|
||||
|
||||
CompNP np = {s = \\_ => (np.s ! Nom).comp} ;
|
||||
|
||||
CompAdv a = {s = \\_ => a.s} ;
|
||||
|
||||
CompCN cn = {s=\\a => case a of {
|
||||
Ag _ n p => cn.s ! n ! Nom
|
||||
}
|
||||
} ;
|
||||
|
||||
UseCopula = predV copula ;
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user