mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-26 19:28:54 -06:00
Greek by Ioanna Papodopoulou - complete, 27th RGL language
This commit is contained in:
@@ -67,6 +67,8 @@ January 2013
|
|||||||
<div class=news2>
|
<div class=news2>
|
||||||
|
|
||||||
<table class=news>
|
<table class=news>
|
||||||
|
<tr><td>2013-04-25:<td>New resource grammar language: Greek.
|
||||||
|
See <a href="lib/doc/synopsis.html">library synopsis</a>.
|
||||||
<tr><td>2013-01-31:<td><strong>GF 3.4 released!</strong>
|
<tr><td>2013-01-31:<td><strong>GF 3.4 released!</strong>
|
||||||
<a href="download/release-3.4.html">Release notes</a>.
|
<a href="download/release-3.4.html">Release notes</a>.
|
||||||
<tr><td>2012-12-10:<td>
|
<tr><td>2012-12-10:<td>
|
||||||
@@ -75,7 +77,7 @@ January 2013
|
|||||||
<tr><td>2012-11-18:<td>
|
<tr><td>2012-11-18:<td>
|
||||||
<A HREF="http://school.grammaticalframework.org/2013">GF Summer School</A>
|
<A HREF="http://school.grammaticalframework.org/2013">GF Summer School</A>
|
||||||
in Frauenchiemsee, 18-30 August 2013.
|
in Frauenchiemsee, 18-30 August 2013.
|
||||||
<tr><td>2012-11-18:<td>New resource grammar language: Chinese
|
<tr><td>2012-11-18:<td>New resource grammar language: Chinese.
|
||||||
See <a href="lib/doc/synopsis.html">library synopsis</a>.
|
See <a href="lib/doc/synopsis.html">library synopsis</a>.
|
||||||
Complete but not yet perfect.
|
Complete but not yet perfect.
|
||||||
<tr><td>2012-06-29:<td>GF sources now mirrored in GitHub, with change
|
<tr><td>2012-06-29:<td>GF sources now mirrored in GitHub, with change
|
||||||
@@ -246,6 +248,7 @@ support for an increasing number of languages, currently including
|
|||||||
<LI>Finnish
|
<LI>Finnish
|
||||||
<LI>French
|
<LI>French
|
||||||
<LI>German
|
<LI>German
|
||||||
|
<li>Greek
|
||||||
<li>Hebrew (fragments)
|
<li>Hebrew (fragments)
|
||||||
<LI>Hindi
|
<LI>Hindi
|
||||||
<LI><A HREF="http://www.interlingua.com/">Interlingua</A>
|
<LI><A HREF="http://www.interlingua.com/">Interlingua</A>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
lang1 = "Eng"
|
lang1 = "Eng"
|
||||||
lang2 = "Chi"
|
lang2 = "Gre"
|
||||||
|
|
||||||
-- to write a comparison for two languages
|
-- to write a comparison for two languages
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ mkExx sss = case sss of
|
|||||||
(s1:ss1,s2:ss2) | isMsg s1 -> mkExx (ss1,s2:ss2)
|
(s1:ss1,s2:ss2) | isMsg s1 -> mkExx (ss1,s2:ss2)
|
||||||
(s1:ss1,s2:ss2) | isMsg s2 -> mkExx (s1:ss1,ss2)
|
(s1:ss1,s2:ss2) | isMsg s2 -> mkExx (s1:ss1,ss2)
|
||||||
(s1:ss1,s2:ss2) | s1 /= s2 ->
|
(s1:ss1,s2:ss2) | s1 /= s2 ->
|
||||||
putStrLn (drops s1) >> putStrLn (filter (not . (==' ')) (drops s2)) >> putStrLn [] >> mkExx (ss1,ss2) -- show strings
|
putStrLn (drops s1) >> putStrLn (drops s2) >> putStrLn [] >> mkExx (ss1,ss2) -- show strings
|
||||||
(s1:ss1,s2:ss2) | s1 == s2 && not (isJunk s1) ->
|
(s1:ss1,s2:ss2) | s1 == s2 && not (isJunk s1) ->
|
||||||
putStrLn (drops s1) >> mkExx (ss1,ss2) -- show the term
|
putStrLn (drops s1) >> mkExx (ss1,ss2) -- show the term
|
||||||
(s1:ss1,s2:ss2) | s1 == s2 -> mkExx (ss1,ss2)
|
(s1:ss1,s2:ss2) | s1 == s2 -> mkExx (ss1,ss2)
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ all: exx synopsis
|
|||||||
|
|
||||||
index:
|
index:
|
||||||
txt2tags -thtml index.txt
|
txt2tags -thtml index.txt
|
||||||
|
status:
|
||||||
|
txt2tags -thtml status.txt
|
||||||
synopsis:
|
synopsis:
|
||||||
runghc MkSynopsis.hs
|
runghc MkSynopsis.hs
|
||||||
|
|
||||||
@@ -27,6 +29,7 @@ exx: exx-script
|
|||||||
gf -retain -s ../alltenses/TryFin.gfo <api-examples.gfs >api-examples-Fin.txt
|
gf -retain -s ../alltenses/TryFin.gfo <api-examples.gfs >api-examples-Fin.txt
|
||||||
gf -retain -s ../alltenses/TryFre.gfo <api-examples.gfs >api-examples-Fre.txt
|
gf -retain -s ../alltenses/TryFre.gfo <api-examples.gfs >api-examples-Fre.txt
|
||||||
gf -retain -s ../alltenses/TryGer.gfo <api-examples.gfs >api-examples-Ger.txt
|
gf -retain -s ../alltenses/TryGer.gfo <api-examples.gfs >api-examples-Ger.txt
|
||||||
|
gf -retain -s ../alltenses/TryGre.gfo <api-examples.gfs >api-examples-Gre.txt
|
||||||
gf -retain -s ../alltenses/TryHin.gfo <api-examples.gfs >api-examples-Hin.txt
|
gf -retain -s ../alltenses/TryHin.gfo <api-examples.gfs >api-examples-Hin.txt
|
||||||
gf -retain -s ../alltenses/TryIta.gfo <api-examples.gfs >api-examples-Ita.txt
|
gf -retain -s ../alltenses/TryIta.gfo <api-examples.gfs >api-examples-Ita.txt
|
||||||
gf -retain -s ../alltenses/TryJpn.gfo <api-examples.gfs >api-examples-Jpn.txt
|
gf -retain -s ../alltenses/TryJpn.gfo <api-examples.gfs >api-examples-Jpn.txt
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ revealedLang = "Eng"
|
|||||||
-- all languages shown
|
-- all languages shown
|
||||||
apiExxFiles = ["api-examples-" ++ lang ++ ".txt" | lang <- words
|
apiExxFiles = ["api-examples-" ++ lang ++ ".txt" | lang <- words
|
||||||
-- "Eng Chi"
|
-- "Eng Chi"
|
||||||
"Afr Bul Cat Chi Dan Dut Eng Fin Fre Ger Hin Ita Jpn Lav Nep Nor Pes Pnb Pol Ron Rus Snd Spa Swe Tha Urd"
|
"Afr Bul Cat Chi Dan Dut Eng Fin Fre Ger Gre Hin Ita Jpn Lav Nep Nor Pes Pnb Pol Ron Rus Snd Spa Swe Tha Urd"
|
||||||
]
|
]
|
||||||
|
|
||||||
main = do
|
main = do
|
||||||
@@ -249,6 +249,7 @@ paradigmFiles = [
|
|||||||
("Finnish", srcPath "/finnish/ParadigmsFin.gf"),
|
("Finnish", srcPath "/finnish/ParadigmsFin.gf"),
|
||||||
("French", srcPath "/french/ParadigmsFre.gf"),
|
("French", srcPath "/french/ParadigmsFre.gf"),
|
||||||
("German", srcPath "/german/ParadigmsGer.gf"),
|
("German", srcPath "/german/ParadigmsGer.gf"),
|
||||||
|
("Greek", srcPath "/greek/ParadigmsGre.gf"),
|
||||||
("Hindi", srcPath "/hindi/ParadigmsHin.gf"),
|
("Hindi", srcPath "/hindi/ParadigmsHin.gf"),
|
||||||
-- ("Interlingua", srcPath "/interlingua/ParadigmsIna.gf"),
|
-- ("Interlingua", srcPath "/interlingua/ParadigmsIna.gf"),
|
||||||
("Italian", srcPath "/italian/ParadigmsIta.gf"),
|
("Italian", srcPath "/italian/ParadigmsIta.gf"),
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<CENTER>
|
<CENTER>
|
||||||
<H1>The Status of the GF Resource Grammar Library</H1>
|
<H1>The Status of the GF Resource Grammar Library</H1>
|
||||||
<FONT SIZE="4"><I>Aarne Ranta</I></FONT><BR>
|
<FONT SIZE="4"><I>Aarne Ranta</I></FONT><BR>
|
||||||
<FONT SIZE="4">20130130</FONT>
|
<FONT SIZE="4">20130425</FONT>
|
||||||
</CENTER>
|
</CENTER>
|
||||||
|
|
||||||
<P>
|
<P>
|
||||||
@@ -222,6 +222,20 @@ are marked in the table
|
|||||||
<TD>*AR,HH,EG</TD>
|
<TD>*AR,HH,EG</TD>
|
||||||
</TR>
|
</TR>
|
||||||
<TR>
|
<TR>
|
||||||
|
<TD>Gre</TD>
|
||||||
|
<TD>Greek</TD>
|
||||||
|
<TD>+</TD>
|
||||||
|
<TD>-</TD>
|
||||||
|
<TD>++</TD>
|
||||||
|
<TD>+</TD>
|
||||||
|
<TD>+</TD>
|
||||||
|
<TD>+</TD>
|
||||||
|
<TD>-</TD>
|
||||||
|
<TD>-</TD>
|
||||||
|
<TD>-</TD>
|
||||||
|
<TD>*IP</TD>
|
||||||
|
</TR>
|
||||||
|
<TR>
|
||||||
<TD>Heb</TD>
|
<TD>Heb</TD>
|
||||||
<TD>Hebrew</TD>
|
<TD>Hebrew</TD>
|
||||||
<TD>+</TD>
|
<TD>+</TD>
|
||||||
@@ -615,6 +629,7 @@ GP Gabriele Paganelli,
|
|||||||
IA Ingrid Andersson,
|
IA Ingrid Andersson,
|
||||||
IL Inari Listenmaa,
|
IL Inari Listenmaa,
|
||||||
IN Ilona Novak,
|
IN Ilona Novak,
|
||||||
|
IP Ioanna Papadopoulou,
|
||||||
JB Jean-Philippe Bernardy,
|
JB Jean-Philippe Bernardy,
|
||||||
JC John J. Camilleri,
|
JC John J. Camilleri,
|
||||||
JD Jherna Devi,
|
JD Jherna Devi,
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ are marked in the table
|
|||||||
| Fin | Finnish | + | + | ++ | + | + | + | + | - | + | *AR
|
| Fin | Finnish | + | + | ++ | + | + | + | + | - | + | *AR
|
||||||
| Fre | French | + | + | ++ | + | + | + | + | + | + | *AR,RE
|
| Fre | French | + | + | ++ | + | + | + | + | + | + | *AR,RE
|
||||||
| Ger | German | + | + | ++ | + | + | + | + | + | + | *AR,HH,EG
|
| Ger | German | + | + | ++ | + | + | + | + | + | + | *AR,HH,EG
|
||||||
|
| Gre | Greek | + | - | ++ | + | + | + | - | - | - | *IP
|
||||||
| Heb | Hebrew | + | - | - | - | - | - | - | - | - | *DD
|
| Heb | Hebrew | + | - | - | - | - | - | - | - | - | *DD
|
||||||
| Hin | Hindi | + | + | ++ | + | + | + | + | - | - | *SV,*KP,MH,AR
|
| Hin | Hindi | + | + | ++ | + | + | + | + | - | - | *SV,*KP,MH,AR
|
||||||
| Ina | Interlingua | + | + | ++ | + | + | - | - | - | - | JB
|
| Ina | Interlingua | + | + | ++ | + | + | - | - | - | - | JB
|
||||||
@@ -98,6 +99,7 @@ GP Gabriele Paganelli,
|
|||||||
IA Ingrid Andersson,
|
IA Ingrid Andersson,
|
||||||
IL Inari Listenmaa,
|
IL Inari Listenmaa,
|
||||||
IN Ilona Novak,
|
IN Ilona Novak,
|
||||||
|
IP Ioanna Papadopoulou,
|
||||||
JB Jean-Philippe Bernardy,
|
JB Jean-Philippe Bernardy,
|
||||||
JC John J. Camilleri,
|
JC John J. Camilleri,
|
||||||
JD Jherna Devi,
|
JD Jherna Devi,
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
=Introduction=
|
=Introduction=
|
||||||
|
|
||||||
The GF Resource Grammar Library is the standard library for Grammatical Framework.
|
The GF Resource Grammar Library is the standard library for Grammatical Framework.
|
||||||
It covers the morphology and basic syntax of currently 26 languages.
|
It covers the morphology and basic syntax of currently 27 languages.
|
||||||
|
|
||||||
This document contains the most important parts of the GF Resource Grammar API,
|
This document contains the most important parts of the GF Resource Grammar API,
|
||||||
as needed by a GF application programmer.
|
as needed by a GF application programmer.
|
||||||
@@ -23,12 +23,12 @@ constructing trees in them.
|
|||||||
- [Chapter 2 #toc5]: syntactic construction functions, with cross-links and
|
- [Chapter 2 #toc5]: syntactic construction functions, with cross-links and
|
||||||
examples.
|
examples.
|
||||||
- [Chapter 3 #toc83]: morphological paradigms.
|
- [Chapter 3 #toc83]: morphological paradigms.
|
||||||
- [Chapter 4 #toc108]: additional libraries.
|
- [Chapter 4 #toc110]: additional libraries.
|
||||||
- [Chapter 5 #toc115]: how to "browse" the library by
|
- [Chapter 5 #toc116]: how to "browse" the library by
|
||||||
loading the grammars into the ``gf`` command editor.
|
loading the grammars into the ``gf`` command editor.
|
||||||
- [Chapter 6 #toc116]: a brief example of how application grammars can
|
- [Chapter 6 #toc117]: a brief example of how application grammars can
|
||||||
use the resource modules.
|
use the resource modules.
|
||||||
- [Detailed table of contents #toc117].
|
- [Detailed table of contents #toc118].
|
||||||
|
|
||||||
|
|
||||||
Other relevant documents:
|
Other relevant documents:
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
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