diff --git a/index.html b/index.html
index ca655201d..1f94b071c 100644
--- a/index.html
+++ b/index.html
@@ -67,6 +67,8 @@ January 2013
+| 2013-04-25: | New resource grammar language: Greek.
+ See library synopsis.
|
| 2013-01-31: | GF 3.4 released!
Release notes.
|
| 2012-12-10: |
@@ -75,7 +77,7 @@ January 2013
|
| 2012-11-18: |
GF Summer School
in Frauenchiemsee, 18-30 August 2013.
- |
| 2012-11-18: | New resource grammar language: Chinese
+ |
| 2012-11-18: | New resource grammar language: Chinese.
See library synopsis.
Complete but not yet perfect.
|
| 2012-06-29: | GF sources now mirrored in GitHub, with change
@@ -246,6 +248,7 @@ support for an increasing number of languages, currently including
Finnish
French
German
+Greek
Hebrew (fragments)
Hindi
Interlingua
diff --git a/lib/doc/Compare.hs b/lib/doc/Compare.hs
index 3f4f13777..719bbc273 100644
--- a/lib/doc/Compare.hs
+++ b/lib/doc/Compare.hs
@@ -1,5 +1,5 @@
lang1 = "Eng"
-lang2 = "Chi"
+lang2 = "Gre"
-- 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 s2 -> mkExx (s1:ss1,ss2)
(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) ->
putStrLn (drops s1) >> mkExx (ss1,ss2) -- show the term
(s1:ss1,s2:ss2) | s1 == s2 -> mkExx (ss1,ss2)
diff --git a/lib/doc/Makefile b/lib/doc/Makefile
index 4d2807eac..5567d9e8f 100644
--- a/lib/doc/Makefile
+++ b/lib/doc/Makefile
@@ -4,6 +4,8 @@ all: exx synopsis
index:
txt2tags -thtml index.txt
+status:
+ txt2tags -thtml status.txt
synopsis:
runghc MkSynopsis.hs
@@ -27,6 +29,7 @@ exx: exx-script
gf -retain -s ../alltenses/TryFin.gfo api-examples-Fin.txt
gf -retain -s ../alltenses/TryFre.gfo api-examples-Fre.txt
gf -retain -s ../alltenses/TryGer.gfo api-examples-Ger.txt
+ gf -retain -s ../alltenses/TryGre.gfo api-examples-Gre.txt
gf -retain -s ../alltenses/TryHin.gfo api-examples-Hin.txt
gf -retain -s ../alltenses/TryIta.gfo api-examples-Ita.txt
gf -retain -s ../alltenses/TryJpn.gfo api-examples-Jpn.txt
diff --git a/lib/doc/MkSynopsis.hs b/lib/doc/MkSynopsis.hs
index a3b2d6745..68be79a16 100644
--- a/lib/doc/MkSynopsis.hs
+++ b/lib/doc/MkSynopsis.hs
@@ -19,7 +19,7 @@ revealedLang = "Eng"
-- all languages shown
apiExxFiles = ["api-examples-" ++ lang ++ ".txt" | lang <- words
-- "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
@@ -249,6 +249,7 @@ paradigmFiles = [
("Finnish", srcPath "/finnish/ParadigmsFin.gf"),
("French", srcPath "/french/ParadigmsFre.gf"),
("German", srcPath "/german/ParadigmsGer.gf"),
+ ("Greek", srcPath "/greek/ParadigmsGre.gf"),
("Hindi", srcPath "/hindi/ParadigmsHin.gf"),
-- ("Interlingua", srcPath "/interlingua/ParadigmsIna.gf"),
("Italian", srcPath "/italian/ParadigmsIta.gf"),
diff --git a/lib/doc/status.html b/lib/doc/status.html
index 5633bb732..273a5620e 100644
--- a/lib/doc/status.html
+++ b/lib/doc/status.html
@@ -7,7 +7,7 @@
The Status of the GF Resource Grammar Library
Aarne Ranta
-20130130
+20130425
@@ -222,6 +222,20 @@ are marked in the table
*AR,HH,EG |
|
+| Gre |
+Greek |
++ |
+- |
+++ |
++ |
++ |
++ |
+- |
+- |
+- |
+*IP |
+
+
| Heb |
Hebrew |
+ |
@@ -615,6 +629,7 @@ GP Gabriele Paganelli,
IA Ingrid Andersson,
IL Inari Listenmaa,
IN Ilona Novak,
+IP Ioanna Papadopoulou,
JB Jean-Philippe Bernardy,
JC John J. Camilleri,
JD Jherna Devi,
diff --git a/lib/doc/status.txt b/lib/doc/status.txt
index 66fe82bc1..fca274693 100644
--- a/lib/doc/status.txt
+++ b/lib/doc/status.txt
@@ -29,6 +29,7 @@ are marked in the table
| Fin | Finnish | + | + | ++ | + | + | + | + | - | + | *AR
| Fre | French | + | + | ++ | + | + | + | + | + | + | *AR,RE
| Ger | German | + | + | ++ | + | + | + | + | + | + | *AR,HH,EG
+| Gre | Greek | + | - | ++ | + | + | + | - | - | - | *IP
| Heb | Hebrew | + | - | - | - | - | - | - | - | - | *DD
| Hin | Hindi | + | + | ++ | + | + | + | + | - | - | *SV,*KP,MH,AR
| Ina | Interlingua | + | + | ++ | + | + | - | - | - | - | JB
@@ -98,6 +99,7 @@ GP Gabriele Paganelli,
IA Ingrid Andersson,
IL Inari Listenmaa,
IN Ilona Novak,
+IP Ioanna Papadopoulou,
JB Jean-Philippe Bernardy,
JC John J. Camilleri,
JD Jherna Devi,
diff --git a/lib/doc/synopsis-intro.txt b/lib/doc/synopsis-intro.txt
index 37abcf77e..388238b9f 100644
--- a/lib/doc/synopsis-intro.txt
+++ b/lib/doc/synopsis-intro.txt
@@ -8,7 +8,7 @@
=Introduction=
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,
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
examples.
- [Chapter 3 #toc83]: morphological paradigms.
-- [Chapter 4 #toc108]: additional libraries.
-- [Chapter 5 #toc115]: how to "browse" the library by
+- [Chapter 4 #toc110]: additional libraries.
+- [Chapter 5 #toc116]: how to "browse" the library by
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.
-- [Detailed table of contents #toc117].
+- [Detailed table of contents #toc118].
Other relevant documents:
diff --git a/lib/doc/synopsis.html b/lib/doc/synopsis.html
index 8e42ed21f..07e13fac3 100644
--- a/lib/doc/synopsis.html
+++ b/lib/doc/synopsis.html
@@ -17,7 +17,7 @@
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,
@@ -37,12 +37,12 @@ constructing trees in them.
Chapter 2: syntactic construction functions, with cross-links and
examples.
Chapter 3: morphological paradigms.
-Chapter 4: additional libraries.
-Chapter 5: how to "browse" the library by
+Chapter 4: additional libraries.
+Chapter 5: how to "browse" the library by
loading the grammars into the gf command editor.
-Chapter 6: a brief example of how application grammars can
+Chapter 6: a brief example of how application grammars can
use the resource modules.
-Detailed table of contents.
+Detailed table of contents.
@@ -532,82 +532,82 @@ Lexical category, constructors given in
comparAP |
A -> AP |
- warmer |
+ warmer |
mkAP |
A -> AP |
- warm |
+ warm |
mkAP |
A -> NP -> AP |
- warmer than Paris |
+ warmer than Paris |
mkAP |
A2 -> NP -> AP |
- married to her |
+ married to her |
mkAP |
A2 -> AP |
- married |
+ married |
mkAP |
AP -> S -> AP |
- it is good that she sleeps |
+ it is good that she sleeps |
mkAP |
AP -> QS -> AP |
- it is uncertain who sleeps |
+ it is uncertain who sleeps |
mkAP |
AP -> VP -> AP |
- she is ready to sleep |
+ she is ready to sleep |
mkAP |
AP -> SC -> AP |
- she is ready to sleep |
+ she is ready to sleep |
mkAP |
AdA -> A -> AP |
- very old |
+ very old |
mkAP |
AdA -> AP -> AP |
- very very old |
+ very very old |
mkAP |
Conj -> AP -> AP -> AP |
- old or young |
+ old or young |
mkAP |
Conj -> ListAP -> AP |
- old , big and warm |
+ old , big and warm |
mkAP |
Ord -> AP |
- oldest |
+ oldest |
mkAP |
CAdv -> AP -> NP -> AP |
- as old as she |
+ as old as she |
reflAP |
A2 -> AP |
- married to itself |
+ married to itself |
@@ -623,27 +623,27 @@ Lexical category, constructors given in
almost_AdA |
AdA |
- almost red |
+ almost red |
quite_Adv |
AdA |
- quite |
+ quite |
so_AdA |
AdA |
- so warm |
+ so warm |
too_AdA |
AdA |
- too warm |
+ too warm |
very_AdA |
AdA |
- very warm |
+ very warm |
@@ -659,22 +659,22 @@ Lexical category, constructors given in
almost_AdN |
AdN |
- almost eight |
+ almost eight |
at_least_AdN |
AdN |
- at least eight |
+ at least eight |
at_most_AdN |
AdN |
- at most eight |
+ at most eight |
mkAdN |
CAdv -> AdN |
- more than eight |
+ more than eight |
@@ -690,7 +690,7 @@ Lexical category, constructors given in
always_AdV |
AdV |
- always |
+ always |
@@ -706,82 +706,82 @@ Lexical category, constructors given in
everywhere_Adv |
Adv |
- everywhere |
+ everywhere |
here7from_Adv |
Adv |
- from here |
+ from here |
here7to_Adv |
Adv |
- to here |
+ to here |
here_Adv |
Adv |
- here |
+ here |
mkAdv |
A -> Adv |
- warmly |
+ warmly |
mkAdv |
Prep -> NP -> Adv |
- in the house |
+ in the house |
mkAdv |
Subj -> S -> Adv |
- when she sleeps |
+ when she sleeps |
mkAdv |
CAdv -> A -> NP -> Adv |
- more warmly than he |
+ more warmly than he |
mkAdv |
CAdv -> A -> S -> Adv |
- more warmly than he runs |
+ more warmly than he runs |
mkAdv |
AdA -> Adv -> Adv |
- very warmly |
+ very warmly |
mkAdv |
Conj -> Adv -> Adv -> Adv |
- here and now |
+ here and now |
mkAdv |
Conj -> ListAdv -> Adv |
- with her , here and now |
+ with her , here and now |
somewhere_Adv |
Adv |
- somewhere |
+ somewhere |
there7from_Adv |
Adv |
- from there |
+ from there |
there7to_Adv |
Adv |
- there |
+ there |
there_Adv |
Adv |
- there |
+ there |
@@ -797,12 +797,12 @@ Lexical category, constructors given in
anteriorAnt |
Ant |
- she has slept |
+ she has slept |
simultaneousAnt |
Ant |
- she sleeps |
+ she sleeps |
@@ -818,17 +818,17 @@ Lexical category, constructors given in
as_CAdv |
CAdv |
- as |
+ as |
less_CAdv |
CAdv |
- less |
+ less |
more_CAdv |
CAdv |
- more |
+ more |
@@ -844,97 +844,97 @@ Lexical category, constructors given in
mkCN |
N -> CN |
- house |
+ house |
mkCN |
N2 -> NP -> CN |
- mother of the king |
+ mother of the king |
mkCN |
N3 -> NP -> NP -> CN |
- distance from this city to Paris |
+ distance from this city to Paris |
mkCN |
N2 -> CN |
- mother |
+ mother |
mkCN |
N3 -> CN |
- distance |
+ distance |
mkCN |
A -> N -> CN |
- big house |
+ big house |
mkCN |
A -> CN -> CN |
- big blue house |
+ big blue house |
mkCN |
AP -> N -> CN |
- very big house |
+ very big house |
mkCN |
AP -> CN -> CN |
- very big blue house |
+ very big blue house |
mkCN |
N -> RS -> CN |
- man whom she loves |
+ man whom she loves |
mkCN |
CN -> RS -> CN |
- old man whom she loves |
+ old man whom she loves |
mkCN |
N -> Adv -> CN |
- house on the hill |
+ house on the hill |
mkCN |
CN -> Adv -> CN |
- big house on the hill |
+ big house on the hill |
mkCN |
CN -> S -> CN |
- rule that she sleeps |
+ rule that she sleeps |
mkCN |
CN -> QS -> CN |
- question if she sleeps |
+ question if she sleeps |
mkCN |
CN -> VP -> CN |
- reason to sleep |
+ reason to sleep |
mkCN |
CN -> SC -> CN |
- reason to sleep |
+ reason to sleep |
mkCN |
N -> NP -> CN |
- king John |
+ king John |
mkCN |
CN -> NP -> CN |
- old king John |
+ old king John |
@@ -955,7 +955,7 @@ Lexical category, constructors given in
mkCard |
Numeral -> Card |
- seven |
+ seven |
mkCard |
@@ -981,72 +981,72 @@ Lexical category, constructors given in
genericCl |
VP -> Cl |
- one sleeps |
+ one sleeps |
mkCl |
NP -> V -> Cl |
- she sleeps |
+ she sleeps |
mkCl |
NP -> V2 -> NP -> Cl |
- she loves him |
+ she loves him |
mkCl |
NP -> V3 -> NP -> NP -> Cl |
- she sends it to him |
+ she sends it to him |
mkCl |
NP -> VV -> VP -> Cl |
- she wants to sleep |
+ she wants to sleep |
mkCl |
NP -> VS -> S -> Cl |
- she says that I sleep |
+ she says that I sleep |
mkCl |
NP -> VQ -> QS -> Cl |
- she wonders who sleeps |
+ she wonders who sleeps |
mkCl |
NP -> VA -> A -> Cl |
- she becomes old |
+ she becomes old |
mkCl |
NP -> VA -> AP -> Cl |
- she becomes very old |
+ she becomes very old |
mkCl |
NP -> V2A -> NP -> A -> Cl |
- she paints it red |
+ she paints it red |
mkCl |
NP -> V2A -> NP -> AP -> Cl |
- she paints it red |
+ she paints it red |
mkCl |
NP -> V2S -> NP -> S -> Cl |
- she answers to him that we sleep |
+ she answers to him that we sleep |
mkCl |
NP -> V2Q -> NP -> QS -> Cl |
- she asks him who sleeps |
+ she asks him who sleeps |
mkCl |
NP -> V2V -> NP -> VP -> Cl |
- she begs him to sleep |
+ she begs him to sleep |
mkCl |
@@ -1056,87 +1056,87 @@ Lexical category, constructors given in
mkCl |
NP -> A -> Cl |
- she is old |
+ she is old |
mkCl |
NP -> A -> NP -> Cl |
- she is older than he |
+ she is older than he |
mkCl |
NP -> A2 -> NP -> Cl |
- she is married to him |
+ she is married to him |
mkCl |
NP -> AP -> Cl |
- she is very old |
+ she is very old |
mkCl |
NP -> NP -> Cl |
- she is the woman |
+ she is the woman |
mkCl |
NP -> N -> Cl |
- she is pre {"a"; "a" / strs {"eu"; "Eu"; "uni"; "up"}; |
+ she is pre {"a"; "a" / strs {"eu"; "Eu"; "uni"; "up"}; |
mkCl |
NP -> CN -> Cl |
- she is pre {"a"; "a" / strs {"eu"; "Eu"; "uni"; "up"}; |
+ she is pre {"a"; "a" / strs {"eu"; "Eu"; "uni"; "up"}; |
mkCl |
NP -> Adv -> Cl |
- she is here |
+ she is here |
mkCl |
NP -> VP -> Cl |
- she always sleeps |
+ she always sleeps |
mkCl |
N -> Cl |
- there is pre {"a"; "a" / strs {"eu"; "Eu"; "uni"; "up"}; |
+ there is pre {"a"; "a" / strs {"eu"; "Eu"; "uni"; "up"}; |
mkCl |
CN -> Cl |
- there is pre {"a"; "a" / strs {"eu"; "Eu"; "uni"; "up"}; |
+ there is pre {"a"; "a" / strs {"eu"; "Eu"; "uni"; "up"}; |
mkCl |
NP -> Cl |
- there are many houses |
+ there are many houses |
mkCl |
NP -> RS -> Cl |
- it is she who sleeps |
+ it is she who sleeps |
mkCl |
Adv -> S -> Cl |
- it is here that she sleeps |
+ it is here that she sleeps |
mkCl |
V -> Cl |
- it rains |
+ it rains |
mkCl |
VP -> Cl |
- it is raining |
+ it is raining |
mkCl |
SC -> VP -> Cl |
- that she sleeps is good |
+ that she sleeps is good |
@@ -1152,32 +1152,32 @@ Lexical category, constructors given in
mkClSlash |
NP -> VPSlash -> ClSlash |
- whom does she see |
+ whom does she see |
mkClSlash |
NP -> V2 -> ClSlash |
- whom does she see |
+ whom does she see |
mkClSlash |
NP -> VV -> V2 -> ClSlash |
- whom does she want to see |
+ whom does she want to see |
mkClSlash |
Cl -> Prep -> ClSlash |
- with whom does she sleep |
+ with whom does she sleep |
mkClSlash |
ClSlash -> Adv -> ClSlash |
- whom does she see today |
+ whom does she see today |
mkClSlash |
NP -> VS -> SSlash -> ClSlash |
- whom does she know that we hadn't seen |
+ whom does she know that we hadn't seen |
@@ -1193,17 +1193,17 @@ Lexical category, constructors given in
mkComp |
AP -> Comp |
- to be old |
+ to be old |
mkComp |
NP -> Comp |
- to be this man |
+ to be this man |
mkComp |
Adv -> Comp |
- to be here |
+ to be here |
@@ -1219,27 +1219,27 @@ Lexical category, constructors given in
and_Conj |
Conj |
- here and now |
+ here and now |
both7and_DConj |
Conj |
- both here and there |
+ both here and there |
either7or_DConj |
Conj |
- either here or there |
+ either here or there |
if_then_Conj |
Conj |
- if here then there |
+ if here then there |
or_Conj |
Conj |
- here or there |
+ here or there |
@@ -1255,62 +1255,62 @@ Lexical category, constructors given in
aPl_Det |
Det |
- women |
+ women |
aSg_Det |
Det |
- pre {"a"; "a" / strs {"eu"; "Eu"; "uni"; "up"}; "an" / strs {"un"}; |
+ pre {"a"; "a" / strs {"eu"; "Eu"; "uni"; "up"}; "an" / strs {"un"}; |
a_Det |
Det |
- pre {"a"; "a" / strs {"eu"; "Eu"; "uni"; "up"}; "an" / strs {"un"}; |
+ pre {"a"; "a" / strs {"eu"; "Eu"; "uni"; "up"}; "an" / strs {"un"}; |
every_Det |
Det |
- every woman |
+ every woman |
few_Det |
Det |
- few women |
+ few women |
many_Det |
Det |
- many houses |
+ many houses |
mkDet |
Quant -> Det |
- this |
+ this |
mkDet |
Quant -> Card -> Det |
- these five |
+ these five |
mkDet |
Quant -> Ord -> Det |
- the fifth |
+ the fifth |
mkDet |
Quant -> Num -> Ord -> Det |
- the five best |
+ the five best |
mkDet |
Quant -> Num -> Det |
- these |
+ these |
mkDet |
Card -> Det |
- five |
+ five |
mkDet |
@@ -1330,57 +1330,57 @@ Lexical category, constructors given in
mkDet |
Pron -> Num -> Det |
- my five |
+ my five |
much_Det |
Det |
- much wine |
+ much wine |
somePl_Det |
Det |
- some women |
+ some women |
someSg_Det |
Det |
- some wine |
+ some wine |
that_Det |
Det |
- that woman |
+ that woman |
thePl_Det |
Det |
- the houses |
+ the houses |
theSg_Det |
Det |
- the house |
+ the house |
the_Det |
Det |
- the house |
+ the house |
these_Det |
Det |
- these women |
+ these women |
this_Det |
Det |
- this woman |
+ this woman |
those_Det |
Det |
- those women |
+ those women |
@@ -1462,12 +1462,12 @@ Lexical category, constructors given in
mkDigits |
Dig -> Digits |
- 4 |
+ 4 |
mkDigits |
Dig -> Digits -> Digits |
- 1 , 2 3 3 , 4 8 6 |
+ 1 , 2 3 3 , 4 8 6 |
@@ -1483,37 +1483,37 @@ Lexical category, constructors given in
how8much_IAdv |
IAdv |
- how much |
+ how much |
how_IAdv |
IAdv |
- how |
+ how |
mkIAdv |
Prep -> IP -> IAdv |
- in which city |
+ in which city |
mkIAdv |
IAdv -> Adv -> IAdv |
- where in Paris |
+ where in Paris |
when_IAdv |
IAdv |
- when |
+ when |
where_IAdv |
IAdv |
- where |
+ where |
why_IAdv |
IAdv |
- why |
+ why |
@@ -1550,27 +1550,27 @@ Lexical category, constructors given in
how8many_IDet |
IDet |
- how many houses |
+ how many houses |
mkIDet |
IQuant -> Num -> IDet |
- which houses |
+ which houses |
mkIDet |
IQuant -> IDet |
- which house |
+ which house |
whichPl_IDet |
IDet |
- which houses |
+ which houses |
which_IDet |
IDet |
- which house |
+ which house |
@@ -1586,67 +1586,67 @@ Lexical category, constructors given in
mkIP |
IDet -> CN -> IP |
- which five big cities |
+ which five big cities |
mkIP |
IDet -> N -> IP |
- which five cities |
+ which five cities |
mkIP |
IDet -> IP |
- which five |
+ which five |
mkIP |
IQuant -> CN -> IP |
- which big city |
+ which big city |
mkIP |
IQuant -> Num -> CN -> IP |
- which five big cities |
+ which five big cities |
mkIP |
IQuant -> N -> IP |
- which city |
+ which city |
mkIP |
IP -> Adv -> IP |
- who in Paris |
+ who in Paris |
whatPl_IP |
IP |
- what |
+ what |
whatSg_IP |
IP |
- what |
+ what |
what_IP |
IP |
- what |
+ what |
whoPl_IP |
IP |
- who |
+ who |
whoSg_IP |
IP |
- who |
+ who |
who_IP |
IP |
- who |
+ who |
@@ -1662,7 +1662,7 @@ Lexical category, constructors given in
which_IQuant |
IQuant |
- which house |
+ which house |
@@ -1678,17 +1678,17 @@ Lexical category, constructors given in
mkImp |
VP -> Imp |
- come to my house |
+ come to my house |
mkImp |
V -> Imp |
- come |
+ come |
mkImp |
V2 -> NP -> Imp |
- buy it |
+ buy it |
@@ -1704,17 +1704,17 @@ Lexical category, constructors given in
pluralImpForm |
ImpForm |
- be men |
+ be men |
politeImpForm |
ImpForm |
- be pre {"a"; "a" / strs {"eu"; "Eu"; "uni"; "up"}; |
+ be pre {"a"; "a" / strs {"eu"; "Eu"; "uni"; "up"}; |
singularImpForm |
ImpForm |
- be pre {"a"; "a" / strs {"eu"; "Eu"; "uni"; "up"}; |
+ be pre {"a"; "a" / strs {"eu"; "Eu"; "uni"; "up"}; |
@@ -1867,77 +1867,77 @@ Lexical category, constructors given in
everybody_NP |
NP |
- everybody |
+ everybody |
everything_NP |
NP |
- everything |
+ everything |
he_NP |
NP |
- he |
+ he |
i_NP |
NP |
- I |
+ I |
it_NP |
NP |
- it |
+ it |
mkNP |
Quant -> N -> NP |
- this man |
+ this man |
mkNP |
Quant -> CN -> NP |
- this old man |
+ this old man |
mkNP |
Quant -> Num -> CN -> NP |
- these five old men |
+ these five old men |
mkNP |
Quant -> Num -> N -> NP |
- these five men |
+ these five men |
mkNP |
Det -> CN -> NP |
- the five old men |
+ the five old men |
mkNP |
Det -> N -> NP |
- the five men |
+ the five men |
mkNP |
Numeral -> CN -> NP |
- table ParamX.Number [[]; |
+ table ParamX.Number [[]; []] |
mkNP |
Numeral -> N -> NP |
- table ParamX.Number [[]; |
+ table ParamX.Number [[]; []] |
mkNP |
Digits -> CN -> NP |
- 5 1 old men |
+ 5 1 old men |
mkNP |
Digits -> N -> NP |
- 5 1 men |
+ 5 1 men |
mkNP |
@@ -1952,147 +1952,147 @@ Lexical category, constructors given in
mkNP |
Pron -> CN -> NP |
- my old man |
+ my old man |
mkNP |
Pron -> N -> NP |
- my man |
+ my man |
mkNP |
PN -> NP |
- Paris |
+ Paris |
mkNP |
Pron -> NP |
- we |
+ we |
mkNP |
Quant -> NP |
- this |
+ this |
mkNP |
Quant -> Num -> NP |
- these five |
+ these five |
mkNP |
Det -> NP |
- the five best |
+ the five best |
mkNP |
CN -> NP |
- old beer |
+ old beer |
mkNP |
N -> NP |
- beer |
+ beer |
mkNP |
Predet -> NP -> NP |
- only this woman |
+ only this woman |
mkNP |
NP -> V2 -> NP |
- the man seen |
+ the man seen |
mkNP |
NP -> Adv -> NP |
- Paris today |
+ Paris today |
mkNP |
NP -> RS -> NP |
- John , who walks |
+ John , who walks |
mkNP |
Conj -> NP -> NP -> NP |
- this woman or John |
+ this woman or John |
mkNP |
Conj -> ListNP -> NP |
- this woman , John or I |
+ this woman , John or I |
nobody_NP |
NP |
- nobody |
+ nobody |
nothing_NP |
NP |
- nothing |
+ nothing |
she_NP |
NP |
- she |
+ she |
somebody_NP |
NP |
- somebody |
+ somebody |
something_NP |
NP |
- something |
+ something |
that_NP |
NP |
- that |
+ that |
these_NP |
NP |
- these |
+ these |
they_NP |
NP |
- they |
+ they |
this_NP |
NP |
- this |
+ this |
those_NP |
NP |
- those |
+ those |
we_NP |
NP |
- we |
+ we |
youPl_NP |
NP |
- you |
+ you |
youPol_NP |
NP |
- you |
+ you |
you_NP |
NP |
- you |
+ you |
@@ -2113,12 +2113,12 @@ Lexical category, constructors given in
mkNum |
Numeral -> Num |
- (table Predef.PBool [{s = table ResEng.CardOrd [table ResEng.Case ["ten"; |
+ (table |
mkNum |
Digits -> Num |
- 2 1 |
+ 2 1 |
mkNum |
@@ -2128,12 +2128,12 @@ Lexical category, constructors given in
mkNum |
Card -> Num |
- almost five |
+ almost five |
mkNum |
AdN -> Card -> Num |
- almost five |
+ almost five |
pluralNum |
@@ -2169,12 +2169,12 @@ Lexical category, constructors given in
mkNumeral |
Sub1000 -> Numeral |
- nine hundred and (table Predef.PBool [table Predef.PBool [{s = table ResEng.CardOrd [table ResEng.Case ["eleven"; |
+ nine hundred and (table |
mkNumeral |
Sub1000 -> Sub1000 -> Numeral |
- nine hundred and (table Predef.PBool [table Predef.PBool [{s = table ResEng.CardOrd [table ResEng.Case ["eleven"; |
+ nine hundred and (table |
mkNumeral |
@@ -2184,7 +2184,7 @@ Lexical category, constructors given in
thousandfoldNumeral |
Sub1000 -> Numeral |
- nine hundred and (table Predef.PBool [table Predef.PBool [{s = table ResEng.CardOrd [table ResEng.Case ["eleven"; |
+ nine hundred and (table |
@@ -2215,7 +2215,7 @@ Lexical category, constructors given in
mkOrd |
A -> Ord |
- smallest |
+ smallest |
@@ -2231,22 +2231,22 @@ Lexical category, constructors given in
but_PConj |
PConj |
- but |
+ but |
mkPConj |
Conj -> PConj |
- and now |
+ and now |
otherwise_PConj |
PConj |
- otherwise |
+ otherwise |
therefore_PConj |
PConj |
- therefore |
+ therefore |
@@ -2270,27 +2270,27 @@ Lexical category, constructors given in
mkPhr |
(PConj) -> Utt -> (Voc) -> Phr |
- but sleep , my friend |
+ but sleep , my friend |
mkPhr |
S -> Phr |
- she won't sleep |
+ she won't sleep |
mkPhr |
Cl -> Phr |
- she sleeps |
+ she sleeps |
mkPhr |
QS -> Phr |
- would she sleep |
+ would she sleep |
mkPhr |
Imp -> Phr |
- sleep |
+ sleep |
@@ -2306,12 +2306,12 @@ Lexical category, constructors given in
negativePol |
Pol |
- she doesn't sleep |
+ she doesn't sleep |
positivePol |
Pol |
- she sleeps |
+ she sleeps |
@@ -2327,22 +2327,22 @@ Lexical category, constructors given in
all_Predet |
Predet |
- all the men |
+ all the men |
most_Predet |
Predet |
- most |
+ most |
not_Predet |
Predet |
- not everybody |
+ not everybody |
only_Predet |
Predet |
- only |
+ only |
@@ -2358,107 +2358,107 @@ Lexical category, constructors given in
above_Prep |
Prep |
- above it |
+ above it |
after_Prep |
Prep |
- after it |
+ after it |
before_Prep |
Prep |
- before it |
+ before it |
behind_Prep |
Prep |
- behind it |
+ behind it |
between_Prep |
Prep |
- between you and me |
+ between you and me |
by8agent_Prep |
Prep |
- by it |
+ by it |
by8means_Prep |
Prep |
- by it |
+ by it |
during_Prep |
Prep |
- during it |
+ during it |
except_Prep |
Prep |
- except it |
+ except it |
for_Prep |
Prep |
- for it |
+ for it |
from_Prep |
Prep |
- from it |
+ from it |
in8front_Prep |
Prep |
- in front of it |
+ in front of it |
in_Prep |
Prep |
- in it |
+ in it |
on_Prep |
Prep |
- on it |
+ on it |
part_Prep |
Prep |
- of it |
+ of it |
possess_Prep |
Prep |
- of it |
+ of it |
through_Prep |
Prep |
- through it |
+ through it |
to_Prep |
Prep |
- to it |
+ to it |
under_Prep |
Prep |
- under it |
+ under it |
with_Prep |
Prep |
- with it |
+ with it |
without_Prep |
Prep |
- without it |
+ without it |
@@ -2474,47 +2474,47 @@ Lexical category, constructors given in
he_Pron |
Pron |
- he |
+ he |
i_Pron |
Pron |
- I |
+ I |
it_Pron |
Pron |
- it |
+ it |
she_Pron |
Pron |
- she |
+ she |
they_Pron |
Pron |
- they |
+ they |
we_Pron |
Pron |
- we |
+ we |
youPl_Pron |
Pron |
- you |
+ you |
youPol_Pron |
Pron |
- you |
+ you |
youSg_Pron |
Pron |
- you |
+ you |
@@ -2530,17 +2530,17 @@ Lexical category, constructors given in
exclMarkPunct |
Punct |
- yes ! |
+ yes ! |
fullStopPunct |
Punct |
- yes . |
+ yes . |
questMarkPunct |
Punct |
- yes ? |
+ yes ? |
@@ -2556,152 +2556,152 @@ Lexical category, constructors given in
mkQCl |
Cl -> QCl |
- does she sleep |
+ does she sleep |
mkQCl |
IP -> VP -> QCl |
- who always sleeps |
+ who always sleeps |
mkQCl |
IP -> V -> QCl |
- who sleeps |
+ who sleeps |
mkQCl |
IP -> V2 -> NP -> QCl |
- who loves her |
+ who loves her |
mkQCl |
IP -> V3 -> NP -> NP -> QCl |
- who sends it to her |
+ who sends it to her |
mkQCl |
IP -> VV -> VP -> QCl |
- who wants to sleep |
+ who wants to sleep |
mkQCl |
IP -> VS -> S -> QCl |
- who says that I sleep |
+ who says that I sleep |
mkQCl |
IP -> VQ -> QS -> QCl |
- who wonders who sleeps |
+ who wonders who sleeps |
mkQCl |
IP -> VA -> A -> QCl |
- who becomes old |
+ who becomes old |
mkQCl |
IP -> VA -> AP -> QCl |
- who becomes very old |
+ who becomes very old |
mkQCl |
IP -> V2A -> NP -> A -> QCl |
- who paints it red |
+ who paints it red |
mkQCl |
IP -> V2A -> NP -> AP -> QCl |
- who paints it very red |
+ who paints it very red |
mkQCl |
IP -> V2S -> NP -> S -> QCl |
- who answers to him that we sleep |
+ who answers to him that we sleep |
mkQCl |
IP -> V2Q -> NP -> QS -> QCl |
- who asks him who sleeps |
+ who asks him who sleeps |
mkQCl |
IP -> V2V -> NP -> VP -> QCl |
- who begs him to sleep |
+ who begs him to sleep |
mkQCl |
IP -> A -> QCl |
- who is old |
+ who is old |
mkQCl |
IP -> A -> NP -> QCl |
- who is older than he |
+ who is older than he |
mkQCl |
IP -> A2 -> NP -> QCl |
- who is married to him |
+ who is married to him |
mkQCl |
IP -> AP -> QCl |
- who is very old |
+ who is very old |
mkQCl |
IP -> NP -> QCl |
- who is the woman |
+ who is the woman |
mkQCl |
IP -> N -> QCl |
- who is pre {"a"; "a" / strs {"eu"; "Eu"; "uni"; "up"}; |
+ who is pre {"a"; "a" / strs {"eu"; "Eu"; "uni"; "up"}; |
mkQCl |
IP -> CN -> QCl |
- who is pre {"a"; "a" / strs {"eu"; "Eu"; "uni"; "up"}; |
+ who is pre {"a"; "a" / strs {"eu"; "Eu"; "uni"; "up"}; |
mkQCl |
IP -> Adv -> QCl |
- who is here |
+ who is here |
mkQCl |
IP -> NP -> V2 -> QCl |
- who is her |
+ who is her |
mkQCl |
IP -> ClSlash -> QCl |
- whom does she love today |
+ whom does she love today |
mkQCl |
IAdv -> Cl -> QCl |
- why does she sleep |
+ why does she sleep |
mkQCl |
Prep -> IP -> Cl -> QCl |
- with whom does she sleep |
+ with whom does she sleep |
mkQCl |
IAdv -> NP -> QCl |
- where is she |
+ where is she |
mkQCl |
IComp -> NP -> QCl |
- who is this man |
+ who is this man |
mkQCl |
IP -> QCl |
- which city is there |
+ which city is there |
@@ -2717,12 +2717,12 @@ Lexical category, constructors given in
mkQS |
(Tense) -> (Ant) -> (Pol) -> QCl -> QS |
- who wouldn't have slept |
+ who wouldn't have slept |
mkQS |
Cl -> QS |
- does she sleep |
+ does she sleep |
@@ -2738,32 +2738,32 @@ Lexical category, constructors given in
a_Quant |
Quant |
- pre {"a"; "a" / strs {"eu"; "Eu"; "uni"; "up"}; "an" / strs {"un"}; |
+ pre {"a"; "a" / strs {"eu"; "Eu"; "uni"; "up"}; "an" / strs {"un"}; |
mkQuant |
Pron -> Quant |
- my house |
+ my house |
no_Quant |
Quant |
- no house |
+ no house |
that_Quant |
Quant |
- that house |
+ that house |
the_Quant |
Quant |
- the house |
+ the house |
this_Quant |
Quant |
- this house |
+ this house |
@@ -2779,122 +2779,122 @@ Lexical category, constructors given in
mkRCl |
RP -> VP -> RCl |
- woman who always sleeps |
+ woman who always sleeps |
mkRCl |
RP -> V -> RCl |
- woman who sleeps |
+ woman who sleeps |
mkRCl |
RP -> V2 -> NP -> RCl |
- woman who loves him |
+ woman who loves him |
mkRCl |
RP -> V3 -> NP -> NP -> RCl |
- woman who sends it to him |
+ woman who sends it to him |
mkRCl |
RP -> VV -> VP -> RCl |
- woman who wants to sleep |
+ woman who wants to sleep |
mkRCl |
RP -> VS -> S -> RCl |
- woman who says that I sleep |
+ woman who says that I sleep |
mkRCl |
RP -> VQ -> QS -> RCl |
- woman who wonders who sleeps |
+ woman who wonders who sleeps |
mkRCl |
RP -> VA -> A -> RCl |
- woman who becomes old |
+ woman who becomes old |
mkRCl |
RP -> VA -> AP -> RCl |
- woman who becomes very old |
+ woman who becomes very old |
mkRCl |
RP -> V2A -> NP -> A -> RCl |
- woman who paints it red |
+ woman who paints it red |
mkRCl |
RP -> V2A -> NP -> AP -> RCl |
- woman who paints it very red |
+ woman who paints it very red |
mkRCl |
RP -> V2S -> NP -> S -> RCl |
- woman who answers to him that we sleep |
+ woman who answers to him that we sleep |
mkRCl |
RP -> V2Q -> NP -> QS -> RCl |
- woman who asks him who sleeps |
+ woman who asks him who sleeps |
mkRCl |
RP -> V2V -> NP -> VP -> RCl |
- woman who begs him to sleep |
+ woman who begs him to sleep |
mkRCl |
RP -> A -> RCl |
- woman who is old |
+ woman who is old |
mkRCl |
RP -> A -> NP -> RCl |
- woman who is older than he |
+ woman who is older than he |
mkRCl |
RP -> A2 -> NP -> RCl |
- woman who is married to him |
+ woman who is married to him |
mkRCl |
RP -> AP -> RCl |
- woman who is very old |
+ woman who is very old |
mkRCl |
RP -> NP -> RCl |
- woman who is the woman |
+ woman who is the woman |
mkRCl |
RP -> N -> RCl |
- student who is pre {"a"; "a" / strs {"eu"; "Eu"; "uni"; "up"}; |
+ student who is pre {"a"; "a" / strs {"eu"; "Eu"; "uni"; "up"}; |
mkRCl |
RP -> CN -> RCl |
- student who is pre {"a"; "a" / strs {"eu"; "Eu"; "uni"; "up"}; |
+ student who is pre {"a"; "a" / strs {"eu"; "Eu"; "uni"; "up"}; |
mkRCl |
RP -> Adv -> RCl |
- woman who is here |
+ woman who is here |
mkRCl |
RP -> NP -> V2 -> RCl |
- woman whom we love |
+ woman whom we love |
mkRCl |
RP -> ClSlash -> RCl |
- woman whom she loves today |
+ woman whom she loves today |
mkRCl |
@@ -2915,12 +2915,12 @@ Lexical category, constructors given in
mkRP |
Prep -> NP -> RP -> RP |
- all the cities in whom |
+ all the cities in whom |
which_RP |
RP |
- which |
+ which |
@@ -2936,7 +2936,7 @@ Lexical category, constructors given in
mkRS |
(Tense) -> (Ant) -> (Pol) -> RCl -> RS |
- woman who wouldn't have slept |
+ woman who wouldn't have slept |
mkRS |
@@ -2946,7 +2946,7 @@ Lexical category, constructors given in
mkRS |
Conj -> RS -> RS -> RS |
- woman who sleeps or whom we love |
+ woman who sleeps or whom we love |
mkRS |
@@ -2967,7 +2967,7 @@ Lexical category, constructors given in
mkS |
(Tense) -> (Ant) -> (Pol) -> Cl -> S |
- she wouldn't have slept |
+ she wouldn't have slept |
mkS |
@@ -2977,17 +2977,17 @@ Lexical category, constructors given in
mkS |
Conj -> S -> S -> S |
- she sleeps and I run |
+ she sleeps and I run |
mkS |
Conj -> ListS -> S |
- she sleeps , I run and you walk |
+ she sleeps , I run and you walk |
mkS |
Adv -> S -> S |
- today she sleeps |
+ today she sleeps |
@@ -3003,17 +3003,17 @@ Lexical category, constructors given in
mkSC |
S -> SC |
- that she sleeps |
+ that she sleeps |
mkSC |
QS -> SC |
- who sleeps |
+ who sleeps |
mkSC |
VP -> SC |
- to sleep |
+ to sleep |
@@ -3029,7 +3029,7 @@ Lexical category, constructors given in
mkSSlash |
Temp -> Pol -> ClSlash -> SSlash |
- she hadn't seen |
+ she hadn't seen |
@@ -3045,17 +3045,17 @@ Lexical category, constructors given in
mkSub100 |
Unit -> Sub100 |
- eight |
+ eight |
mkSub100 |
Unit -> Unit -> Sub100 |
- (table Predef.PBool [table Predef.PBool [{s = table ResEng.CardOrd [table ResEng.Case ["eleven"; |
+ (table |
tenfoldSub100 |
Unit -> Sub100 |
- eight |
+ eight |
@@ -3071,17 +3071,17 @@ Lexical category, constructors given in
mkSub1000 |
Sub100 -> Sub1000 |
- (table Predef.PBool [table Predef.PBool [{s = table ResEng.CardOrd [table ResEng.Case ["eleven"; |
+ (table |
mkSub1000 |
Unit -> Sub1000 |
- nine hundred |
+ nine hundred |
mkSub1000 |
Unit -> Sub100 -> Sub1000 |
- nine hundred and (table Predef.PBool [table Predef.PBool [{s = table ResEng.CardOrd [table ResEng.Case ["eleven"; |
+ nine hundred and (table |
@@ -3097,27 +3097,27 @@ Lexical category, constructors given in
although_Subj |
Subj |
- although she sleeps |
+ although she sleeps |
because_Subj |
Subj |
- because she sleeps |
+ because she sleeps |
if_Subj |
Subj |
- if she sleeps |
+ if she sleeps |
that_Subj |
Subj |
- that she sleeps |
+ that she sleeps |
when_Subj |
Subj |
- when she sleeps |
+ when she sleeps |
@@ -3149,22 +3149,22 @@ Lexical category, constructors given in
conditionalTense |
Tense |
- she would sleep |
+ she would sleep |
futureTense |
Tense |
- she will sleep |
+ she will sleep |
pastTense |
Tense |
- she slept |
+ she slept |
presentTense |
Tense |
- she sleeps |
+ she sleeps |
@@ -3185,7 +3185,7 @@ Lexical category, constructors given in
mkText |
Phr -> (Punct) -> (Text) -> Text |
- does she sleep ? yes . |
+ does she sleep ? yes . |
mkText |
@@ -3195,27 +3195,27 @@ Lexical category, constructors given in
mkText |
S -> Text |
- she slept . |
+ she slept . |
mkText |
Cl -> Text |
- she sleeps . |
+ she sleeps . |
mkText |
QS -> Text |
- did she sleep ? |
+ did she sleep ? |
mkText |
(Pol) -> Imp -> Text |
- don't sleep ! |
+ don't sleep ! |
mkText |
Text -> Text -> Text |
- where ? here . when ? now ! |
+ where ? here . when ? now ! |
@@ -3231,47 +3231,47 @@ Lexical category, constructors given in
n1_Unit |
Unit |
- one |
+ one |
n2_Unit |
Unit |
- two |
+ two |
n3_Unit |
Unit |
- three |
+ three |
n4_Unit |
Unit |
- four |
+ four |
n5_Unit |
Unit |
- five |
+ five |
n6_Unit |
Unit |
- six |
+ six |
n7_Unit |
Unit |
- seven |
+ seven |
n8_Unit |
Unit |
- eight |
+ eight |
n9_Unit |
Unit |
- nine |
+ nine |
@@ -3287,82 +3287,82 @@ Lexical category, constructors given in
lets_Utt |
VP -> Utt |
- let's sleep |
+ let's sleep |
mkUtt |
S -> Utt |
- she slept |
+ she slept |
mkUtt |
Cl -> Utt |
- she sleeps |
+ she sleeps |
mkUtt |
QS -> Utt |
- who didn't sleep |
+ who didn't sleep |
mkUtt |
QCl -> Utt |
- who sleeps |
+ who sleeps |
mkUtt |
(ImpForm) -> (Pol) -> Imp -> Utt |
- don't be men |
+ don't be men |
mkUtt |
IP -> Utt |
- who |
+ who |
mkUtt |
IAdv -> Utt |
- why |
+ why |
mkUtt |
NP -> Utt |
- this man |
+ this man |
mkUtt |
Adv -> Utt |
- here |
+ here |
mkUtt |
VP -> Utt |
- to sleep |
+ to sleep |
mkUtt |
CN -> Utt |
- beer |
+ beer |
mkUtt |
AP -> Utt |
- good |
+ good |
mkUtt |
Card -> Utt |
- five |
+ five |
no_Utt |
Utt |
- no |
+ no |
yes_Utt |
Utt |
- yes |
+ yes |
@@ -3386,7 +3386,7 @@ Lexical category, constructors given in
have_V2 |
V2 |
- to have it |
+ to have it |
@@ -3450,142 +3450,142 @@ Lexical category, constructors given in
mkVP |
V -> VP |
- to sleep |
+ to sleep |
mkVP |
V2 -> NP -> VP |
- to love him |
+ to love him |
mkVP |
V3 -> NP -> NP -> VP |
- to send it to him |
+ to send it to him |
mkVP |
VV -> VP -> VP |
- to want to sleep |
+ to want to sleep |
mkVP |
VS -> S -> VP |
- to know that she sleeps |
+ to know that she sleeps |
mkVP |
VQ -> QS -> VP |
- to wonder who sleeps |
+ to wonder who sleeps |
mkVP |
VA -> AP -> VP |
- to become red |
+ to become red |
mkVP |
V2A -> NP -> AP -> VP |
- to paint it red |
+ to paint it red |
mkVP |
V2S -> NP -> S -> VP |
- to answer to him that she sleeps |
+ to answer to him that she sleeps |
mkVP |
V2Q -> NP -> QS -> VP |
- to ask him who sleeps |
+ to ask him who sleeps |
mkVP |
V2V -> NP -> VP -> VP |
- to beg him to sleep |
+ to beg him to sleep |
mkVP |
A -> VP |
- to be old |
+ to be old |
mkVP |
A -> NP -> VP |
- to be older than he |
+ to be older than he |
mkVP |
A2 -> NP -> VP |
- to be married to him |
+ to be married to him |
mkVP |
AP -> VP |
- to be very old |
+ to be very old |
mkVP |
N -> VP |
- to be pre {"a"; "a" / strs {"eu"; "Eu"; "uni"; "up"}; |
+ to be pre {"a"; "a" / strs {"eu"; "Eu"; "uni"; "up"}; |
mkVP |
CN -> VP |
- to be pre {"a"; "a" / strs {"eu"; "Eu"; "uni"; "up"}; |
+ to be pre {"a"; "a" / strs {"eu"; "Eu"; "uni"; "up"}; |
mkVP |
NP -> VP |
- to be the woman |
+ to be the woman |
mkVP |
Adv -> VP |
- to be here |
+ to be here |
mkVP |
VP -> Adv -> VP |
- to sleep here |
+ to sleep here |
mkVP |
AdV -> VP -> VP |
- to always sleep |
+ to always sleep |
mkVP |
VPSlash -> NP -> VP |
- to paint it black |
+ to paint it black |
mkVP |
VPSlash -> VP |
- to paint itself black |
+ to paint itself black |
mkVP |
Comp -> VP |
- to be warm |
+ to be warm |
passiveVP |
V2 -> VP |
- to be loved |
+ to be loved |
passiveVP |
V2 -> NP -> VP |
- to be loved by her |
+ to be loved by her |
progressiveVP |
VP -> VP |
- to be sleeping |
+ to be sleeping |
reflexiveVP |
V2 -> VP |
- to love itself |
+ to love itself |
reflexiveVP |
@@ -3606,42 +3606,42 @@ Lexical category, constructors given in
mkVPSlash |
V2 -> VPSlash |
- whom does she see |
+ whom does she see |
mkVPSlash |
V3 -> NP -> VPSlash |
- to whom does she send it |
+ to whom does she send it |
mkVPSlash |
V2A -> AP -> VPSlash |
- whom does she paint red |
+ whom does she paint red |
mkVPSlash |
V2Q -> QS -> VPSlash |
- whom does she ask where I sleep |
+ whom does she ask where I sleep |
mkVPSlash |
V2S -> S -> VPSlash |
- to whom does she answer that I sleep |
+ to whom does she answer that I sleep |
mkVPSlash |
V2V -> VP -> VPSlash |
- whom does she beg to sleep |
+ whom does she beg to sleep |
mkVPSlash |
VV -> VPSlash -> VPSlash |
- whom does she want to see |
+ whom does she want to see |
mkVPSlash |
V2V -> NP -> VPSlash -> VPSlash |
- whom does she beg me to see |
+ whom does she beg me to see |
@@ -3673,22 +3673,22 @@ Lexical category, constructors given in
can8know_VV |
VV |
- to be able to sleep |
+ to be able to sleep |
can_VV |
VV |
- to be able to sleep |
+ to be able to sleep |
must_VV |
VV |
- have to |
+ have to |
want_VV |
VV |
- to want to sleep |
+ to want to sleep |
@@ -3704,12 +3704,12 @@ Lexical category, constructors given in
mkVoc |
NP -> Voc |
- yes , my friend |
+ yes , my friend |
please_Voc |
Voc |
- please |
+ please |
@@ -6660,6 +6660,11 @@ source
N -> N
+
Auto + Fahrer -> Autofahrer |
+
+
mkN2 |
N -> N2 |
noun + von |
@@ -6882,6 +6887,409 @@ source
+Paradigms for Greek
+
+
+
+
+
+source ../src/greek/ParadigmsGre.gf
+
+
+
+
+| Function |
+Type |
+Explanation |
+
+
+masculine |
+Gender |
+- |
+
+
+feminine |
+Gender |
+- |
+
+
+neutral |
+Gender |
+- |
+
+
+accusative |
+Case |
+- |
+
+
+genitive |
+Case |
+- |
+
+
+indicative |
+Mood |
+- |
+
+
+conjunctive |
+Mood |
+- |
+
+
+singular |
+Number |
+- |
+
+
+plural |
+Number |
+- |
+
+
+mkN |
+(dentro : Str) -> N |
+- |
+
+
+mkN |
+(s : Str) -> Gender -> N |
+- |
+
+
+mkN |
+(s1,s2,s3,s4,p1,p2,p3,p4 : Str) -> Gender -> N |
+- |
+
+
+mkN |
+(s1,s2: Str) -> Gender -> N |
+- |
+
+
+mkN1 |
+Str -> Gender -> N |
+- |
+
+
+mkNending |
+Str -> Str -> Gender -> N |
+- |
+
+
+mkN2 |
+N -> Prep -> N2 ---η μηÏÎÏα + γενική |
+- |
+
+
+ofN2 |
+N -> N2 |
+- |
+
+
+mkN3 |
+N -> Prep -> Prep -> N3 |
+- |
+
+
+mkPN |
+(anna : Str) -> PN |
+- |
+
+
+mkPN |
+(nm,gm,am,vm,pn,pa : Str) -> Gender -> PN |
+- |
+
+
+makeNP |
+(_,_,_: Str) -> Number -> Gender -> NP |
+- |
+
+
+makeNP |
+Str -> Number -> Gender ->Bool -> NP |
+- |
+
+
+mkpanta |
+Str -> Str -> Str -> Number -> Gender -> NP |
+- |
+
+
+mkkati |
+Str ->Number -> Gender -> Bool -> NP |
+- |
+
+
+mkA |
+(a : Str) -> A |
+- |
+
+
+mkA |
+(a,b: Str) -> A |
+- |
+
+
+mkAd2 |
+Str -> A |
+- |
+
+
+mkAd3 |
+Str -> A |
+- |
+
+
+mkAd4 |
+Str -> A |
+- |
+
+
+mkAd5 |
+Str -> A |
+- |
+
+
+mkAdIrreg |
+Str -> A |
+- |
+
+
+mkA1 |
+Str -> Str -> A |
+- |
+
+
+mkA2 |
+A -> Prep -> A2 |
+- |
+
+
+mkA2V |
+A -> Prep -> Prep -> A2V; |
+- |
+
+
+mkAV |
+A -> AV |
+- |
+
+
+mkAS |
+A -> AS |
+- |
+
+
+mkV2 |
+V -> V2 |
+- |
+
+
+mkV2 |
+V -> Prep -> V2 |
+- |
+
+
+mkVS |
+V -> VS |
+- |
+
+
+mkVQ |
+V -> VQ |
+- |
+
+
+mkVV |
+V -> VV |
+- |
+
+
+mkVA |
+V -> VA |
+- |
+
+
+acc |
+Prep |
+- |
+
+
+gen |
+Prep |
+- |
+
+
+dat |
+Prep |
+- |
+
+
+prepse |
+Prep |
+- |
+
+
+mkPrep |
+Str -> Preposition |
+- |
+
+
+mkPrep2 |
+Str -> Preposition |
+- |
+
+
+mkPrep3 |
+Str -> Preposition |
+- |
+
+
+mkPrep4 |
+Str -> Preposition |
+- |
+
+
+Preposition |
+Type |
+- |
+
+
+mkPreposition |
+Str -> Preposition |
+- |
+
+
+mkPreposition2 |
+Str -> Preposition |
+- |
+
+
+mkPreposition3 |
+Str -> Preposition |
+- |
+
+
+mkPreposition4 |
+Str -> Preposition |
+- |
+
+
+mkV3 |
+V -> V3 |
+- |
+
+
+mkV3 |
+V -> Prep -> V3 |
+- |
+
+
+mkV3 |
+V -> Prep -> Prep -> V3 |
+- |
+
+
+mkV3 |
+V -> V3 |
+- |
+
+
+mkV3 |
+V -> Prep -> V3 |
+- |
+
+
+mkV3 |
+V -> Prep -> Prep -> V3 |
+- |
+
+
+mmkV3 |
+V -> Prep -> Prep -> V3 |
+milaw, se, gia |
+
+
+dirV3 |
+V -> Prep -> V3 |
+dino,_,se |
+
+
+dirdirV3 |
+V -> V3 |
+dino,_,_ |
+
+
+mmkV |
+V -> Str -> V |
+- |
+
+
+expressV |
+V -> Str -> V |
+- |
+
+
+mmkV2 |
+V -> Prep -> V2 |
+- |
+
+
+dirV2 |
+V -> V2 |
+- |
+
+
+mkV2V |
+V -> Prep -> Prep -> V2V |
+- |
+
+
+mkV2S |
+V -> Prep -> V2S |
+- |
+
+
+mkV2Q |
+V -> Prep -> V2Q |
+- |
+
+
+mkV2A |
+V -> Prep -> Prep -> V2A |
+- |
+
+
+mkV0 |
+V -> V0 |
+- |
+
+
+V0 |
+Type |
+- |
+
+
+V0 |
+Type |
+- |
+
+
+mkNV |
+Verb -> V |
+- |
+
+
+compoundV |
+Verb -> Str -> V |
+- |
+
+
+
+
Paradigms for Hindi
@@ -7144,7 +7552,7 @@ source
+
Paradigms for Italian
@@ -7437,7 +7845,7 @@ source
+
Paradigms for Japanese
@@ -7560,7 +7968,7 @@ source
+
Paradigms for Latvian
@@ -7587,6 +7995,16 @@ source Gender
+
- |
+
+
+feminine |
+Gender |
+- |
+
+
second_conjugation |
VerbConj |
- |
@@ -7622,6 +8040,16 @@ source PartType
+- |
+
+
+passive_voice |
+PartType |
+- |
+
+
mkN |
(lemma : Str) -> N |
- |
@@ -7898,7 +8326,7 @@ source
+
Paradigms for Nepali
@@ -8246,7 +8674,7 @@ source
+
Paradigms for Norwegian
@@ -8499,7 +8927,7 @@ source
+
Paradigms for Polish
@@ -8509,7 +8937,7 @@ source ../src/polish/ParadigmsPol.gf
-
+
Paradigms for Punjabi
@@ -8722,7 +9150,7 @@ source
+
Paradigms for Romanian
@@ -8975,7 +9403,7 @@ source
+
Paradigms for Russian
@@ -9163,7 +9591,7 @@ source
+
Paradigms for Sindhi
@@ -9376,7 +9804,7 @@ source
+
Paradigms for Spanish
@@ -9649,7 +10077,7 @@ source
+
Paradigms for Swedish
@@ -9907,7 +10335,7 @@ source
+
Paradigms for Thai
@@ -10080,7 +10508,7 @@ source
+
Paradigms for Urdu
@@ -10333,10 +10761,10 @@ source
+
Additional Libraries
-
+
The Prelude module
@@ -10417,7 +10845,7 @@ strings and booleans.
-
+
The Predefined module
@@ -10522,7 +10950,7 @@ These functions are hard-coded in GF. They are available without explicit openin
-
+
The Formal module
@@ -10583,7 +11011,7 @@ use precedence levels and parentheses for grouping subexpressions.
-
+
The Symbolic module
@@ -10645,7 +11073,7 @@ languages.
-
+
The Combinators module
@@ -10751,7 +11179,7 @@ expressions (app). It works for all resource languages.
-
+
Browsing the libraries with GF commands
@@ -10780,7 +11208,7 @@ To try out overloaded syntax, test lexicon, and inflection paradigms:
> cc mkCl (mkNP this_Quant (mkN "Farbe")) (mkA "dunkel")
-
+
An Example of Usage
@@ -10854,7 +11282,7 @@ For each language, an instantiation of the functor:
(LexMusic = LexMusicGer) ;
-
+
Table of Contents
@@ -10957,33 +11385,34 @@ For each language, an instantiation of the functor:
Paradigms for Finnish
Paradigms for French
Paradigms for German
- Paradigms for Hindi
- Paradigms for Italian
- Paradigms for Japanese
- Paradigms for Latvian
- Paradigms for Nepali
- Paradigms for Norwegian
- Paradigms for Polish
- Paradigms for Punjabi
- Paradigms for Romanian
- Paradigms for Russian
- Paradigms for Sindhi
- Paradigms for Spanish
- Paradigms for Swedish
- Paradigms for Thai
- Paradigms for Urdu
+ Paradigms for Greek
+ Paradigms for Hindi
+ Paradigms for Italian
+ Paradigms for Japanese
+ Paradigms for Latvian
+ Paradigms for Nepali
+ Paradigms for Norwegian
+ Paradigms for Polish
+ Paradigms for Punjabi
+ Paradigms for Romanian
+ Paradigms for Russian
+ Paradigms for Sindhi
+ Paradigms for Spanish
+ Paradigms for Swedish
+ Paradigms for Thai
+ Paradigms for Urdu
- Additional Libraries
+ Additional Libraries
- Browsing the libraries with GF commands
- An Example of Usage
- Table of Contents
+ Browsing the libraries with GF commands
+ An Example of Usage
+ Table of Contents
diff --git a/lib/src/api/CombinatorsGre.gf b/lib/src/api/CombinatorsGre.gf
new file mode 100644
index 000000000..00ac94f58
--- /dev/null
+++ b/lib/src/api/CombinatorsGre.gf
@@ -0,0 +1,6 @@
+--# -path=.:alltenses:prelude
+
+resource CombinatorsGre = Combinators with
+ (Cat = CatGre),
+ (Structural = StructuralGre),
+ (Constructors = ConstructorsGre) ;
diff --git a/lib/src/api/ConstructorsGre.gf b/lib/src/api/ConstructorsGre.gf
new file mode 100644
index 000000000..24060b803
--- /dev/null
+++ b/lib/src/api/ConstructorsGre.gf
@@ -0,0 +1,3 @@
+--# -path=.:alltenses:prelude
+
+resource ConstructorsGre = Constructors with (Grammar = GrammarGre) ;
diff --git a/lib/src/api/SymbolicGre.gf b/lib/src/api/SymbolicGre.gf
new file mode 100644
index 000000000..750b0e950
--- /dev/null
+++ b/lib/src/api/SymbolicGre.gf
@@ -0,0 +1,5 @@
+--# -path=.:alltenses
+
+resource SymbolicGre = Symbolic with
+ (Symbol = SymbolGre),
+ (Grammar = GrammarGre) ;
diff --git a/lib/src/api/SyntaxGre.gf b/lib/src/api/SyntaxGre.gf
new file mode 100644
index 000000000..c8292f03f
--- /dev/null
+++ b/lib/src/api/SyntaxGre.gf
@@ -0,0 +1,5 @@
+--# -path=.:./alltenses:../prelude
+
+instance SyntaxGre of Syntax =
+ ConstructorsGre, CatGre, StructuralGre, CombinatorsGre ;
+
diff --git a/lib/src/api/TryGre.gf b/lib/src/api/TryGre.gf
new file mode 100644
index 000000000..3146de7f1
--- /dev/null
+++ b/lib/src/api/TryGre.gf
@@ -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 ;
+ } ;
+
+}
+
+-}
\ No newline at end of file
diff --git a/lib/src/greek/AdjectiveGre.gf b/lib/src/greek/AdjectiveGre.gf
new file mode 100644
index 000000000..4a390cf5c
--- /dev/null
+++ b/lib/src/greek/AdjectiveGre.gf
@@ -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
+ } ;
+
+
+
+}
diff --git a/lib/src/greek/AdverbGre.gf b/lib/src/greek/AdverbGre.gf
new file mode 100644
index 000000000..dd2d9d091
--- /dev/null
+++ b/lib/src/greek/AdverbGre.gf
@@ -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} ;
+
+}
diff --git a/lib/src/greek/AllGre.gf b/lib/src/greek/AllGre.gf
new file mode 100644
index 000000000..fb8c40da0
--- /dev/null
+++ b/lib/src/greek/AllGre.gf
@@ -0,0 +1,8 @@
+--# -path=.:../abstract:../common
+
+concrete AllGre of AllGreAbs =
+ LangGre,
+ ExtraGre
+ ** {} ;
+
+
\ No newline at end of file
diff --git a/lib/src/greek/AllGreAbs.gf b/lib/src/greek/AllGreAbs.gf
new file mode 100644
index 000000000..d2db0a787
--- /dev/null
+++ b/lib/src/greek/AllGreAbs.gf
@@ -0,0 +1,4 @@
+abstract AllGreAbs =
+ Lang,
+ ExtraGreAbs
+ ** {} ;
\ No newline at end of file
diff --git a/lib/src/greek/BackwardGre.gf b/lib/src/greek/BackwardGre.gf
new file mode 100644
index 000000000..a80ee9d04
--- /dev/null
+++ b/lib/src/greek/BackwardGre.gf
@@ -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 ;
+
+}
diff --git a/lib/src/greek/BeschGre.gf b/lib/src/greek/BeschGre.gf
new file mode 100644
index 000000000..a279e30b4
--- /dev/null
+++ b/lib/src/greek/BeschGre.gf
@@ -0,0 +1,2840 @@
+ resource BeschGre = open Prelude,ResGre in {
+
+ flags coding = utf8 ;
+
+
+ oper
+
+
+ mkImper : Str -> Str = \v -> case v of {
+ c + "στ" => v + "άτε" ;
+ c + ("β" | "γ" | "δ"| "ζ" |"θ" | "κ"| "μ" | "ν"| "π" |"ρ" | "τ"| "φ" | "χ" | "λλ" ) => v + "ετε" ;
+ c + ("λ" | "σ"| "ξ" |"ψ" ) => v + "τε"
+ };
+
+ -----For Contracted Verbs, give extra consonant----
+ mkContr : Str -> Str = \s ->
+ case s of {
+ "σπάω" => "ζ" ;
+ ("ακούω" | "κλαίω" | "καίω" | "φταίω" | "φυλάω") => "γ"
+ };
+
+ ------Patterns for verbs with reduplication in the participle-------
+ exept : pattern Str = #("πει");
+ exept2 : pattern Str = #("συνδε");
+ exept3 : pattern Str = #("τελε");
+ exept4 : pattern Str = #("διακο");
+ exept5 : pattern Str = #("εισα" | "εξα");
+ exept6 : pattern Str = # "προ" ;
+ exept7 : pattern Str = # ("διαδω") ;
+
+
+
+
+
+
+
+ -------Participles according to passive perfect stem ------------------
+ mkPartStem : Str -> Str = \s ->
+ case s of
+ {
+ "αρκεστ" => "αρκούμενος"; ---irreg
+ "αποτελέσ" => "αποτελούμενος"; ---irreg
+ "εξαιρεθ" => "εξηρημένος"; ---irreg
+ "λήφθ" => "ειλλημένος"; ---irreg
+ "κα" => "καμένος" ; ---irreg
+ "κλαυτ" => "κλαμένος" ; ---irreg
+ "ταξιδευτ" => "ταξιδεμένος" ;
+ "κερδηθ" => "κερδισμένος" ;
+ "αφεθ" => "αφημένος" ;
+ "προστεθ"=> "προστιθέμενος" ;
+ "τραγουδηθ" => "τραγουδισμένος" ;
+ x@(#exept) + "στ" => "πε" + x + "σμένος" ; -----reduplication πε-πεισμένος
+ x@(#exept2) + "θ" => x + "δε" + "μένος" ; -----reduplication συνδε-δε-μένος
+ x@(#exept3) + "στ" => "τε" + x + "σμένος" ; -----reduplication τε-τελεσμένος
+ x@(#exept4) + "π" => "δια" + "κε" + "κομμένος" ; -----reduplication δια-κε-κομμένος
+ x@(#exept5) + "χθ" => x + "γό" + "μενος" ; -----reduplication εισαγ-ο-μενος
+ x@(#exept6) + "βληθ" => x + "βε" + "βλημένος" ; -----reduplication προ-βε-βλημένος
+ x@(#exept7) + "θ" => "δια" + "δε" + "δομένος" ; -----reduplication δια-δε-δομμένος
+ x + ("στ" | "σθ"|"νθ" ) => x + "σμένος";
+ x + ("χτ" | "χθ" ) => x + "γμένος" ;
+ x + "ευτ" => x + "ημένος" ;
+ x + "αχ" => x + "εγμένος" ;
+ x + ("φτ" | "φθ" | "π" | "φ" ) => x + "μμένος";
+ x + "εύσ" => x + "ευμένος" ;
+ x + "ιώ" => x + "ιωμένος" ;
+ x + "αρθ" => x + "αρμένος" ;
+ x + "αλθ" => x + "αλμένος" ;
+ x + "ερθ" => x + "ερμένος" ;
+ x + "ηθ" => x + "ημένος" ;
+ x + "ευρεθ" => x + "ευρισκόμενος" ;
+ x + "ταθ" => x + "τεινόμενος" ;
+ x + "υθ" => x + "υμένος" ;
+ x + "εθ" => x + "εμένος" ;
+ x + "ωθ" => x + "ωμένος" ;
+ x + "αθ" => x + "αμένος" ;
+ x + "θ" => x + "σμένος" ;
+ x + "γ" => x + "γμένος"
+ };
+
+
+ -------Stem for passive perfective according to active imperfective ------------------
+ mkStem : Str -> Str = \s ->
+ case s of
+ {
+ "βρέχω" => "βράχ" ;
+ "δίνω" => "δόθ" ;
+ "τρέφω" => "τράφ" ;
+ "πνίγω" => "πνίγ" ;
+ "σέρνω" => "σύρθ" ;
+ "αφήνω" => "αφέθ" ;
+ "σπέρνω" => "σπάρθ" ;
+ "στέλνω" => "στάλθ" ;
+ "στρέφω" => "στράφ" ;
+ "σβήνω" => "σβήστ" ;
+ "τρέπω" => "τράπ" ;
+ "φθείρω" => "φθάρθ" ;
+ "καθιστώ" => "καθίστ" ;
+ "παρέχω" => "παρασχέθ" ;
+ "συμμετέχω" => "συμμετάσχ" ;
+ ("ψάλλω" | "ψέλνω" ) => "ψάλθ" ;
+ x + "έχω" => x + "ασχέθ";
+ x + "είρω" => x + "έρθ"; ----εγείρω Irreg
+ x + "κόπτω" => x + "κόπ" ;
+ x + "ζω" => x + "χθ" ; ---σφάζω
+ x + "νω" => x + "θ" ; ----χάνω
+ x + "έω" => x + "εύστ" ; ----εμπνέω
+ x + "χ" => x + "χ" ;
+ x + "ξω" => x + "χθ" ;
+ x + ("ττω" | "σσω") => x + "χθ" ; ---κυρήττω
+ x + ("δω" | "θω") => x + "στ" ; ----πειθω
+ x + "εύω" => x + "εύτ" ; --- γιατρεύω
+ x + "αύω" => x + "αύτ" ; --- παύω
+ x + ("βω" | "πω"| "πτω"|"φω" | "φτω") => x + "φτ"; ----θάβω
+ x + ("γω" | "γγω"| "γχω"|"κω" | "σκω" | "χνω" | "χω") => x + "χθ" ----παράγω, σφίγγω
+ };
+
+
+ -------Stem for passive perfective according to active perfective ------------------
+ mkStem2 : Str -> Str = \s ->
+ case s of
+ {
+ "κάψω" => "κά" ;
+ "κλάψω" => "κλαύτ" ;
+ "κλέψω" => "κλάπ" ;
+ "κόψω" => "κόπ" ;
+ "λάβω" => "λήφθ" ;
+ "προτείνω" => "προτάθ" ;
+ "προβάλλω" => "προβλήθ" ;
+ "εφεύρω" => "εφευρέθ" ;
+ "πλήξω" => "πλήγ" ;
+ "θέσω" => "τέθ" ;
+ "σώσω" => "σώθ" ;
+ "πρήξω" => "πρήστ" ;
+ "πετύχω" => "επιτεύχθ" ;
+ x + "ζω" => x + "στ";
+ x + "ήσω" => x + "ήθ";
+ x + "πλήξω" => x + "πλάγ";
+ x + "σω" => x + "στ" ;
+ x + "άρω" => x + "άρθ";
+ x + "είρω" => x + "άρθ";
+ x + "άω" => x + "αγώθ";
+ x + "λω" => x + "λθ" ;
+ x + "σκω" => x + "σκήσθ" ;
+ x + "ξω" => x + "χτ";
+ x + "ψω" => x + "φθ";
+ x + "άνω" => x + "άνθ";
+ x + "αρίσω" => x + "αρίστ";
+ x + "άρω" => x + "αρίστ";
+ x + "ιρίσω" => x + "ιρίστ";
+ x + "ίρω" => x + "ιρίστ";
+ x + "νω" => x + "θ"
+ };
+
+
+ -------Stem for passive perfective according to active perfective, cases as in mkStem2, extra variations ------------------
+ mkStem3 : Str -> Str = \s ->
+ case s of
+ {
+ "εκτείσω" => "εκτάθ" ;
+ "κερδίσω" => "κερδήθ" ;
+ "παραδώσω" => "παραδόθ" ;
+ "μάθω" => "μαθεύτ" ;
+ "διαθέσω" => "διατέθ" ;
+ "προσθέσω" => "προστέθ" ;
+ x + "ίσω" => x + "ίστ" ;
+ x + "σω" => x + "θ" ;
+ x + "άνω" => x + "άθ";
+ x + "νω" => x + "νθ" ;
+ x + "άβω" => x + "ήφθ" ;
+ x + "μω" => x + "μηθ" ;
+ x + "ξω" => x + "χθ" ;
+ x + "εύω" => x + "εύτ" ;
+ x + "άλλω" => x + "λήθ"
+ };
+
+
+ -------Conjugation 2 (A,B).Stem for passive perfective regular ------------------
+ mkStem4 : Str -> Str = \s ->
+ case s of
+ {
+ x + "ήσ" => x + "ήθ";
+ x + "έσ" => x + "έστ";
+ x + "άσ" => x + "άστ" ;
+ x + "άξ" => x + "άχτ" ;
+ x + "ήξ" => x + "ήχτ"
+ };
+
+ mkStem5 : Str -> Str = \s ->
+ case s of
+ {
+ x + "έσ" => x + "έθ" ;
+ x + "ήσ" => x + "ήσθ";
+ x + "στ" => x + "στάχτ" ;
+ x + "άξ" => x + "άχτ" ;
+ "πώ" => "ειπώθ";
+ "δώ" => "ειδώθ";
+ x + "θώ" => "θηκ"
+ };
+
+
+ ---For the formation of the passive imperative singular----
+ mkImperPassive : Str -> Str = \v -> case v of {
+ "πλύν" => "πλύσ" ;
+ c + "τεύχθ" => c + "τεύξ" ;
+ c + "γείρ" => c + "γέρσ" ;
+ c + "είρ" => c + "άρσ" ;
+ c + "είν" => c + "άσ" ;
+ c + "είλ" => c + "άλσ" ;
+ c + "άγ" => c + "άξ" ;
+ c + "άρ" => c + "άρσ" ;
+ c + "εύρ" => c + "ευρέσ" ;
+ c + "άξ" => c + "άξ" ;
+ c + ( "άλ" |"άλλ" ) => c + "άλσ" ;
+ _ => v
+ };
+
+
+
+ -------------------Verbs of First Conjugation-----------------
+ mkVerb1 : (x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15 : Str) -> Verb = \paIzw, paIksw, Epeksa, Epeza, paIz,paIks, Epeks, Epez, De, p, p1, Imp, Imp2, Imp3 ,part->
+ {
+ s = table {
+ VPres Ind Sg P1 Active _ => paIzw ;
+ VPres Ind Sg P2 Active _ => paIz + "εις" ;
+ VPres Ind Sg P3 Active _=> paIz + "ει" ;
+ VPres Ind Pl P1 Active _ => paIz+ "ουμε" ;
+ VPres Ind Pl P2 Active _ => paIz + "ετε" ;
+ VPres Ind Pl P3 Active _ => paIz + "ουν" ;
+
+ VPres Ind Sg P1 Passive _ => paIz + "ομαι" ;
+ VPres Ind Sg P2 Passive _ => paIz + "εσαι" ;
+ VPres Ind Sg P3 Passive _=> paIz + "εται" ;
+ VPres Ind Pl P1 Passive _=> p + "όμαστε" ;
+ VPres Ind Pl P2 Passive _ => paIz + "εστε" ;
+ VPres Ind Pl P3 Passive _ => paIz + "ονται" ;
+
+ VPres _ Sg P1 Active _ => paIksw ;
+ VPres _ Sg P2 Active _ => paIks + "εις" ;
+ VPres _ Sg P3 Active _ => paIks + "ει" ;
+ VPres _ Pl P1 Active _=> paIks + "ουμε" ;
+ VPres _ Pl P2 Active _ => paIks + "ετε" ;
+ VPres _ Pl P3 Active _ => paIks + "ουν" ;
+
+ VPres _ Sg P1 Passive _ => p1 + "ώ" ;
+ VPres _ Sg P2 Passive _ => p1 + "είς" ;
+ VPres _ Sg P3 Passive _ => p1 + "εί" ;
+ VPres _ Pl P1 Passive _ => p1 + "ούμε" ;
+ VPres _ Pl P2 Passive _ => p1 + "είτε" ;
+ VPres _ Pl P3 Passive _ => p1 + "ούν" ;
+
+ VPast _ Sg P1 Active Perf => Epeksa ;
+ VPast _ Sg P2 Active Perf=> Epeks + "ες" ;
+ VPast _ Sg P3 Active Perf => Epeks + "ε" ;
+ VPast _ Pl P1 Active Perf => paIks + "αμε" ;
+ VPast _ Pl P2 Active Perf => paIks + "ατε" ;
+ VPast _ Pl P3 Active Perf => Epeks + "αν" ;
+
+ VPast _ Sg P1 Passive Perf => De + "ηκα" ;
+ VPast _ Sg P2 Passive Perf => De + "ηκες" ;
+ VPast _ Sg P3 Passive Perf => De + "ηκε" ;
+ VPast _ Pl P1 Passive Perf => p1 + "ήκαμε" ;
+ VPast _ Pl P2 Passive Perf=> p1 + "ήκατε" ;
+ VPast _ Pl P3 Passive Perf => De + "ηκαν" ;
+
+ VPast _ Sg P1 Active Imperf => Epeza ;
+ VPast _ Sg P2 Active Imperf => Epez + "ες" ;
+ VPast _ Sg P3 Active Imperf => Epez + "ε" ;
+ VPast _ Pl P1 Active Imperf => paIz + "αμε" ;
+ VPast _ Pl P2 Active Imperf => paIz + "ατε" ;
+ VPast _ Pl P3 Active Imperf => Epez + "αν" ;
+
+ VPast _ Sg P1 Passive Imperf=> p + "όμουν" ;
+ VPast _ Sg P2 Passive Imperf => p + "όσουν" ;
+ VPast _ Sg P3 Passive Imperf => p + "όταν" ;
+ VPast _ Pl P1 Passive Imperf => p + "όμασταν" ;
+ VPast _ Pl P2 Passive Imperf=> p + "όσασταν" ;
+ VPast _ Pl P3 Passive Imperf => p + "όντουσαν" ;
+
+ VNonFinite Active => paIks + "ει" ;
+ VNonFinite Passive => p1 + "εί" ;
+
+ VImperative Perf Sg Active=> Imp2 ;
+ VImperative Perf Pl Active => Imp ;
+ VImperative Imperf Sg Active => Imp3 ;
+ VImperative Imperf Pl Active => paIz + "ετε" ;
+
+ VImperative _ Sg Passive => mkImperPassive paIks + "ου" ;
+ VImperative _ Pl Passive => p1 + "είτε" ;
+
+ Gerund => paIz + "οντας" ;
+
+ Participle d g n c => (regAdj part).s !d! g !n !c
+ }
+ };
+
+ ---for verbs of First Conjugation, imperative typeA----
+ Verb1a : (x1,_,_,_ : Str) -> Verb = \ paIzw, paIksw, Epeksa, Epeza->
+ let
+ paIz = init paIzw ;
+ paIks = init paIksw ;
+ Epeks = init Epeksa;
+ Epez = init Epeza;
+ De = mkStem paIzw;
+ p = mkVerbStem paIz;
+ p1 = mkVerbStem De ;
+ Imp = mkImper paIks ;
+ Imp2 = paIks + "ε";
+ Imp3 = paIz + "ε";
+ part= mkPartStem p1;
+ in
+ mkVerb1 paIzw paIksw Epeksa Epeza paIz paIks Epeks Epez De p p1 Imp Imp2 Imp3 part;
+
+ ---for verbs of first Conjugation, imperative typeB----
+ Verb1b : (x1,_,_,_ : Str) -> Verb = \ anoIgw, anoIksw, Anoiksa, Anoiga->
+ let
+ anoIg = init anoIgw ;
+ anoIks = init anoIksw ;
+ Anoiks = init Anoiksa;
+ Anoig = init Anoiga;
+ De = mkStem anoIgw;
+ p = mkVerbStem anoIg;
+ p1 = mkVerbStem De ;
+ Imp = mkImper anoIks ;
+ Imp2 = Anoiks + "ε";
+ Imp3 = Anoig + "ε";
+ part= mkPartStem p1;
+ in
+ mkVerb1 anoIgw anoIksw Anoiksa Anoiga anoIg anoIks Anoiks Anoig De p p1 Imp Imp2 Imp3 part;
+
+
+
+ ---for verbs of first Conjugation,Stem2, imperative typeA----
+ Verb1c : (x1,_,_,_ : Str) -> Verb = \ kleInw, kleIsw, Ekleisa, Ekleina->
+ let
+ kleIn = init kleInw ;
+ kleIs = init kleIsw ;
+ Ekleis = init Ekleisa;
+ Eklein = init Ekleina;
+ De = mkStem2 kleIsw;
+ p = mkVerbStem kleIn;
+ p1 = mkVerbStem De ;
+ Imp = mkImper kleIs ;
+ Imp2 = kleIs+ "ε" ;
+ Imp3 = kleIn + "ε";
+ part= mkPartStem p1;
+ in
+ mkVerb1 kleInw kleIsw Ekleisa Ekleina kleIn kleIs Ekleis Eklein De p p1 Imp Imp2 Imp3 part ;
+
+
+ ---for verbs of first Conjugation,Stem2, imperative typeB----
+ Verb1d : (x1,_,_,_ : Str) -> Verb = \ didAskw, didAksw, dIdaksa, dIdaska->
+ let
+ didAsk = init didAskw ;
+ didAks = init didAksw ;
+ dIdaks = init dIdaksa;
+ dIdask = init dIdaska;
+ De = mkStem2 didAksw;
+ p = mkVerbStem dIdask;
+ p1 = mkVerbStem De ;
+ Imp = mkImper didAks ;
+ Imp2 = dIdaks + "ε" ;
+ Imp3 = dIdask + "ε";
+ part= mkPartStem p1;
+ in
+ mkVerb1 didAskw didAksw dIdaksa dIdaska didAsk didAks dIdaks dIdask De p p1 Imp Imp2 Imp3 part;
+
+ ----Verbs First Conjugation, stem3, alternative endings------
+ mkVerb1x : (idrYw,idrY,p,idrYsw,idrYs,p1,Idrysa,Idrys,De,Idry,idrY,Idrya,Imp,Imp2,part,ImpP : Str) -> Verb =
+ \idrYw,idrY,p,idrYsw,idrYs,p1,Idrysa,Idrys,De,Idry,idrY,Idrya,Imp,Imp2,part,ImpP-> {
+ s = table {
+ VPres Ind Sg P1 Active _ => idrYw ;
+ VPres Ind Sg P2 Active _ => idrY + "εις" ;
+ VPres Ind Sg P3 Active _=> idrY + "ει" ;
+ VPres Ind Pl P1 Active _ => idrY+ "ουμε" ;
+ VPres Ind Pl P2 Active _ => idrY + "ετε" ;
+ VPres Ind Pl P3 Active _ => idrY + "ουν" ;
+
+ VPres Ind Sg P1 Passive _ => idrY + "ομαι" ;
+ VPres Ind Sg P2 Passive _ => idrY + "εσαι" ;
+ VPres Ind Sg P3 Passive _=> idrY + "εται" ;
+ VPres Ind Pl P1 Passive _=> p + "όμαστε" ;
+ VPres Ind Pl P2 Passive _ => idrY + "εστε" ;
+ VPres Ind Pl P3 Passive _ => idrY + "ονται" ;
+
+ VPres _ Sg P1 Active _ => idrYsw ;
+ VPres _ Sg P2 Active _ => idrYs + "εις" ;
+ VPres _ Sg P3 Active _ => idrYs + "ει" ;
+ VPres _ Pl P1 Active _=> idrYs + "ουμε" ;
+ VPres _ Pl P2 Active _ => idrYs + "ετε" ;
+ VPres _ Pl P3 Active _ => idrYs + "ουν" ;
+
+ VPres _ Sg P1 Passive _ => p1 + "ώ" ;
+ VPres _ Sg P2 Passive _ => p1 + "είς" ;
+ VPres _ Sg P3 Passive _ => p1 + "εί" ;
+ VPres _ Pl P1 Passive _ => p1 + "ούμε" ;
+ VPres _ Pl P2 Passive _ => p1 + "είτε" ;
+ VPres _ Pl P3 Passive _ => p1 + "ούν" ;
+
+ VPast _ Sg P1 Active Perf => Idrysa ;
+ VPast _ Sg P2 Active Perf=> Idrys + "ες" ;
+ VPast _ Sg P3 Active Perf => Idrys + "ε" ;
+ VPast _ Pl P1 Active Perf => idrYs + "αμε" ;
+ VPast _ Pl P2 Active Perf => idrYs + "ατε" ;
+ VPast _ Pl P3 Active Perf => Idrys + "αν" ;
+
+ VPast _ Sg P1 Passive Perf => De + "ηκα" ;
+ VPast _ Sg P2 Passive Perf => De + "ηκες" ;
+ VPast _ Sg P3 Passive Perf => De + "ηκε" ;
+ VPast _ Pl P1 Passive Perf => p1 + "ήκαμε" ;
+ VPast _ Pl P2 Passive Perf=> p1 + "ήκατε" ;
+ VPast _ Pl P3 Passive Perf => De + "ηκαν" ;
+
+ VPast _ Sg P1 Active Imperf => Idrya ;
+ VPast _ Sg P2 Active Imperf => Idry + "ες" ;
+ VPast _ Sg P3 Active Imperf => Idry + "ε" ;
+ VPast _ Pl P1 Active Imperf => idrY + "αμε" ;
+ VPast _ Pl P2 Active Imperf => idrY + "ατε" ;
+ VPast _ Pl P3 Active Imperf => Idry + "αν" ;
+
+ VPast _ Sg P1 Passive Imperf=> p + "όμουν" ;
+ VPast _ Sg P2 Passive Imperf => p + "όσουν" ;
+ VPast _ Sg P3 Passive Imperf => p + "όταν" ;
+ VPast _ Pl P1 Passive Imperf => p + "όμασταν" ;
+ VPast _ Pl P2 Passive Imperf=> p + "όσασταν" ;
+ VPast _ Pl P3 Passive Imperf => p + "όντουσαν" ;
+
+ VNonFinite Active => idrYs + "ει" ;
+ VNonFinite Passive => p1 + "εί" ;
+
+ VImperative Perf Sg Active=> Imp2;
+ VImperative Perf Pl Active => Imp ;
+ VImperative Imperf Sg Active => Idry + "ε" ;
+ VImperative Imperf Pl Active => idrY + "ετε" ;
+
+ VImperative _ Sg Passive => ImpP;
+ VImperative _ Pl Passive => p1 + "είτε" ;
+
+ Gerund => idrY + "οντας" ;
+
+ Participle d g n c => (regAdj part).s !d! g !n !c
+ }
+ } ;
+
+
+
+
+ Verb1dx : (x1,_,_,_ : Str) -> Verb = \idrYw, idrYsw, Idrysa, Idrya->
+ let
+ idrYs = init idrYsw ;
+ Idrys = init Idrysa ;
+ idrY = init idrYw;
+ Idry = init Idrya;
+ De = mkStem3 idrYsw;
+ p = mkVerbStem Idry;
+ p1 = mkVerbStem De ;
+ Imp = mkImper idrYs;
+ Imp2 = Idrys + "ε" ;
+ part= mkPartStem p1;
+ ImpP = idrYs + "ου" ;
+ in
+ mkVerb1x idrYw idrY p idrYsw idrYs p1 Idrysa Idrys De Idry idrY Idrya Imp Imp2 part ImpP;
+
+
+ -----verbs with prepositional prefix-----
+ Verb1prepSuf : (x1,_,_,_ : Str) -> Verb = \ syndEo, syndEso, synEdesa, synEdea->
+ let
+ syndEs = init syndEso ;
+ synEdes = init synEdesa ;
+ syndE = init syndEo;
+ synEde = init synEdea;
+ syndEth = mkStem3 syndEso;
+ synde = mkVerbStem syndE;
+ syndeth = mkVerbStem syndEth ;
+ syndEste = mkImper syndEs;
+ Imp2 = synEdes + "ε" ;
+ part= mkPartStem syndeth;
+ ImpP = syndEs + "ου" ;
+ in
+ mkVerb1x syndEo syndE synde syndEso syndEs syndeth synEdesa synEdes syndEth synEde syndE synEdea syndEste Imp2 part ImpP ;
+
+
+ Verb1dxx : (x1,_,_,_ : Str) -> Verb = \ mathaInw, mAthw, Ematha, mAthaina->
+ let
+ mAth = init mAthw ;
+ Emath = init Ematha ;
+ mathaIn = init mathaInw;
+ mAthain = init mAthaina;
+ matheUt = mkStem3 mAthw;
+ matheut = mkVerbStem matheUt ;
+ matheu = init matheut;
+ mAthete = mkImper mAth;
+ Imp2 = mAth + "ε" ;
+ part= mkPartStem matheut;
+ ImpP = matheu + "σου" ;
+ in
+ mkVerb1x mathaInw mathaIn matheu mAthw mAth matheut Ematha Emath matheUt mAthain mathaIn mAthaina mAthete Imp2 part ImpP;
+
+ Verb1dxxx : (x1,_,_,_ : Str) -> Verb = \ lamvAnw, lAvw, Elava, lAmvana->
+ let
+ lAv = init lAvw ;
+ Elav = init Elava ;
+ lamvAn = init lamvAnw;
+ lAmvan = init lAmvana;
+ lIfth = mkStem3 lAvw ;
+ lifth = mkVerbStem lIfth ;
+ lamvan = mkVerbStem lAmvan;
+ lAvete = mkImper lAv;
+ Imp2 = lAv + "ε" ;
+ ImpP = " " ;
+ part= mkPartStem lIfth;
+ in
+ mkVerb1x lamvAnw lamvAn lamvan lAvw lAv lifth Elava Elav lIfth lAmvan lamvAn lAmvana lAvete Imp2 part ImpP;
+
+
+
+ ---------Verbs of Second Conjugation, Type A -----------------
+ mkVerb2A : (x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13 : Str) -> Verb = \agapW, agapIsw,agApisa, agapoYsa, agap, agapIs,agApis, agapoYs, De,p1, Imp, agAp,part ->
+ {
+ s = table {
+ VPres Ind Sg P1 Active _ => agapW ;
+ VPres Ind Sg P2 Active _ => agap + "άς" ;
+ VPres Ind Sg P3 Active _=> agap + "ά" ;
+ VPres Ind Pl P1 Active _ => agap+ "άμε" ;
+ VPres Ind Pl P2 Active _ => agap + "άτε" ;
+ VPres Ind Pl P3 Active _ => agap + "ούν" ;
+
+ VPres Ind Sg P1 Passive _ => agap + "ιέμαι" ;
+ VPres Ind Sg P2 Passive _ => agap + "ιέσαι" ;
+ VPres Ind Sg P3 Passive _=> agap + "ιέται" ;
+ VPres Ind Pl P1 Passive _=> agap + "ιόμαστε" ;
+ VPres Ind Pl P2 Passive _ => agap + "ιέστε" ;
+ VPres Ind Pl P3 Passive _ => agap + "ιούνται" ;
+
+ VPres _ Sg P1 Active _ => agapIsw ;
+ VPres _ Sg P2 Active _ => agapIs + "εις" ;
+ VPres _ Sg P3 Active _ => agapIs + "ει" ;
+ VPres _ Pl P1 Active _=> agapIs + "ουμε" ;
+ VPres _ Pl P2 Active _ => agapIs + "ετε" ;
+ VPres _ Pl P3 Active _ => agapIs + "ουν" ;
+
+ VPres _ Sg P1 Passive _ => p1 + "ώ" ;
+ VPres _ Sg P2 Passive _ => p1 + "είς" ;
+ VPres _ Sg P3 Passive _ => p1 + "εί" ;
+ VPres _ Pl P1 Passive _ => p1 + "ούμε" ;
+ VPres _ Pl P2 Passive _ => p1 + "είτε" ;
+ VPres _ Pl P3 Passive _ => p1 + "ούν" ;
+
+ VPast _ Sg P1 Active Perf => agApisa ;
+ VPast _ Sg P2 Active Perf=> agApis + "ες" ;
+ VPast _ Sg P3 Active Perf => agApis + "ε" ;
+ VPast _ Pl P1 Active Perf => agapIs + "αμε" ;
+ VPast _ Pl P2 Active Perf => agapIs + "ατε" ;
+ VPast _ Pl P3 Active Perf => agApis + "αν" ;
+
+ VPast _ Sg P1 Passive Perf => De + "ηκα" ;
+ VPast _ Sg P2 Passive Perf => De + "ηκες" ;
+ VPast _ Sg P3 Passive Perf => De + "ηκε" ;
+ VPast _ Pl P1 Passive Perf => p1 + "ήκαμε" ;
+ VPast _ Pl P2 Passive Perf=> p1 + "ήκατε" ;
+ VPast _ Pl P3 Passive Perf => De + "ηκαν" ;
+
+ VPast _ Sg P1 Active Imperf => agapoYsa ;
+ VPast _ Sg P2 Active Imperf => agapoYs + "ες" ;
+ VPast _ Sg P3 Active Imperf => agapoYs + "ε" ;
+ VPast _ Pl P1 Active Imperf => agapoYs + "αμε" ;
+ VPast _ Pl P2 Active Imperf => agapoYs + "ατε" ;
+ VPast _ Pl P3 Active Imperf => agapoYs + "αν" ;
+
+ VPast _ Sg P1 Passive Imperf=> agap + "ιόμουν" ;
+ VPast _ Sg P2 Passive Imperf => agap + "ιόσουν" ;
+ VPast _ Sg P3 Passive Imperf => agap + "ιόταν" ;
+ VPast _ Pl P1 Passive Imperf => agap + "ιόμασταν" ;
+ VPast _ Pl P2 Passive Imperf=> agap + "ιόσασταν" ;
+ VPast _ Pl P3 Passive Imperf => agap + "ιόντουσαν" ;
+
+ VNonFinite Active => agapIs + "ει" ;
+ VNonFinite Passive => p1 + "εί" ;
+
+ VImperative Perf Sg Active=> agApis + "ε" ;
+ VImperative Perf Pl Active => Imp ;
+ VImperative Imperf Sg Active => agAp + "α" ;
+ VImperative Imperf Pl Active => agap + "άτε" ;
+
+ VImperative _ Sg Passive => agapIs + "ου" ;
+ VImperative _ Pl Passive => p1 + "είτε" ;
+
+ Gerund => agap + "ώντας" ;
+
+ Participle d g n c => (regAdj part).s !d! g !n !c
+ }
+ };
+
+ ---for verbs of second Conjugation, typeA, using stem4------
+ Verb2a : (x1,_,_,_ : Str) -> Verb = \agapW, agapIsw,agApisa, agapoYsa->
+ let
+ agap = init agapW ;
+ agapIs = init agapIsw ;
+ agApis = init agApisa ;
+ agapoYs = init agapoYsa ;
+ De = mkStem4 agapIs ;
+ p1 = mkVerbStem De ;
+ Imp = mkImper agapIs ;
+ part = mkPartStem p1 ;
+ agAp = Predef.tk 2 agApis ;
+ in
+ mkVerb2A agapW agapIsw agApisa agapoYsa agap agapIs agApis agapoYs De p1 Imp agAp part;
+
+
+ ---for verbs of second Conjugation, typeA, using stem5------
+ Verb2b : (x1,_,_,_ : Str) -> Verb = \ forW, forEsw, fOresa, foroYsa->
+ let
+ for = init forW ;
+ forEs = init forEsw ;
+ fOres = init fOresa ;
+ foroYs = init foroYsa ;
+ De = mkStem5 forEs ;
+ p1 = mkVerbStem De ;
+ Imp = mkImper forEs ;
+ part = mkPartStem p1 ;
+ fOr = Predef.tk 2 fOres ;
+ in
+ mkVerb2A forW forEsw fOresa foroYsa for forEs fOres foroYs De p1 Imp fOr part;
+
+
+ ---for verbs of second Conjugation, typeA, using stem4, with extra consonant in the imperative------
+ Verb2c : (x1,_,_,_ : Str) -> Verb = \ xepernW, xeperAsw, xepErasa, xepernoYsa->
+ let
+ xepern = init xepernW ;
+ xeperAs = init xeperAsw ;
+ xepEras = init xepErasa ;
+ xepernoYs = init xepernoYsa ;
+ De = mkStem4 xeperAs ;
+ p1 = mkVerbStem De ;
+ Imp = mkImper xeperAs ;
+ part = mkPartStem p1 ;
+ xepEr = Predef.tk 2 xepEras + "v" ;
+ in
+ mkVerb2A xepernW xeperAsw xepErasa xepernoYsa xepern xeperAs xepEras xepernoYs De p1 Imp xepEr part;
+
+
+
+
+
+ ---------Verbs of Second Conjugation, Type B -----------------
+ mkVerb2B : (x1,_,_,_,_,_,_,_,_,_,_,_: Str) -> Verb = \theoro,theoriso,theorisa, theorousa,theor,theorIs,theOris,theoroYs, De, p1, Imp,part ->
+ {
+ s = table {
+ VPres Ind Sg P1 Active _ => theoro ;
+ VPres Ind Sg P2 Active _ => theor + "είς" ;
+ VPres Ind Sg P3 Active _=> theor + "εί" ;
+ VPres Ind Pl P1 Active _ => theor+ "ούμε" ;
+ VPres Ind Pl P2 Active _ => theor + "είτε" ;
+ VPres Ind Pl P3 Active _ => theor + "ούν" ;
+
+ VPres Ind Sg P1 Passive _ => theor + "ούμαι" ;
+ VPres Ind Sg P2 Passive _ => theor + "είσαι" ;
+ VPres Ind Sg P3 Passive _=> theor + "είται" ;
+ VPres Ind Pl P1 Passive _=> theor + "ούμαστε" ;
+ VPres Ind Pl P2 Passive _ => theor + "είστε" ;
+ VPres Ind Pl P3 Passive _ => theor + "ούνται" ;
+
+ VPres _ Sg P1 Active _ => theoriso ;
+ VPres _ Sg P2 Active _ => theorIs + "εις" ;
+ VPres _ Sg P3 Active _ => theorIs + "ει" ;
+ VPres _ Pl P1 Active _=> theorIs + "ουμε" ;
+ VPres _ Pl P2 Active _ => theorIs + "ετε" ;
+ VPres _ Pl P3 Active _ => theorIs + "ουν" ;
+
+ VPres _ Sg P1 Passive _ => p1 + "ώ" ;
+ VPres _ Sg P2 Passive _ => p1 + "είς" ;
+ VPres _ Sg P3 Passive _ => p1 + "εί" ;
+ VPres _ Pl P1 Passive _ => p1 + "ούμε" ;
+ VPres _ Pl P2 Passive _ => p1 + "είτε" ;
+ VPres _ Pl P3 Passive _ => p1 + "ούν" ;
+
+ VPast _ Sg P1 Active Perf => theorisa ;
+ VPast _ Sg P2 Active Perf=> theOris + "ες" ;
+ VPast _ Sg P3 Active Perf => theOris + "ε" ;
+ VPast _ Pl P1 Active Perf => theorIs + "αμε" ;
+ VPast _ Pl P2 Active Perf => theorIs + "ατε" ;
+ VPast _ Pl P3 Active Perf => theOris + "αν" ;
+
+ VPast _ Sg P1 Passive Perf => De + "ηκα" ;
+ VPast _ Sg P2 Passive Perf => De + "ηκες" ;
+ VPast _ Sg P3 Passive Perf => De + "ηκε" ;
+ VPast _ Pl P1 Passive Perf => p1 + "ήκαμε" ;
+ VPast _ Pl P2 Passive Perf=> p1 + "ήκατε" ;
+ VPast _ Pl P3 Passive Perf => De + "ηκαν" ;
+
+ VPast _ Sg P1 Active Imperf => theorousa ;
+ VPast _ Sg P2 Active Imperf => theoroYs + "ες" ;
+ VPast _ Sg P3 Active Imperf => theoroYs + "ε" ;
+ VPast _ Pl P1 Active Imperf => theoroYs + "αμε" ;
+ VPast _ Pl P2 Active Imperf => theoroYs + "ατε" ;
+ VPast _ Pl P3 Active Imperf => theoroYs + "αν" ;
+
+ VPast _ Sg P1 Passive Imperf=> theor + "ούμουν" ;
+ VPast _ Sg P2 Passive Imperf => theor + "ούσουν" ;
+ VPast _ Sg P3 Passive Imperf => theor + "ούνταν" ;
+ VPast _ Pl P1 Passive Imperf => theor + "ούμασταν" ;
+ VPast _ Pl P2 Passive Imperf=> theor + "ούσασταν" ;
+ VPast _ Pl P3 Passive Imperf => theor + "ούνταν" ;
+
+ VNonFinite Active => theorIs + "ει" ;
+ VNonFinite Passive => p1 + "εί" ;
+
+ VImperative Perf Sg Active=> theOris + "ε" ;
+ VImperative Perf Pl Active => Imp ;
+ VImperative Imperf Sg Active => " ";
+ VImperative Imperf Pl Active => theor + "είτε" ;
+
+ VImperative _ Sg Passive => theorIs + "ου" ;
+ VImperative _ Pl Passive => p1 + "είτε" ;
+
+ Gerund => theor + "ώντας" ;
+
+ Participle d g n c => (regAdj part).s !d! g !n !c
+ }
+ };
+
+
+ ---for verbs of second Conjugation, typeB, Stem4------
+ Verb2Ba : (x1,_,_,_ : Str) -> Verb = \theorW, theorIsw, theOrisa, theoroYsa->
+ let
+ theor = init theorW ;
+ theorIs = init theorIsw ;
+ theOris = init theOrisa ;
+ theoroYs = init theoroYsa ;
+ De = mkStem4 theorIs ;
+ p1 = mkVerbStem De ;
+ Imp = mkImper theorIs ;
+ part = mkPartStem p1 ;
+ in
+ mkVerb2B theorW theorIsw theOrisa theoroYsa theor theorIs theOris theoroYs De p1 Imp part ;
+
+ Verb2Bb : (x1,_,_,_ : Str) -> Verb = \afairW, afairEsw, afaIresa, afairoYsa->
+ let
+ afair = init afairW ;
+ afairEs = init afairEsw ;
+ afaIres = init afaIresa ;
+ afairoYs = init afairoYsa ;
+ De = mkStem5 afairEs ;
+ p1 = mkVerbStem De ;
+ Imp = mkImper afairEs ;
+ part = mkPartStem p1 ;
+ in
+ mkVerb2B afairW afairEsw afaIresa afairoYsa afair afairEs afaIres afairoYs De p1 Imp part ;
+
+
+
+
+ ---------Verbs of Second Conjugation, Type B, different endings in passive -----------------
+ mkVerb2B3 : (x1,_,_,_ : Str) -> Verb = \miso,misiso,misisa, misousa->
+ let
+ mis = init miso ;
+ misIs = init misiso ;
+ mIsis = init misisa ;
+ misoYs = init misousa ;
+ De = mkStem4 misIs ;
+ p1 = mkVerbStem De ;
+ Imp = mkImper misIs ;
+ part = mkPartStem p1 ;
+ in
+ {
+ s = table {
+ VPres Ind Sg P1 Active _ => miso ;
+ VPres Ind Sg P2 Active _ => mis + "είς" ;
+ VPres Ind Sg P3 Active _=> mis + "εί" ;
+ VPres Ind Pl P1 Active _ => mis+ "ούμε" ;
+ VPres Ind Pl P2 Active _ => mis + "είτε" ;
+ VPres Ind Pl P3 Active _ => mis + "ούν" ;
+
+ VPres Ind Sg P1 Passive _ => mis + "ιέμαι" ;
+ VPres Ind Sg P2 Passive _ => mis + "ιέσαι" ;
+ VPres Ind Sg P3 Passive _=> mis + "ιέται" ;
+ VPres Ind Pl P1 Passive _=> mis + "ιόμαστε" ;
+ VPres Ind Pl P2 Passive _ => mis + "ιέστε" ;
+ VPres Ind Pl P3 Passive _ => mis + "ιούνται" ;
+
+ VPres _ Sg P1 Active _ => misiso ;
+ VPres _ Sg P2 Active _ => misIs + "εις" ;
+ VPres _ Sg P3 Active _ => misIs + "ει" ;
+ VPres _ Pl P1 Active _=> misIs + "ουμε" ;
+ VPres _ Pl P2 Active _ => misIs + "ετε" ;
+ VPres _ Pl P3 Active _ => misIs + "ουν" ;
+
+ VPres _ Sg P1 Passive _ => p1 + "ώ" ;
+ VPres _ Sg P2 Passive _ => p1 + "είς" ;
+ VPres _ Sg P3 Passive _ => p1 + "εί" ;
+ VPres _ Pl P1 Passive _ => p1 + "ούμε" ;
+ VPres _ Pl P2 Passive _ => p1 + "είτε" ;
+ VPres _ Pl P3 Passive _ => p1 + "ούν" ;
+
+ VPast _ Sg P1 Active Perf => misisa ;
+ VPast _ Sg P2 Active Perf=> mIsis + "ες" ;
+ VPast _ Sg P3 Active Perf => mIsis + "ε" ;
+ VPast _ Pl P1 Active Perf => misIs + "αμε" ;
+ VPast _ Pl P2 Active Perf => misIs + "ατε" ;
+ VPast _ Pl P3 Active Perf => mIsis + "αν" ;
+
+ VPast _ Sg P1 Passive Perf => De + "ηκα" ;
+ VPast _ Sg P2 Passive Perf => De + "ηκες" ;
+ VPast _ Sg P3 Passive Perf => De + "ηκε" ;
+ VPast _ Pl P1 Passive Perf => p1 + "ήκαμε" ;
+ VPast _ Pl P2 Passive Perf=> p1 + "ήκατε" ;
+ VPast _ Pl P3 Passive Perf => De + "ηκαν" ;
+
+ VPast _ Sg P1 Active Imperf => misousa ;
+ VPast _ Sg P2 Active Imperf => misoYs + "ες" ;
+ VPast _ Sg P3 Active Imperf => misoYs + "ε" ;
+ VPast _ Pl P1 Active Imperf => misoYs + "αμε" ;
+ VPast _ Pl P2 Active Imperf => misoYs + "ατε" ;
+ VPast _ Pl P3 Active Imperf => misoYs + "αν" ;
+
+ VPast _ Sg P1 Passive Imperf=> mis + "ιόμουν" ;
+ VPast _ Sg P2 Passive Imperf => mis + "ιόσουν" ;
+ VPast _ Sg P3 Passive Imperf => mis + "ιόταν" ;
+ VPast _ Pl P1 Passive Imperf => mis + "ιόμασταν" ;
+ VPast _ Pl P2 Passive Imperf=> mis + "ιόσασταν" ;
+ VPast _ Pl P3 Passive Imperf => mis + "ιόντουσαν" ;
+
+ VNonFinite Active => misIs + "ει" ;
+ VNonFinite Passive => p1 + "εί" ;
+
+ VImperative Perf Sg Active=> mIsis + "ε" ;
+ VImperative Perf Pl Active => Imp ;
+ VImperative Imperf Sg Active => " ";
+ VImperative Imperf Pl Active => mis + "είτε" ;
+
+ VImperative _ Sg Passive => misIs + "ου" ;
+ VImperative _ Pl Passive => Imp + "είτε" ;
+
+ Gerund => mis + "ώντας" ;
+
+ Participle d g n c => (regAdj part).s !d! g !n !c
+ }
+ };
+
+
+ ------Contracted Verbs. ----------
+ mkVerbContrac : (x1,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Verb = \akoUw, akoUsw, Akouga, Akousa, akoU, akoUs, Akoug, Akous, akou, akoUst, akoust, Imp, Imp2, part->
+ {
+ s = table {
+ VPres Ind Sg P1 Active _ => akoU + "ω" ;
+ VPres Ind Sg P2 Active _ => akoU + "ς" ;
+ VPres Ind Sg P3 Active _=> akoU + "ει" ;
+ VPres Ind Pl P1 Active _ => akoU + "με" ;
+ VPres Ind Pl P2 Active _ => akoU + "τε" ;
+ VPres Ind Pl P3 Active _ => akoU + "νε" ;
+
+ VPres Ind Sg P1 Passive _ => akoU + mkContr akoUw + "ομαι" ;
+ VPres Ind Sg P2 Passive _ => akoU + mkContr akoUw +"εσαι" ;
+ VPres Ind Sg P3 Passive _=> akoU + mkContr akoUw +"εται" ;
+ VPres Ind Pl P1 Passive _=> akou + mkContr akoUw +"όμαστε" ;
+ VPres Ind Pl P2 Passive _ => akoU +mkContr akoUw + "εστε" ;
+ VPres Ind Pl P3 Passive _ => akoU + mkContr akoUw +"ονται" ;
+
+ VPres _ Sg P1 Active _ => akoUsw ;
+ VPres _ Sg P2 Active _ => akoUs + "εις" ;
+ VPres _ Sg P3 Active _ => akoUs + "ει" ;
+ VPres _ Pl P1 Active _=> akoUs + "ουμε" ;
+ VPres _ Pl P2 Active _ => akoUs + "ετε" ;
+ VPres _ Pl P3 Active _ => akoUs + "ουν" ;
+
+ VPres _ Sg P1 Passive _ => akoust + "ώ" ;
+ VPres _ Sg P2 Passive _ => akoust + "είς" ;
+ VPres _ Sg P3 Passive _ => akoust + "εί" ;
+ VPres _ Pl P1 Passive _ => akoust + "ούμε" ;
+ VPres _ Pl P2 Passive _ => akoust + "είτε" ;
+ VPres _ Pl P3 Passive _ => akoust + "ούν" ;
+
+ VPast _ Sg P1 Active Perf => Akousa ;
+ VPast _ Sg P2 Active Perf=> Akous + "ες" ;
+ VPast _ Sg P3 Active Perf => Akous+ "ε" ;
+ VPast _ Pl P1 Active Perf => akoUs + "αμε" ;
+ VPast _ Pl P2 Active Perf => akoUs + "ατε" ;
+ VPast _ Pl P3 Active Perf => Akous+ "αν" ;
+
+ VPast _ Sg P1 Passive Perf => akoUst + "ηκα" ;
+ VPast _ Sg P2 Passive Perf => akoUst + "ηκες" ;
+ VPast _ Sg P3 Passive Perf => akoUst + "ηκε" ;
+ VPast _ Pl P1 Passive Perf => akoust + "ήκαμε" ;
+ VPast _ Pl P2 Passive Perf=> akoust + "ήκατε" ;
+ VPast _ Pl P3 Passive Perf => akoUst + "ηκαν" ;
+
+
+ VPast _ Sg P1 Active Imperf => Akouga ;
+ VPast _ Sg P2 Active Imperf => Akoug + "ες" ;
+ VPast _ Sg P3 Active Imperf => Akoug + "ε" ;
+ VPast _ Pl P1 Active Imperf => akoU + "γ" +"αμε" ;
+ VPast _ Pl P2 Active Imperf => akoU +"γ" + "ατε" ;
+ VPast _ Pl P3 Active Imperf => Akoug + "αν" ;
+
+ VPast _ Sg P1 Passive Imperf=> akou + mkContr akoUw + "όμουν" ;
+ VPast _ Sg P2 Passive Imperf => akou + mkContr akoUw + "όσουν" ;
+ VPast _ Sg P3 Passive Imperf => akou + mkContr akoUw + "όταν" ;
+ VPast _ Pl P1 Passive Imperf => akou + mkContr akoUw + "όμασταν" ;
+ VPast _ Pl P2 Passive Imperf=> akou + mkContr akoUw + "όσασταν" ;
+ VPast _ Pl P3 Passive Imperf => akou + mkContr akoUw + "όντουσαν" ;
+
+ VNonFinite Active => akoUs + "ει" ;
+ VNonFinite Passive => akoust + "εί" ;
+
+ VImperative Perf Sg Active=> Imp + "ε" ;
+ VImperative Perf Pl Active => akoUs + "τε" ;
+ VImperative Imperf Sg Active => Imp2 + "ε" ;
+ VImperative Imperf Pl Active => akoU + "τε" ;
+
+ VImperative _ Sg Passive => akoUs + "ου" ;
+ VImperative _ Pl Passive => akoust + "είτε" ;
+
+ Gerund =>akoU +mkContr akoUw + "οντας" ;
+
+ Participle d g n c => (regAdj part).s !d! g !n !c
+ }
+ } ;
+
+
+
+ ---for Contracted verbs, more than two syllables----
+ VerbContr : (x1,_,_,_ : Str) -> Verb = \ akoUw, akoUsw, Akouga, Akousa->
+ let
+ akoU = init akoUw ;
+ akoUs = init akoUsw ;
+ Akoug = init Akouga;
+ Akous = init Akousa;
+ akou = mkVerbStem akoU ;
+ akoUst = mkStem2 akoUsw ;
+ akoust = mkVerbStem akoUst ;
+ Imp = Akoug ;
+ Imp2 = Akous ;
+ part= mkPartStem akoust;
+ in
+ mkVerbContrac akoUw akoUsw Akouga Akousa akoU akoUs Akoug Akous akou akoUst akoust Imp Imp2 part;
+
+
+ ---for Contracted verbs, two syllables----
+ VerbContr2 : (x1,_,_,_ : Str) -> Verb = \ klaIw, klApsw, Eklaiga, Eklapsa->
+ let
+ klaI = init klaIw ;
+ klAps = init klApsw ;
+ Eklaig = init Eklaiga;
+ Eklaps = init Eklapsa;
+ klai = mkVerbStem klaI ;
+ klAfth = mkStem2 klApsw ;
+ klafth = mkVerbStem klAfth ;
+ Imp = klAps;
+ Imp2 = klaI + mkContr klaIw;
+ part= mkPartStem klafth;
+ in
+ mkVerbContrac klaIw klApsw Eklaiga Eklapsa klaI klAps Eklaig Eklaps klai klAfth klafth Imp Imp2 part;
+
+
+ ----------------Irregular verbs with _tracted types in Cond------------------------
+ mkVerbContracIrreg : (x1,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Verb = \trWw,fAw,Efaga,Etrwga, trW,fA, Efag, Etrwg, trw, fagWth, fagwth, fag,part ->
+ {
+ s = table {
+ VPres Ind Sg P1 Active _ => trW + "ω" ;
+ VPres Ind Sg P2 Active _ => trW + "ς" ;
+ VPres Ind Sg P3 Active _=> trW + "ει" ;
+ VPres Ind Pl P1 Active _ => trW + "με" ;
+ VPres Ind Pl P2 Active _ => trW + "τε" ;
+ VPres Ind Pl P3 Active _ => trW + "νε" ;
+
+ VPres Ind Sg P1 Passive _ => trW + "γ" + "ομαι" ;
+ VPres Ind Sg P2 Passive _ => trW + "γ" +"εσαι" ;
+ VPres Ind Sg P3 Passive _=> trW + "γ" +"εται" ;
+ VPres Ind Pl P1 Passive _=> trw + "γ" +"όμαστε" ;
+ VPres Ind Pl P2 Passive _ => trw +"γ" + "εστε" ;
+ VPres Ind Pl P3 Passive _ => trW + "γ" +"ονται" ;
+
+ VPres _ Sg P1 Active _ => fAw ;
+ VPres _ Sg P2 Active _ => fA + "ς" ;
+ VPres _ Sg P3 Active _ => fA + "ει" ;
+ VPres _ Pl P1 Active _=> fA + "με" ;
+ VPres _ Pl P2 Active _ => fA + "τε" ;
+ VPres _ Pl P3 Active _ => fA + "νε" ;
+
+ VPres _ Sg P1 Passive _ => fagwth + "ώ" ;
+ VPres _ Sg P2 Passive _ => fagwth + "είς" ;
+ VPres _ Sg P3 Passive _ => fagwth + "εί" ;
+ VPres _ Pl P1 Passive _ => fagwth + "ούμε" ;
+ VPres _ Pl P2 Passive _ => fagwth + "είτε" ;
+ VPres _ Pl P3 Passive _ => fagwth + "ούν" ;
+
+ VPast _ Sg P1 Active Perf => Efaga ;
+ VPast _ Sg P2 Active Perf=> Efag + "ες" ;
+ VPast _ Sg P3 Active Perf => Efag + "ε" ;
+ VPast _ Pl P1 Active Perf => fA + "γ" + "αμε" ;
+ VPast _ Pl P2 Active Perf => fA + "γ" + "ατε" ;
+ VPast _ Pl P3 Active Perf => Efag + "αν" ;
+
+ VPast _ Sg P1 Passive Perf => fagWth + "ηκα" ;
+ VPast _ Sg P2 Passive Perf => fagWth + "ηκες" ;
+ VPast _ Sg P3 Passive Perf => fagWth + "ηκε" ;
+ VPast _ Pl P1 Passive Perf => fagwth + "ήκαμε" ;
+ VPast _ Pl P2 Passive Perf=> fagwth + "ήκατε" ;
+ VPast _ Pl P3 Passive Perf => fagWth + "ηκαν" ;
+
+ VPast _ Sg P1 Active Imperf => Etrwga ;
+ VPast _ Sg P2 Active Imperf => Etrwg + "ες" ;
+ VPast _ Sg P3 Active Imperf => Etrwg + "ε" ;
+ VPast _ Pl P1 Active Imperf => trW + "γ"+ "αμε" ;
+ VPast _ Pl P2 Active Imperf => trW + "γ" + "ατε" ;
+ VPast _ Pl P3 Active Imperf => Etrwg + "αν" ;
+
+ VPast _ Sg P1 Passive Imperf=> fag + "ν" + "όμουν" ;
+ VPast _ Sg P2 Passive Imperf => fag + "ν" + "όσουν" ;
+ VPast _ Sg P3 Passive Imperf => fag + "ν" + "όταν" ;
+ VPast _ Pl P1 Passive Imperf => fag + "ν" + "όμασταν" ;
+ VPast _ Pl P2 Passive Imperf=> fag + "ν" + "όσασταν" ;
+ VPast _ Pl P3 Passive Imperf => fag + "ν" + "όντουσαν" ;
+
+ VNonFinite Active => fA + "ει" ;
+ VNonFinite Passive => fagwth + "εί" ;
+
+ VImperative Perf Sg Active=> fA + "ε" ;
+ VImperative Perf Pl Active => fA + "τε" ;
+ VImperative Imperf Sg Active =>trW + "γ"+ "ε" ;
+ VImperative Imperf Pl Active => trW + "γ"+ "ετε" ;
+
+ VImperative _ Sg Passive => " " ;
+ VImperative _ Pl Passive => fagwth + "είτε" ;
+
+ Gerund => trW + "γ" + "οντας" ;
+
+ Participle d g n c => (regAdj part).s !d! g !n !c
+ }
+ } ;
+
+
+ VerbContrIrreg : (x1,_,_,_ : Str) -> Verb = \ trWw,fAw,Efaga,Etrwga->
+ let
+ trW = init trWw;
+ fA = init fAw;
+ Efag = init Efaga;
+ Etrwg = init Etrwga;
+ trw =mkVerbStem trW;
+ fagWth = mkStem2 fAw;
+ fagwth = mkVerbStem fagWth;
+ fag = init fagwth;
+ part= mkPartStem fagwth;
+ in
+ mkVerbContracIrreg trWw fAw Efaga Etrwga trW fA Efag Etrwg trw fagWth fagwth fag part;
+
+
+ --------------------------------------------IRREGULAR VERBS --------------------------------------------------------------------
+ --------------------------------------------------------------------------------------------------------------------------------
+
+
+ ----------------Irregular verbs.Verbs with Contracted types, but also irregularities in the active dependent form------------------------
+ mkVerbContracIrreg2 : (x1,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Verb = \lEw, pW, eIpa, Elega, lE, p, eIp, Eleg, lEg, leg, eipWth, eipwth,part ->
+ {
+ s = table {
+ VPres Ind Sg P1 Active _ => lE + "ω" ;
+ VPres Ind Sg P2 Active _ => lE + "ς" ;
+ VPres Ind Sg P3 Active _=> lE + "ει" ;
+ VPres Ind Pl P1 Active _ => lE + "με" ;
+ VPres Ind Pl P2 Active _ => lE + "τε" ;
+ VPres Ind Pl P3 Active _ => lE + "νε" ;
+
+ VPres Ind Sg P1 Passive _ => lEg + "ομαι" ;
+ VPres Ind Sg P2 Passive _ => lEg +"εσαι" ;
+ VPres Ind Sg P3 Passive _=> lEg +"εται" ;
+ VPres Ind Pl P1 Passive _=> leg +"όμαστε" ;
+ VPres Ind Pl P2 Passive _ => lEg + "εστε" ;
+ VPres Ind Pl P3 Passive _ => lEg +"ονται" ;
+
+ VPres _ Sg P1 Active _ => pW ;
+ VPres _ Sg P2 Active _ => p + "είς" ;
+ VPres _ Sg P3 Active _ => p + "εί" ;
+ VPres _ Pl P1 Active _=> p + "ούμε" ;
+ VPres _ Pl P2 Active _ => p + "είτε" ;
+ VPres _ Pl P3 Active _ => p + "ούν" ;
+
+ VPres _ Sg P1 Passive _ => eipwth + "ώ" ;
+ VPres _ Sg P2 Passive _ => eipwth + "είς" ;
+ VPres _ Sg P3 Passive _ => eipwth + "εί" ;
+ VPres _ Pl P1 Passive _ => eipwth + "ούμε" ;
+ VPres _ Pl P2 Passive _ => eipwth + "είτε" ;
+ VPres _ Pl P3 Passive _ => eipwth + "ούν" ;
+
+ VPast _ Sg P1 Active Perf => eIpa ;
+ VPast _ Sg P2 Active Perf=> eIp + "ες" ;
+ VPast _ Sg P3 Active Perf => eIp + "ε" ;
+ VPast _ Pl P1 Active Perf => eIp + "αμε" ;
+ VPast _ Pl P2 Active Perf => eIp + "ατε" ;
+ VPast _ Pl P3 Active Perf => eIp + "αν" ;
+
+ VPast _ Sg P1 Passive Perf => eipWth + "ηκα" ;
+ VPast _ Sg P2 Passive Perf => eipWth + "ηκες" ;
+ VPast _ Sg P3 Passive Perf => eipWth + "ηκε" ;
+ VPast _ Pl P1 Passive Perf => eipwth + "ήκαμε" ;
+ VPast _ Pl P2 Passive Perf=> eipwth + "ήκατε" ;
+ VPast _ Pl P3 Passive Perf => eipWth + "ηκαν" ;
+
+ VPast _ Sg P1 Active Imperf => Elega ;
+ VPast _ Sg P2 Active Imperf => Eleg + "ες" ;
+ VPast _ Sg P3 Active Imperf => Eleg + "ε" ;
+ VPast _ Pl P1 Active Imperf => lEg+ "αμε" ;
+ VPast _ Pl P2 Active Imperf => lEg + "ατε" ;
+ VPast _ Pl P3 Active Imperf => Eleg + "αν" ;
+
+ VPast _ Sg P1 Passive Imperf=> leg + "όμουν" ;
+ VPast _ Sg P2 Passive Imperf => leg+ "όσουν" ;
+ VPast _ Sg P3 Passive Imperf => leg +"όταν" ;
+ VPast _ Pl P1 Passive Imperf => leg + "όμασταν" ;
+ VPast _ Pl P2 Passive Imperf=> leg + "όσασταν" ;
+ VPast _ Pl P3 Passive Imperf => leg + "όντουσαν" ;
+
+ VNonFinite Active => p + "εί" ;
+ VNonFinite Passive => eipwth + "εί" ;
+
+ VImperative Perf Sg Active=> p + "ές" ;
+ VImperative Perf Pl Active => p + "είτε" ;
+ VImperative Imperf Sg Active =>lEg + "ε" ;
+ VImperative Imperf Pl Active => lEg + "ετε" ;
+
+ VImperative _ Sg Passive => " " ;
+ VImperative _ Pl Passive => eipwth + "είτε" ;
+
+ Gerund =>lEg + "οντας" ;
+
+ Participle d g n c => (regAdj part).s !d! g !n !c
+ }
+ } ;
+
+
+ VerbContrIrreg2 : (x1,_,_,_ : Str) -> Verb = \lEw,pW,eIpa,Elega->
+ let
+ lE = init lEw;
+ p = init pW;
+ eIp = init eIpa;
+ Eleg = init Elega;
+ lEg = lE + "γ";
+ leg = mkVerbStem lEg ;
+ eipWth = mkStem5 pW;
+ eipwth = mkVerbStem eipWth;
+ part= mkPartStem eipwth;
+ in
+ mkVerbContracIrreg2 lEw pW eIpa Elega lE p eIp Eleg lEg leg eipWth eipwth part;
+
+
+ VerbContrIrreg3 : (x1,_,_,_ : Str) -> Verb = \vlEpw,dW,eIda,Evlepa->
+ let
+ vlEp = init vlEpw;
+ d = init dW;
+ eId = init eIda;
+ Evlep = init Evlepa;
+ eid = mkVerbStem eId;
+ vlep = mkVerbStem vlEp;
+ eidWth = mkStem5 dW;
+ eidwth = mkVerbStem eidWth;
+ part= mkPartStem eidwth;
+ in
+ mkVerbContracIrreg2 vlEpw dW eIda Evlepa vlEp d eId Evlep vlEp vlep eidWth eidwth part;
+
+
+
+
+ -------------Verb Contracted with no passive Perfective ----------------------
+ mkVerbContracIrregNPassPerf : (x1,_,_,_,_,_,_,_,_,_ : Str) -> Verb = \pInw, piW, Ipia, Epina, pIn, pin, pi, Ipi, Epin,part ->
+ {
+ s = table {
+ VPres Ind Sg P1 Active _ => pIn + "ω" ;
+ VPres Ind Sg P2 Active _ => pIn + "εις" ;
+ VPres Ind Sg P3 Active _=> pIn + "ει" ;
+ VPres Ind Pl P1 Active _ => pIn + "ουμε" ;
+ VPres Ind Pl P2 Active _ => pIn + "ετε" ;
+ VPres Ind Pl P3 Active _ => pIn + "ουν" ;
+
+ VPres Ind Sg P1 Passive _ => pIn + "ομαι" ;
+ VPres Ind Sg P2 Passive _ => pIn +"εσαι" ;
+ VPres Ind Sg P3 Passive _=> pIn +"εται" ;
+ VPres Ind Pl P1 Passive _=> pin +"όμαστε" ;
+ VPres Ind Pl P2 Passive _ => pIn + "εστε" ;
+ VPres Ind Pl P3 Passive _ => pIn +"ονται" ;
+
+ VPres _ Sg P1 Active _ => piW ;
+ VPres _ Sg P2 Active _ => pi + "είς" ;
+ VPres _ Sg P3 Active _ => pi + "εί" ;
+ VPres _ Pl P1 Active _=> pi + "ούμε" ;
+ VPres _ Pl P2 Active _ => pi + "είτε" ;
+ VPres _ Pl P3 Active _ => pi + "ούν" ;
+
+ VPres _ Sg P1 Passive _ => " " ;
+ VPres _ Sg P2 Passive _ => " " ;
+ VPres _ Sg P3 Passive _ => " " ;
+ VPres _ Pl P1 Passive _ => " " ;
+ VPres _ Pl P2 Passive _ => " " ;
+ VPres _ Pl P3 Passive _ => " " ;
+
+ VPast _ Sg P1 Active Perf => Ipia ;
+ VPast _ Sg P2 Active Perf=> Ipi + "ες" ;
+ VPast _ Sg P3 Active Perf => Ipi + "ε" ;
+ VPast _ Pl P1 Active Perf => Ipi + "αμε" ;
+ VPast _ Pl P2 Active Perf => Ipi + "ατε" ;
+ VPast _ Pl P3 Active Perf => Ipi + "αν" ;
+
+ VPast _ Sg P1 Passive Perf =>" " ;
+ VPast _ Sg P2 Passive Perf => " " ;
+ VPast _ Sg P3 Passive Perf => " " ;
+ VPast _ Pl P1 Passive Perf => " " ;
+ VPast _ Pl P2 Passive Perf=> " " ;
+ VPast _ Pl P3 Passive Perf => " " ;
+
+ VPast _ Sg P1 Active Imperf => Epina ;
+ VPast _ Sg P2 Active Imperf => Epin + "ες" ;
+ VPast _ Sg P3 Active Imperf => Epin + "ε" ;
+ VPast _ Pl P1 Active Imperf => pIn+ "αμε" ;
+ VPast _ Pl P2 Active Imperf => pIn + "ατε" ;
+ VPast _ Pl P3 Active Imperf => Epin + "αν" ;
+
+ VPast _ Sg P1 Passive Imperf=> pin + "όμουν" ;
+ VPast _ Sg P2 Passive Imperf => pin+ "όσουν" ;
+ VPast _ Sg P3 Passive Imperf => pin +"όταν" ;
+ VPast _ Pl P1 Passive Imperf => pin + "όμασταν" ;
+ VPast _ Pl P2 Passive Imperf=> pin + "όσασταν" ;
+ VPast _ Pl P3 Passive Imperf => pin + "όντουσαν" ;
+
+ VNonFinite Active => pi + "εί" ;
+ VNonFinite Passive => " " ;
+
+ VImperative Perf Sg Active=> pi + "ές" ;
+ VImperative Perf Pl Active => pi + "είτε" ;
+ VImperative Imperf Sg Active =>pIn+ "ε" ;
+ VImperative Imperf Pl Active => pIn + "ετε" ;
+
+ VImperative _ Sg Passive => " " ;
+ VImperative _ Pl Passive => " " ;
+
+ Gerund =>pIn + "οντας" ;
+
+ Participle d g n c => (regAdj part).s !d! g !n !c
+ }
+ } ;
+
+
+ VerbContrIrregNPassPerf : (x1,_,_,_ : Str) -> Verb = \pInw,piW,Ipia,Epina->
+ let
+ pIn = init pInw;
+ pi = init piW;
+ Ipi = init Ipia;
+ Epin = init Epina;
+ pin = mkVerbStem pIn ;
+ part= mkPartStem piW;
+ in
+ mkVerbContracIrregNPassPerf pInw piW Ipia Epina pIn pin pi Ipi Epin part;
+
+
+ mkVerbContracIrregNopassive : (x1,_,_,_,_,_,_,_,_,_,_,_,_: Str) -> Verb = \vgaInw, vgW, vgIka, Evgaina, vgaIn, vg, vgIk, Evgain, Imp1,Imp2, Imp3, Imp4,part ->
+ {
+ s = table {
+ VPres Ind Sg P1 Active _ => vgaIn + "ω" ;
+ VPres Ind Sg P2 Active _ => vgaIn + "εις" ;
+ VPres Ind Sg P3 Active _=> vgaIn + "ει" ;
+ VPres Ind Pl P1 Active _ => vgaIn + "ουμε" ;
+ VPres Ind Pl P2 Active _ => vgaIn + "ετε" ;
+ VPres Ind Pl P3 Active _ => vgaIn + "ουν" ;
+
+ VPres Ind Sg P1 Passive _ => " " ;
+ VPres Ind Sg P2 Passive _ => " " ;
+ VPres Ind Sg P3 Passive _=> " " ;
+ VPres Ind Pl P1 Passive _=> " " ;
+ VPres Ind Pl P2 Passive _ => " " ;
+ VPres Ind Pl P3 Passive _ => " " ;
+
+ VPres _ Sg P1 Active _ => vgW ;
+ VPres _ Sg P2 Active _ => vg + "είς" ;
+ VPres _ Sg P3 Active _ => vg + "εί" ;
+ VPres _ Pl P1 Active _=> vg + "ούμε" ;
+ VPres _ Pl P2 Active _ => vg + "είτε" ;
+ VPres _ Pl P3 Active _ => vg + "ούν" ;
+
+ VPres _ Sg P1 Passive _ => " " ;
+ VPres _ Sg P2 Passive _ => " " ;
+ VPres _ Sg P3 Passive _ => " " ;
+ VPres _ Pl P1 Passive _ => " " ;
+ VPres _ Pl P2 Passive _ => " " ;
+ VPres _ Pl P3 Passive _ => " " ;
+
+ VPast _ Sg P1 Active Perf => vgIka ;
+ VPast _ Sg P2 Active Perf=> vgIk + "ες" ;
+ VPast _ Sg P3 Active Perf => vgIk + "ε" ;
+ VPast _ Pl P1 Active Perf => vg + "ήκαμε" ;
+ VPast _ Pl P2 Active Perf => vg + "ήκατε" ;
+ VPast _ Pl P3 Active Perf => vgIk + "αν" ;
+
+ VPast _ Sg P1 Passive Perf =>" " ;
+ VPast _ Sg P2 Passive Perf => " " ;
+ VPast _ Sg P3 Passive Perf => " " ;
+ VPast _ Pl P1 Passive Perf => " " ;
+ VPast _ Pl P2 Passive Perf=> " " ;
+ VPast _ Pl P3 Passive Perf => " " ;
+
+ VPast _ Sg P1 Active Imperf => Evgaina ;
+ VPast _ Sg P2 Active Imperf => Evgain + "ες" ;
+ VPast _ Sg P3 Active Imperf => Evgain + "ε" ;
+ VPast _ Pl P1 Active Imperf => vgaIn+ "αμε" ;
+ VPast _ Pl P2 Active Imperf => vgaIn + "ατε" ;
+ VPast _ Pl P3 Active Imperf => Evgain + "αν" ;
+
+ VPast _ Sg P1 Passive Imperf=>" " ;
+ VPast _ Sg P2 Passive Imperf => " " ;
+ VPast _ Sg P3 Passive Imperf => " ";
+ VPast _ Pl P1 Passive Imperf => " " ;
+ VPast _ Pl P2 Passive Imperf=> " " ;
+ VPast _ Pl P3 Passive Imperf => " " ;
+
+ VNonFinite Active => vg + "εί" ;
+ VNonFinite Passive => " " ;
+
+ VImperative Perf Sg Active=> Imp1 ;
+ VImperative Perf Pl Active => Imp2 ;
+ VImperative Imperf Sg Active =>Imp3 ;
+ VImperative Imperf Pl Active => Imp4 ;
+
+ VImperative _ Sg Passive => " " ;
+ VImperative _ Pl Passive => " " ;
+
+ Gerund =>vgaIn + "οντας" ;
+
+ Participle d g n c => (regAdj part).s !d! g !n !c
+ }
+ } ;
+
+
+
+ ------Verbs with 2 syllables------
+ VerbContracIrregNopassive : (x1,_,_,_,_,_ : Str) -> Verb = \vgaInw, vgW, vgIka, Evgaina, vgEs, part->
+ let
+ vgaIn = init vgaInw;
+ vg = init vgW;
+ vgIk = init vgIka;
+ Evgain = init Evgaina ;
+ Imp1 = vgEs ;
+ Imp2 =vg + "είτε" ;
+ Imp3 =vgaIn+ "ε" ;
+ Imp4 =vgaIn + "ετε" ;
+ part=part;
+ in
+ mkVerbContracIrregNopassive vgaInw vgW vgIka Evgaina vgaIn vg vgIk Evgain Imp1 Imp2 Imp3 Imp4 part;
+
+
+
+ -----Verbs with more than two syllables -----
+ VerbContracIrregNopassive2 : (x1,_,_,_,_,_ : Str) -> Verb = \provaInw, provW, proEvika, proEvaina, prOvaine,part->
+ let
+ provaIn = init provaInw;
+ prov = init provW;
+ proEvik = init proEvika;
+ proEvain = init proEvaina ;
+ Imp1 = prOvaine ;
+ Imp2 =prov +"είτε" ;
+ Imp3 = proEvain + "ε" ;
+ Imp4 = provaIn + "ετε" ;
+ part=part ;
+ in
+ mkVerbContracIrregNopassive provaInw provW proEvika proEvaina provaIn prov proEvik proEvain Imp1 Imp2 Imp3 Imp4 part;
+
+
+
+ ------Contracted Verbs with no passive ----------
+ mkVerbContrac2 : (x1,_,_,_,_,_,_,_,_,_,_: Str) -> Verb = \ftaIw, ftaIksw, Eftaiksa, Eftaiga, ftaI, ftaIks, Eftaiks, Eftaig, Imp, Imp2,part->
+ {
+ s = table {
+ VPres Ind Sg P1 Active _ => ftaI + "ω" ;
+ VPres Ind Sg P2 Active _ => ftaI + "ς" ;
+ VPres Ind Sg P3 Active _=> ftaI + "ει" ;
+ VPres Ind Pl P1 Active _ => ftaI + "με" ;
+ VPres Ind Pl P2 Active _ => ftaI + "τε" ;
+ VPres Ind Pl P3 Active _ => ftaI + "νε" ;
+
+ VPres Ind Sg P1 Passive _ => " " ;
+ VPres Ind Sg P2 Passive _ => " " ;
+ VPres Ind Sg P3 Passive _=>" " ;
+ VPres Ind Pl P1 Passive _=> " " ;
+ VPres Ind Pl P2 Passive _ => " ";
+ VPres Ind Pl P3 Passive _ => " " ;
+
+ VPres _ Sg P1 Active _ => ftaIksw ;
+ VPres _ Sg P2 Active _ => ftaIks + "εις" ;
+ VPres _ Sg P3 Active _ => ftaIks + "ει" ;
+ VPres _ Pl P1 Active _=> ftaIks + "ουμε" ;
+ VPres _ Pl P2 Active _ => ftaIks + "ετε" ;
+ VPres _ Pl P3 Active _ => ftaIks + "ουν" ;
+
+ VPres _ Sg P1 Passive _ => " " ;
+ VPres _ Sg P2 Passive _ => " " ;
+ VPres _ Sg P3 Passive _ => " ";
+ VPres _ Pl P1 Passive _ => " ";
+ VPres _ Pl P2 Passive _ => " " ;
+ VPres _ Pl P3 Passive _ => " " ;
+
+ VPast _ Sg P1 Active Perf => Eftaiksa ;
+ VPast _ Sg P2 Active Perf=> Eftaiks + "ες" ;
+ VPast _ Sg P3 Active Perf => Eftaiks+ "ε" ;
+ VPast _ Pl P1 Active Perf => ftaIks + "αμε" ;
+ VPast _ Pl P2 Active Perf => ftaIks + "ατε" ;
+ VPast _ Pl P3 Active Perf => Eftaiks+ "αν" ;
+
+ VPast _ Sg P1 Passive Perf => " " ;
+ VPast _ Sg P2 Passive Perf => " " ;
+ VPast _ Sg P3 Passive Perf => " " ;
+ VPast _ Pl P1 Passive Perf => " ";
+ VPast _ Pl P2 Passive Perf=> " " ;
+ VPast _ Pl P3 Passive Perf => " " ;
+
+
+ VPast _ Sg P1 Active Imperf => Eftaiga ;
+ VPast _ Sg P2 Active Imperf => Eftaig + "ες" ;
+ VPast _ Sg P3 Active Imperf => Eftaig + "ε" ;
+ VPast _ Pl P1 Active Imperf => ftaI + mkContr ftaIw +"αμε" ;
+ VPast _ Pl P2 Active Imperf => ftaI +mkContr ftaIw + "ατε" ;
+ VPast _ Pl P3 Active Imperf => Eftaig + "αν" ;
+
+ VPast _ Sg P1 Passive Imperf=> " " ;
+ VPast _ Sg P2 Passive Imperf => " " ;
+ VPast _ Sg P3 Passive Imperf => " " ;
+ VPast _ Pl P1 Passive Imperf => " " ;
+ VPast _ Pl P2 Passive Imperf=> " " ;
+ VPast _ Pl P3 Passive Imperf => " " ;
+
+ VNonFinite Active => ftaIks + "ει" ;
+ VNonFinite Passive => " " ;
+
+ VImperative Perf Sg Active=> Imp + "ε" ;
+ VImperative Perf Pl Active => ftaIks + "τε" ;
+ VImperative Imperf Sg Active => Imp2 + "ε" ;
+ VImperative Imperf Pl Active => ftaI + "τε" ;
+
+ VImperative _ Sg Passive => " " ;
+ VImperative _ Pl Passive => " " ;
+
+ Gerund =>ftaI + mkContr ftaIw + "οντας" ;
+
+ Participle d g n c => (regAdj part).s !d! g !n !c
+ }
+ } ;
+
+
+
+
+
+ ---for Contracted verbs, more than two syllables----
+ VerbContr2NoPassive : (x1,_,_,_,_ : Str) -> Verb = \ ftaIw, ftaIksw, Eftaiksa, Eftaiga, part->
+ let
+ ftaI = init ftaIw ;
+ ftaIks = init ftaIksw ;
+ Eftaiks = init Eftaiksa;
+ Eftaig = init Eftaiga;
+ Imp = ftaIks ;
+ Imp2 = ftaI + mkContr ftaIw ;
+ part= part;
+ in
+ mkVerbContrac2 ftaIw ftaIksw Eftaiksa Eftaiga ftaI ftaIks Eftaiks Eftaig Imp Imp2 part;
+
+
+
+
+ ---------Deponent Verbs, they have the endings of passive voice, but they are active in meaning. Verbs in -άμαι, -ιέμαι -------
+ mkVerbDeponent : (x1,_,_,_,_,_,_,_,_,_,_: Str) -> Verb = \koimAmai, koimithW, koimIthika, koimOmoun, koimA, koim, koimith, koimIth, koimI, Imp,part ->
+ {
+ s = table {
+ VPres Ind Sg P1 Active _ => koimA + "μαι" ;
+ VPres Ind Sg P2 Active _ => koimA + "σαι";
+ VPres Ind Sg P3 Active _=> koimA + "ται" ;
+ VPres Ind Pl P1 Active _ => koim + "όμαστε" ;
+ VPres Ind Pl P2 Active _ => koim + "όσαστε";
+ VPres Ind Pl P3 Active _ => koim + "ούνται" ;
+
+ VPres Ind Sg P1 Passive _ =>" " ;
+ VPres Ind Sg P2 Passive _ => " " ;
+ VPres Ind Sg P3 Passive _=> " " ;
+ VPres Ind Pl P1 Passive _=> " " ;
+ VPres Ind Pl P2 Passive _ => " " ;
+ VPres Ind Pl P3 Passive _ => " " ;
+
+ VPres _ Sg P1 Active _ => koimith + "ώ" ;
+ VPres _ Sg P2 Active _ => koimith + "είς" ;
+ VPres _ Sg P3 Active _ => koimith + "εί" ;
+ VPres _ Pl P1 Active _=> koimith + "ούμε" ;
+ VPres _ Pl P2 Active _ => koimith + "είτε" ;
+ VPres _ Pl P3 Active _ => koimith + "ούν" ;
+
+ VPres _ Sg P1 Passive _ => " ";
+ VPres _ Sg P2 Passive _ => " " ;
+ VPres _ Sg P3 Passive _ => " " ;
+ VPres _ Pl P1 Passive _ => " " ;
+ VPres _ Pl P2 Passive _ => " ";
+ VPres _ Pl P3 Passive _ => " " ;
+
+ VPast _ Sg P1 Active Perf => koimIth + "ηκα" ;
+ VPast _ Sg P2 Active Perf=> koimIth + "ηκες" ;
+ VPast _ Sg P3 Active Perf => koimIth + "ηκε" ;
+ VPast _ Pl P1 Active Perf => koimith + "ήκαμε" ;
+ VPast _ Pl P2 Active Perf => koimith + "ήκατε" ;
+ VPast _ Pl P3 Active Perf => koimIth + "ηκαν" ;
+
+ VPast _ Sg P1 Passive Perf => " " ;
+ VPast _ Sg P2 Passive Perf => " " ;
+ VPast _ Sg P3 Passive Perf => " ";
+ VPast _ Pl P1 Passive Perf => " ";
+ VPast _ Pl P2 Passive Perf=>" ";
+ VPast _ Pl P3 Passive Perf => " ";
+
+ VPast _ Sg P1 Active Imperf => koim + "όμουν" ;
+ VPast _ Sg P2 Active Imperf => koim + "όσουν" ;
+ VPast _ Sg P3 Active Imperf => koim + "όταν" ;
+ VPast _ Pl P1 Active Imperf => koim + "όμασταν" ;
+ VPast _ Pl P2 Active Imperf => koim + "όσασταν" ;
+ VPast _ Pl P3 Active Imperf => koim + "όντουσαν" ;
+
+ VPast _ Sg P1 Passive Imperf=> " " ;
+ VPast _ Sg P2 Passive Imperf => " " ;
+ VPast _ Sg P3 Passive Imperf => " " ;
+ VPast _ Pl P1 Passive Imperf => " ";
+ VPast _ Pl P2 Passive Imperf=> " " ;
+ VPast _ Pl P3 Passive Imperf => " ";
+
+ VNonFinite Active => koimith + "εί" ;
+ VNonFinite Passive => " " ;
+
+ VImperative Perf Sg Active=> Imp ;
+ VImperative Perf Pl Active => koimith + "είτε" ;
+ VImperative Imperf Sg Active => " ";
+ VImperative Imperf Pl Active => " " ;
+
+ VImperative _ Sg Passive => " " ;
+ VImperative _ Pl Passive => " " ;
+
+ Gerund => " " ;
+ Participle d g n c => (regAdj part).s !d! g !n !c
+ }
+ };
+
+
+ VerbDeponent : (x1,_,_,_,_,_ : Str) -> Verb = \variEmai, varethW, varEthika,variOmoun, varEsou,part->
+ let
+ variE = Predef.tk 3 variEmai ;
+ vari = Predef.tk 4 variEmai ;
+ vareth = init varethW ;
+ varEth = Predef.tk 3 varEthika ;
+ varE = init varEth ;
+ Imp = varEsou ;
+ part = part;
+ in
+ mkVerbDeponent variEmai varethW varEthika variOmoun variE vari vareth varEth varE Imp part;
+
+ ---------Verbs in -όμαι -------
+ mkVerbDeponent2 : (x1,_,_,_,_,_,_,_,_,_,_: Str) -> Verb = \noiAzomai, noiastW, noiAstika, noiazOmoun, noiAz, noiast, noiAst, noiaz, Imp, Imp2,part ->
+ {
+ s = table {
+ VPres Ind Sg P1 Active _ => noiAz + "ομαι" ;
+ VPres Ind Sg P2 Active _ => noiAz + "εσαι";
+ VPres Ind Sg P3 Active _=> noiAz + "εται" ;
+ VPres Ind Pl P1 Active _ => noiaz + "όμαστε" ;
+ VPres Ind Pl P2 Active _ => noiaz + "όσαστε";
+ VPres Ind Pl P3 Active _ => noiAz + "ονται" ;
+
+ VPres Ind Sg P1 Passive _ =>" " ;
+ VPres Ind Sg P2 Passive _ => " " ;
+ VPres Ind Sg P3 Passive _=> " " ;
+ VPres Ind Pl P1 Passive _=> " " ;
+ VPres Ind Pl P2 Passive _ => " " ;
+ VPres Ind Pl P3 Passive _ => " " ;
+
+ VPres _ Sg P1 Active _ => noiast + "ώ" ;
+ VPres _ Sg P2 Active _ => noiast + "είς" ;
+ VPres _ Sg P3 Active _ => noiast + "εί" ;
+ VPres _ Pl P1 Active _=> noiast + "ούμε" ;
+ VPres _ Pl P2 Active _ => noiast + "είτε" ;
+ VPres _ Pl P3 Active _ => noiast + "ούν" ;
+
+ VPres _ Sg P1 Passive _ => " ";
+ VPres _ Sg P2 Passive _ => " " ;
+ VPres _ Sg P3 Passive _ => " " ;
+ VPres _ Pl P1 Passive _ => " " ;
+ VPres _ Pl P2 Passive _ => " ";
+ VPres _ Pl P3 Passive _ => " " ;
+
+ VPast _ Sg P1 Active Perf => noiAst + "ηκα" ;
+ VPast _ Sg P2 Active Perf=> noiAst + "ηκες" ;
+ VPast _ Sg P3 Active Perf => noiAst + "ηκε" ;
+ VPast _ Pl P1 Active Perf => noiast + "ήκαμε" ;
+ VPast _ Pl P2 Active Perf => noiast + "ήκατε" ;
+ VPast _ Pl P3 Active Perf => noiAst + "ηκαν" ;
+
+ VPast _ Sg P1 Passive Perf => " " ;
+ VPast _ Sg P2 Passive Perf => " " ;
+ VPast _ Sg P3 Passive Perf => " ";
+ VPast _ Pl P1 Passive Perf => " ";
+ VPast _ Pl P2 Passive Perf=>" ";
+ VPast _ Pl P3 Passive Perf => " ";
+
+ VPast _ Sg P1 Active Imperf => noiaz + "όμουν" ;
+ VPast _ Sg P2 Active Imperf => noiaz + "όσουν" ;
+ VPast _ Sg P3 Active Imperf => noiaz + "όταν" ;
+ VPast _ Pl P1 Active Imperf => noiaz + "όμασταν" ;
+ VPast _ Pl P2 Active Imperf => noiaz + "όσασταν" ;
+ VPast _ Pl P3 Active Imperf => noiaz + "όντουσαν" ;
+
+ VPast _ Sg P1 Passive Imperf=> " " ;
+ VPast _ Sg P2 Passive Imperf => " " ;
+ VPast _ Sg P3 Passive Imperf => " " ;
+ VPast _ Pl P1 Passive Imperf => " ";
+ VPast _ Pl P2 Passive Imperf=> " " ;
+ VPast _ Pl P3 Passive Imperf => " ";
+
+ VNonFinite Active => noiast + "εί" ;
+ VNonFinite Passive => " " ;
+
+ VImperative Perf Sg Active=> Imp ;
+ VImperative Perf Pl Active => noiast + "είτε" ;
+ VImperative Imperf Sg Active => " ";
+ VImperative Imperf Pl Active => Imp2 ;
+
+ VImperative _ Sg Passive => " " ;
+ VImperative _ Pl Passive => " " ;
+
+ Gerund => " " ;
+
+ Participle d g n c => (regAdj part).s !d! g !n !c
+ }
+ };
+
+
+
+ VerbDeponent2 : (x1,_,_,_,_,_: Str) -> Verb = \noiAzomai, noiastW, noiAstika, noiazOmoun, noiAsou, part->
+ let
+ noiAz = Predef.tk 4 noiAzomai ;
+ noiast = init noiastW ;
+ noiAst = Predef.tk 3 noiAstika ;
+ noiaz = Predef.tk 5 noiazOmoun ;
+ Imp = noiAsou ;
+ Imp2= noiAz + "εστε" ;
+ part = part;
+ in
+ mkVerbDeponent2 noiAzomai noiastW noiAstika noiazOmoun noiAz noiast noiAst noiaz Imp Imp2 part;
+
+
+ ---------Verbs in -ομαι -------
+ mkVerbDeponent3 : (x1,_,_,_,_,_,_,_,_,_,_,_: Str) -> Verb = \gInomai, gInw, Egina, ginOmoun, gIn, gin, GIn, gIN, Egin , Imp, Imp2,part ->
+ {
+ s = table {
+ VPres Ind Sg P1 Active _ => gIn + "ομαι" ;
+ VPres Ind Sg P2 Active _ => gIn + "εσαι";
+ VPres Ind Sg P3 Active _=> gIn + "εται" ;
+ VPres Ind Pl P1 Active _ => gin + "όμαστε" ;
+ VPres Ind Pl P2 Active _ => gin + "όσαστε";
+ VPres Ind Pl P3 Active _ => gIn + "ονται" ;
+
+ VPres Ind Sg P1 Passive _ =>" " ;
+ VPres Ind Sg P2 Passive _ => " " ;
+ VPres Ind Sg P3 Passive _=> " " ;
+ VPres Ind Pl P1 Passive _=> " " ;
+ VPres Ind Pl P2 Passive _ => " " ;
+ VPres Ind Pl P3 Passive _ => " " ;
+
+ VPres _ Sg P1 Active _ => GIn + "ω" ;
+ VPres _ Sg P2 Active _ => GIn + "εις" ;
+ VPres _ Sg P3 Active _ => GIn + "ει" ;
+ VPres _ Pl P1 Active _=> GIn + "ουμε" ;
+ VPres _ Pl P2 Active _ => GIn + "ετε" ;
+ VPres _ Pl P3 Active _ => GIn + "ουν" ;
+
+ VPres _ Sg P1 Passive _ => " ";
+ VPres _ Sg P2 Passive _ => " " ;
+ VPres _ Sg P3 Passive _ => " " ;
+ VPres _ Pl P1 Passive _ => " " ;
+ VPres _ Pl P2 Passive _ => " ";
+ VPres _ Pl P3 Passive _ => " " ;
+
+ VPast _ Sg P1 Active Perf => Egin + "α" ;
+ VPast _ Sg P2 Active Perf=> Egin + "ες" ;
+ VPast _ Sg P3 Active Perf => Egin + "ε" ;
+ VPast _ Pl P1 Active Perf => gIN + "αμε" ;
+ VPast _ Pl P2 Active Perf => gIN + "ατε" ;
+ VPast _ Pl P3 Active Perf => Egin + "αν" ;
+
+ VPast _ Sg P1 Passive Perf => " " ;
+ VPast _ Sg P2 Passive Perf => " " ;
+ VPast _ Sg P3 Passive Perf => " ";
+ VPast _ Pl P1 Passive Perf => " ";
+ VPast _ Pl P2 Passive Perf=>" ";
+ VPast _ Pl P3 Passive Perf => " ";
+
+ VPast _ Sg P1 Active Imperf => gin + "όμουν" ;
+ VPast _ Sg P2 Active Imperf => gin + "όσουν" ;
+ VPast _ Sg P3 Active Imperf => gin + "όταν" ;
+ VPast _ Pl P1 Active Imperf => gin + "όμασταν" ;
+ VPast _ Pl P2 Active Imperf => gin + "όσασταν" ;
+ VPast _ Pl P3 Active Imperf => gin + "όντουσαν" ;
+
+ VPast _ Sg P1 Passive Imperf=> " " ;
+ VPast _ Sg P2 Passive Imperf => " " ;
+ VPast _ Sg P3 Passive Imperf => " " ;
+ VPast _ Pl P1 Passive Imperf => " ";
+ VPast _ Pl P2 Passive Imperf=> " " ;
+ VPast _ Pl P3 Passive Imperf => " ";
+
+ VNonFinite Active => GIn + "ει" ;
+ VNonFinite Passive => " " ;
+
+ VImperative Perf Sg Active=> Imp ;
+ VImperative Perf Pl Active => Imp2 ;
+ VImperative Imperf Sg Active => " ";
+ VImperative Imperf Pl Active => " " ;
+
+ VImperative _ Sg Passive => " " ;
+ VImperative _ Pl Passive => " " ;
+
+ Gerund => " " ;
+
+ Participle d g n c => (regAdj part).s !d! g !n !c
+ }
+ };
+
+
+ -----For verbs in -ομαι, not stressed present Conjuctive-----
+ VerbDeponent3 : (x1,_,_,_,_,_,_ : Str) -> Verb = \gInomai, gInw, Egina, ginOmoun, gIne, gInete, part->
+ let
+ gIn = Predef.tk 4 gInomai ;
+ gin = mkVerbStem gIn ;
+ gIN = gIn ;
+ Egin = init Egina ;
+ ginO = Predef.tk 4 ginOmoun ;
+ Imp = gIne ;
+ Imp2= gInete ;
+ part = part;
+ in
+ mkVerbDeponent3 gInomai gInw Egina ginOmoun gIn gin gIn gIN Egin Imp Imp2 part ;
+
+
+ -----For verbs in -ομαι, not stressed present Conjuctive, irregular cases like έρχομαι-----
+ VerbDeponent4 : (x1,_,_,_,_,_,_ : Str) -> Verb = \Erxomai, Erthw, Irtha, erxOmoun, Ela, elAte,part->
+ let
+ Erx = Predef.tk 4 Erxomai ;
+ Erth = init Erthw ;
+ Irth = init Irtha ;
+ erx = Predef.tk 5 erxOmoun ;
+ Imp = Ela ;
+ Imp2= elAte ;
+ part = part;
+ in
+ mkVerbDeponent3 Erxomai Erthw Irtha erxOmoun Erx erx Erth Irth Irth Imp Imp2 part ;
+
+
+ VerbDeponent5 : (x1,_,_,_,_,_,_ : Str) -> Verb = \kAthomai, kathIsw, kAthisa, kathOmoun, kAthise, kathIste,part->
+ let
+ kAth = Predef.tk 4 kAthomai ;
+ kathIs = init kathIsw ;
+ kAthis = init kAthisa ;
+ kath = Predef.tk 5 kathOmoun ;
+ Imp = kAthise ;
+ Imp2= kathIste ;
+ part = part;
+ in
+ mkVerbDeponent3 kAthomai kathIsw kAthisa kathOmoun kAth kath kathIs kathIs kAthis Imp Imp2 part ;
+
+
+ mkVerbNoPassiveA : (x1,_,_,_,_,_,_,_,_,_,_,_,_,_: Str) -> Verb = \apotyxaInw, apotYxw, apEtyxa,apotYxaina,apotyxaIn,apotYx, apEtyx, apotYxain, Nonfinite, Imp1, Imp2, Imp3, Imp4,part ->
+ {
+ s = table {
+ VPres Ind Sg P1 Active _ => apotyxaIn + "ω" ;
+ VPres Ind Sg P2 Active _ => apotyxaIn + "εις" ;
+ VPres Ind Sg P3 Active _=> apotyxaIn + "ει" ;
+ VPres Ind Pl P1 Active _ => apotyxaIn + "ουμε" ;
+ VPres Ind Pl P2 Active _ => apotyxaIn + "ετε" ;
+ VPres Ind Pl P3 Active _ => apotyxaIn + "ουν" ;
+
+ VPres Ind Sg P1 Passive _ => " " ;
+ VPres Ind Sg P2 Passive _ => " " ;
+ VPres Ind Sg P3 Passive _=> " " ;
+ VPres Ind Pl P1 Passive _=> " " ;
+ VPres Ind Pl P2 Passive _ => " " ;
+ VPres Ind Pl P3 Passive _ => " " ;
+
+ VPres _ Sg P1 Active _ => apotYxw ;
+ VPres _ Sg P2 Active _ => apotYx + "εις" ;
+ VPres _ Sg P3 Active _ => apotYx + "ει" ;
+ VPres _ Pl P1 Active _=> apotYx + "ουμε" ;
+ VPres _ Pl P2 Active _ => apotYx + "ετε" ;
+ VPres _ Pl P3 Active _ => apotYx + "ουν" ;
+
+ VPres _ Sg P1 Passive _ => " " ;
+ VPres _ Sg P2 Passive _ => " " ;
+ VPres _ Sg P3 Passive _ => " " ;
+ VPres _ Pl P1 Passive _ => " " ;
+ VPres _ Pl P2 Passive _ => " " ;
+ VPres _ Pl P3 Passive _ => " " ;
+
+ VPast _ Sg P1 Active Perf => apEtyxa ;
+ VPast _ Sg P2 Active Perf=> apEtyx + "ες" ;
+ VPast _ Sg P3 Active Perf => apEtyx + "ε" ;
+ VPast _ Pl P1 Active Perf => apotYx + "αμε" ;
+ VPast _ Pl P2 Active Perf => apotYx + "ατε" ;
+ VPast _ Pl P3 Active Perf => apEtyx + "αν" ;
+
+ VPast _ Sg P1 Passive Perf =>" " ;
+ VPast _ Sg P2 Passive Perf => " " ;
+ VPast _ Sg P3 Passive Perf => " " ;
+ VPast _ Pl P1 Passive Perf => " " ;
+ VPast _ Pl P2 Passive Perf=> " " ;
+ VPast _ Pl P3 Passive Perf => " " ;
+
+ VPast _ Sg P1 Active Imperf => apotYxaina ;
+ VPast _ Sg P2 Active Imperf => apotYxain + "ες" ;
+ VPast _ Sg P3 Active Imperf => apotYxain + "ε" ;
+ VPast _ Pl P1 Active Imperf => apotyxaIn+ "αμε" ;
+ VPast _ Pl P2 Active Imperf => apotyxaIn + "ατε" ;
+ VPast _ Pl P3 Active Imperf => apotYxain + "αν" ;
+
+ VPast _ Sg P1 Passive Imperf=>" " ;
+ VPast _ Sg P2 Passive Imperf => " " ;
+ VPast _ Sg P3 Passive Imperf => " ";
+ VPast _ Pl P1 Passive Imperf => " " ;
+ VPast _ Pl P2 Passive Imperf=> " " ;
+ VPast _ Pl P3 Passive Imperf => " " ;
+
+ VNonFinite Active => Nonfinite ;
+ VNonFinite Passive => " " ;
+
+ VImperative Perf Sg Active=> Imp1 ;
+ VImperative Perf Pl Active => Imp2;
+ VImperative Imperf Sg Active => Imp3;
+ VImperative Imperf Pl Active => Imp4 ;
+
+ VImperative _ Sg Passive => " " ;
+ VImperative _ Pl Passive => " " ;
+
+ Gerund =>apotyxaIn + "οντας" ;
+ Participle d g n c => (regAdj part).s !d! g !n !c
+ }
+ } ;
+
+
+
+ VerbNoPassive : (x1,_,_,_,_,_ : Str) -> Verb = \apotyxaInw, apotYxw, apEtyxa,apotYxaina, apEtyxe,part->
+ let
+ apotyxaIn = init apotyxaInw ;
+ apotYx = init apotYxw ;
+ apEtyx = init apEtyxa ;
+ apotYxain = init apotYxaina ;
+ Nonfinite = apotYx + "ει" ;
+ Imp1 = apEtyxe ;
+ Imp2 = mkImper apotYx ;
+ Imp3 = apotYxain+ "ε";
+ Imp4 = apotyxaIn + "ετε";
+ part = part;
+ in
+ mkVerbNoPassiveA apotyxaInw apotYxw apEtyxa apotYxaina apotyxaIn apotYx apEtyx apotYxain Nonfinite Imp1 Imp2 Imp3 Imp4 part;
+
+ ----verbs with 2 syllables ------
+ VerbNoPassive1 : (x1,_,_,_,_ : Str) -> Verb = \mEnw, meInw, Emeina ,Emena,part ->
+ let
+ mEn = init mEnw ;
+ meIn = init meInw ;
+ Emein = init Emeina ;
+ Emen = init Emena ;
+ Nonfinite = meIn + "ει" ;
+ Imp1 = meIn + "ε" ;
+ Imp2 = mkImper meIn ;
+ Imp3 = mEn+ "ε";
+ Imp4 = mEn + "ετε";
+ in
+ mkVerbNoPassiveA mEnw meInw Emeina Emena mEn meIn Emein Emen Nonfinite Imp1 Imp2 Imp3 Imp4 part;
+
+
+ VerbNoPassive2 : (x1,_,_,_,_,_ : Str) -> Verb = \anevaInw, anEvw, anEbika,anEvaina, anEva,part->
+ let
+ anevaIn = init anevaInw ;
+ anEv = init anEvw ;
+ anEbik = init anEbika ;
+ anEvain = init anEvaina ;
+ Nonfinite = anEv + "ει" ;
+ Imp1 = anEva ;
+ Imp2 = Predef.tk 3 anevaIn + "είτε" ;
+ Imp3 = anEvain+ "ε";
+ Imp4 = anevaIn + "ετε";
+ in
+ mkVerbNoPassiveA anevaInw anEvw anEbika anEvaina anevaIn anEv anEbik anEvain Nonfinite Imp1 Imp2 Imp3 Imp4 part ;
+
+
+
+ ---For verbs that have more than 2 syllables in the present _ ------
+ VerbNoPassive2syll : (x1,_,_,_,_ : Str) -> Verb = \thElw, thelIsw, thElisa ,Ithela,part ->
+ let
+ thEl = init thElw ;
+ thelIs = init thelIsw ;
+ thElis = init thElisa ;
+ Ithel = init Ithela ;
+ Nonfinite = thelIs + "ει" ;
+ Imp1 = thElis + "ε" ;
+ Imp2 = mkImper thelIs ;
+ Imp3 = thEl+ "ε";
+ Imp4 = thEl + "ετε" ;
+ in
+ mkVerbNoPassiveA thElw thelIsw thElisa Ithela thEl thelIs thElis Ithel Nonfinite Imp1 Imp2 Imp3 Imp4 part;
+
+ mkVerbNoPassiveB : (x1,_,_,_,_,_,_,_,_,_,_,_,_,_: Str) -> Verb = \dipsW, dipsAsw, dIpsasa,dipsoYsa ,dips,dipsAs, dIpsas, dipsoYs, Nonfinite, Imp1, Imp2, Imp3, Imp4,part ->
+ {
+ s = table {
+ VPres Ind Sg P1 Active _ => dips + "ώ" ;
+ VPres Ind Sg P2 Active _ => dips + "άς" ;
+ VPres Ind Sg P3 Active _=> dips + "ά" ;
+ VPres Ind Pl P1 Active _ => dips + "άμε" ;
+ VPres Ind Pl P2 Active _ => dips + "άτε" ;
+ VPres Ind Pl P3 Active _ => dips + "ούν" ;
+
+ VPres Ind Sg P1 Passive _ => " " ;
+ VPres Ind Sg P2 Passive _ => " " ;
+ VPres Ind Sg P3 Passive _=> " " ;
+ VPres Ind Pl P1 Passive _=> " " ;
+ VPres Ind Pl P2 Passive _ => " " ;
+ VPres Ind Pl P3 Passive _ => " " ;
+
+ VPres _ Sg P1 Active _ => dipsAsw ;
+ VPres _ Sg P2 Active _ => dipsAs + "εις" ;
+ VPres _ Sg P3 Active _ => dipsAs + "ει" ;
+ VPres _ Pl P1 Active _=> dipsAs + "ουμε" ;
+ VPres _ Pl P2 Active _ => dipsAs + "ετε" ;
+ VPres _ Pl P3 Active _ => dipsAs + "ουν" ;
+
+ VPres _ Sg P1 Passive _ => " " ;
+ VPres _ Sg P2 Passive _ => " " ;
+ VPres _ Sg P3 Passive _ => " " ;
+ VPres _ Pl P1 Passive _ => " " ;
+ VPres _ Pl P2 Passive _ => " " ;
+ VPres _ Pl P3 Passive _ => " " ;
+
+ VPast _ Sg P1 Active Perf => dIpsasa ;
+ VPast _ Sg P2 Active Perf=> dIpsas + "ες" ;
+ VPast _ Sg P3 Active Perf => dIpsas + "ε" ;
+ VPast _ Pl P1 Active Perf => dipsAs + "αμε" ;
+ VPast _ Pl P2 Active Perf => dipsAs + "ατε" ;
+ VPast _ Pl P3 Active Perf => dIpsas + "αν" ;
+
+ VPast _ Sg P1 Passive Perf =>" " ;
+ VPast _ Sg P2 Passive Perf => " " ;
+ VPast _ Sg P3 Passive Perf => " " ;
+ VPast _ Pl P1 Passive Perf => " " ;
+ VPast _ Pl P2 Passive Perf=> " " ;
+ VPast _ Pl P3 Passive Perf => " " ;
+
+ VPast _ Sg P1 Active Imperf => dipsoYsa ;
+ VPast _ Sg P2 Active Imperf => dipsoYs + "ες" ;
+ VPast _ Sg P3 Active Imperf => dipsoYs + "ε" ;
+ VPast _ Pl P1 Active Imperf => dipsoYs+ "αμε" ;
+ VPast _ Pl P2 Active Imperf => dipsoYs + "ατε" ;
+ VPast _ Pl P3 Active Imperf => dipsoYs + "αν" ;
+
+ VPast _ Sg P1 Passive Imperf=>" " ;
+ VPast _ Sg P2 Passive Imperf => " " ;
+ VPast _ Sg P3 Passive Imperf => " ";
+ VPast _ Pl P1 Passive Imperf => " " ;
+ VPast _ Pl P2 Passive Imperf=> " " ;
+ VPast _ Pl P3 Passive Imperf => " " ;
+
+ VNonFinite Active => Nonfinite ;
+ VNonFinite Passive => " " ;
+
+ VImperative Perf Sg Active=> Imp1 ;
+ VImperative Perf Pl Active => Imp2;
+ VImperative Imperf Sg Active => Imp3;
+ VImperative Imperf Pl Active => Imp4 ;
+
+ VImperative _ Sg Passive => " " ;
+ VImperative _ Pl Passive => " " ;
+
+ Gerund =>dips + "ώντας" ;
+ Participle d g n c => (regAdj part).s !d! g !n !c
+ }
+ } ;
+
+
+ VerbNoPassive3 : (x1,_,_,_,_,_: Str) -> Verb = \dipsW, dipsAsw, dIpsasa,dipsoYsa, dIpsa, part->
+ let
+ dips = init dipsW ;
+ dipsAs = init dipsAsw ;
+ dIpsas = init dIpsasa ;
+ dipsoYs = init dipsoYsa ;
+ Nonfinite = dipsAs + "ει" ;
+ Imp1 = dIpsa ;
+ Imp2 = dips+ "άτε" ;
+ Imp3 = dIpsas + "ε";
+ Imp4 = dipsAs + "τε";
+ part = part;
+ in
+ mkVerbNoPassiveB dipsW dipsAsw dIpsasa dipsoYsa dips dipsAs dIpsas dipsoYs Nonfinite Imp1 Imp2 Imp3 Imp4 part ;
+
+
+
+
+ mkVerbNoPassiveC : (x1,_,_,_,_,_,_,_,_,_,_,_,_,_,_: Str) -> Verb = \zW, zIsw, Ezisa,zoYsa, zIse ,z,zIs, Ezis, zoYs, Nonfinite, Imp1, Imp2, Imp3, Imp4 ,part ->
+ {
+ s = table {
+ VPres Ind Sg P1 Active _ => z + "ώ" ;
+ VPres Ind Sg P2 Active _ => z + "είς" ;
+ VPres Ind Sg P3 Active _=> z + "εί" ;
+ VPres Ind Pl P1 Active _ => z + "ούμε" ;
+ VPres Ind Pl P2 Active _ => z + "είτε" ;
+ VPres Ind Pl P3 Active _ => z + "ούν" ;
+
+ VPres Ind Sg P1 Passive _ => " " ;
+ VPres Ind Sg P2 Passive _ => " " ;
+ VPres Ind Sg P3 Passive _=> " " ;
+ VPres Ind Pl P1 Passive _=> " " ;
+ VPres Ind Pl P2 Passive _ => " " ;
+ VPres Ind Pl P3 Passive _ => " " ;
+
+ VPres _ Sg P1 Active _ => zIsw ;
+ VPres _ Sg P2 Active _ => zIs + "εις" ;
+ VPres _ Sg P3 Active _ => zIs + "ει" ;
+ VPres _ Pl P1 Active _=> zIs + "ουμε" ;
+ VPres _ Pl P2 Active _ => zIs+ "ετε" ;
+ VPres _ Pl P3 Active _ => zIs + "ουν" ;
+
+ VPres _ Sg P1 Passive _ => " " ;
+ VPres _ Sg P2 Passive _ => " " ;
+ VPres _ Sg P3 Passive _ => " " ;
+ VPres _ Pl P1 Passive _ => " " ;
+ VPres _ Pl P2 Passive _ => " " ;
+ VPres _ Pl P3 Passive _ => " " ;
+
+ VPast _ Sg P1 Active Perf => Ezisa ;
+ VPast _ Sg P2 Active Perf=> Ezis + "ες" ;
+ VPast _ Sg P3 Active Perf => Ezis + "ε" ;
+ VPast _ Pl P1 Active Perf => zIs + "αμε" ;
+ VPast _ Pl P2 Active Perf => zIs + "ατε" ;
+ VPast _ Pl P3 Active Perf => Ezis + "αν" ;
+
+ VPast _ Sg P1 Passive Perf =>" " ;
+ VPast _ Sg P2 Passive Perf => " " ;
+ VPast _ Sg P3 Passive Perf => " " ;
+ VPast _ Pl P1 Passive Perf => " " ;
+ VPast _ Pl P2 Passive Perf=> " " ;
+ VPast _ Pl P3 Passive Perf => " " ;
+
+ VPast _ Sg P1 Active Imperf => zoYsa ;
+ VPast _ Sg P2 Active Imperf => zoYs + "ες" ;
+ VPast _ Sg P3 Active Imperf => zoYs + "ε" ;
+ VPast _ Pl P1 Active Imperf => zoYs+ "αμε" ;
+ VPast _ Pl P2 Active Imperf => zoYs + "ατε" ;
+ VPast _ Pl P3 Active Imperf => zoYs + "αν" ;
+
+ VPast _ Sg P1 Passive Imperf=>" " ;
+ VPast _ Sg P2 Passive Imperf => " " ;
+ VPast _ Sg P3 Passive Imperf => " ";
+ VPast _ Pl P1 Passive Imperf => " " ;
+ VPast _ Pl P2 Passive Imperf=> " " ;
+ VPast _ Pl P3 Passive Imperf => " " ;
+
+ VNonFinite Active => Nonfinite ;
+ VNonFinite Passive => " " ;
+
+ VImperative Perf Sg Active=> Imp1 ;
+ VImperative Perf Pl Active => Imp2;
+ VImperative Imperf Sg Active => Imp3;
+ VImperative Imperf Pl Active => Imp4 ;
+
+ VImperative _ Sg Passive => " " ;
+ VImperative _ Pl Passive => " " ;
+
+ Gerund =>z + "ώντας" ;
+ Participle d g n c => (regAdj part).s !d! g !n !c
+ }
+ } ;
+
+
+ VerbNoPassive4 : (x1,_,_,_,_,_ : Str) -> Verb = \zW, zIsw, Ezisa,zoYsa , zIse, part->
+ let
+ z = init zW ;
+ zIs = init zIsw ;
+ Ezis = init Ezisa ;
+ zoYs = init zoYsa ;
+ Nonfinite = z + "εί" ;
+ Imp1 = zIse ;
+ Imp2 = z+ "είτε" ;
+ Imp3 = zIs + "ε";
+ Imp4 = zIs + "τε";
+ part = part;
+ in
+ mkVerbNoPassiveC zW zIsw Ezisa zoYsa zIse z zIs Ezis zoYs Nonfinite Imp1 Imp2 Imp3 Imp4 part ;
+
+
+ -----more than 2 syllables------
+ VerbNoPassive5 : (x1,_,_,_,_,_ : Str) -> Verb = \tharrW, tharrEpsw, thArrepsa,tharroYsa , thArrepse, part->
+ let
+ tharr = init tharrW ;
+ tharrEps = init tharrEpsw ;
+ thArreps = init thArrepsa ;
+ tharroYs = init tharroYsa ;
+ Nonfinite = tharr + "εί" ;
+ Imp1 = thArrepse ;
+ Imp2 = tharr + "είτε" ;
+ Imp3 = thArreps + "ε";
+ Imp4 = tharrEps + "τε";
+ part = part;
+ in
+ mkVerbNoPassiveC tharrW tharrEpsw thArrepsa tharroYsa thArrepse tharr tharrEps thArreps tharroYs Nonfinite Imp1 Imp2 Imp3 Imp4 part ;
+
+
+
+
+
+
+
+
+ ---------Irregular Verbs of Second Conjugation, no Passive Imperfective-----------------
+ mkVerb2AIrreg : (x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13: Str) -> Verb = \anaklW, anaklAsw,anAklasa, anakloYsa, anakl, anaklAs, anAklas, anakloYs, De,anaklast, Imp, Imp2,part ->
+ {
+ s = table {
+ VPres Ind Sg P1 Active _ => anaklW ;
+ VPres Ind Sg P2 Active _ => anakl + "άς" ;
+ VPres Ind Sg P3 Active _=> anakl + "ά" ;
+ VPres Ind Pl P1 Active _ => anakl+ "άμε" ;
+ VPres Ind Pl P2 Active _ => anakl + "άτε" ;
+ VPres Ind Pl P3 Active _ => anakl + "ούν" ;
+
+ VPres Ind Sg P1 Passive _ => anakl + "ώμαι" ;
+ VPres Ind Sg P2 Passive _ => anakl + "άσαι" ;
+ VPres Ind Sg P3 Passive _=> anakl + "άται" ;
+ VPres Ind Pl P1 Passive _=> anakl + "όμαστε" ;
+ VPres Ind Pl P2 Passive _ => anakl + "άστε" ;
+ VPres Ind Pl P3 Passive _ => anakl + "ώνται" ;
+
+ VPres _ Sg P1 Active _ => anaklAsw ;
+ VPres _ Sg P2 Active _ => anaklAs + "εις" ;
+ VPres _ Sg P3 Active _ => anaklAs + "ει" ;
+ VPres _ Pl P1 Active _=> anaklAs + "ουμε" ;
+ VPres _ Pl P2 Active _ => anaklAs + "ετε" ;
+ VPres _ Pl P3 Active _ => anaklAs + "ουν" ;
+
+ VPres _ Sg P1 Passive _ => anaklast + "ώ" ;
+ VPres _ Sg P2 Passive _ => anaklast + "είς" ;
+ VPres _ Sg P3 Passive _ => anaklast + "εί" ;
+ VPres _ Pl P1 Passive _ => anaklast + "ούμε" ;
+ VPres _ Pl P2 Passive _ => anaklast + "είτε" ;
+ VPres _ Pl P3 Passive _ => anaklast + "ούν" ;
+
+ VPast _ Sg P1 Active Perf => anAklasa ;
+ VPast _ Sg P2 Active Perf=> anAklas + "ες" ;
+ VPast _ Sg P3 Active Perf => anAklas + "ε" ;
+ VPast _ Pl P1 Active Perf => anaklAs + "αμε" ;
+ VPast _ Pl P2 Active Perf => anaklAs + "ατε" ;
+ VPast _ Pl P3 Active Perf => anAklas + "αν" ;
+
+ VPast _ Sg P1 Passive Perf => De + "ηκα" ;
+ VPast _ Sg P2 Passive Perf => De + "ηκες" ;
+ VPast _ Sg P3 Passive Perf => De + "ηκε" ;
+ VPast _ Pl P1 Passive Perf => anaklast + "ήκαμε" ;
+ VPast _ Pl P2 Passive Perf=> anaklast + "ήκατε" ;
+ VPast _ Pl P3 Passive Perf => De + "ηκαν" ;
+
+ VPast _ Sg P1 Active Imperf => anakloYsa ;
+ VPast _ Sg P2 Active Imperf => anakloYs + "ες" ;
+ VPast _ Sg P3 Active Imperf => anakloYs + "ε" ;
+ VPast _ Pl P1 Active Imperf => anakloYs + "αμε" ;
+ VPast _ Pl P2 Active Imperf => anakloYs + "ατε" ;
+ VPast _ Pl P3 Active Imperf => anakloYs + "αν" ;
+
+ VPast _ Sg P1 Passive Imperf=> " " ;
+ VPast _ Sg P2 Passive Imperf => " ";
+ VPast _ Sg P3 Passive Imperf => " " ;
+ VPast _ Pl P1 Passive Imperf => " " ;
+ VPast _ Pl P2 Passive Imperf=> " ";
+ VPast _ Pl P3 Passive Imperf => " " ;
+
+ VNonFinite Active => anaklAs + "ει" ;
+ VNonFinite Passive => anaklast + "εί" ;
+
+ VImperative Perf Sg Active=> anAklas + "ε" ;
+ VImperative Perf Pl Active => Imp ;
+ VImperative Imperf Sg Active => " " ;
+ VImperative Imperf Pl Active => Imp2;
+
+ VImperative _ Sg Passive => anaklAs + "ου" ;
+ VImperative _ Pl Passive => anaklast + "είτε" ;
+
+ Gerund => anakl + "ώντας" ;
+
+ Participle d g n c => (regAdj part).s !d! g !n !c
+ }
+ };
+
+
+ Verb2aIrreg : (x1,_,_,_,_ : Str) -> Verb = \anaklW, anaklAsw,anAklasa, anakloYsa, part->
+ let
+ anakl = init anaklW ;
+ anaklAs = init anaklAsw ;
+ anAklas = init anAklasa ;
+ anakloYs = init anakloYsa ;
+ De = mkStem4 anaklAs ;
+ anaklast = mkVerbStem De ;
+ Imp = mkImper anaklAs ;
+ part = mkPartStem anaklast ;
+ Imp2 = anakl + "άτε" ;
+ part = part;
+ in
+ mkVerb2AIrreg anaklW anaklAsw anAklasa anakloYsa anakl anaklAs anAklas anakloYs De anaklast Imp Imp2 part;
+
+
+
+ -------------Verbs with no passive Imperfective ----------------------
+ mkVerbNpperf : (x1,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_: Str) -> Verb = \plIttw, plIksw, Epliksa, Eplitta, plItt, plitt, plIks, Epliks, Eplitt, plig,plIg, Imp, Imp2, Imp3,Imp4, ImpP, part ->
+ {
+ s = table {
+ VPres Ind Sg P1 Active _ => plItt + "ω" ;
+ VPres Ind Sg P2 Active _ => plItt + "εις" ;
+ VPres Ind Sg P3 Active _=> plItt + "ει" ;
+ VPres Ind Pl P1 Active _ => plItt + "ουμε" ;
+ VPres Ind Pl P2 Active _ => plItt + "ετε" ;
+ VPres Ind Pl P3 Active _ => plItt + "ουν" ;
+
+ VPres Ind Sg P1 Passive _ => plItt + "ομαι" ;
+ VPres Ind Sg P2 Passive _ => plItt +"εσαι" ;
+ VPres Ind Sg P3 Passive _=> plItt +"εται" ;
+ VPres Ind Pl P1 Passive _=> plitt +"όμαστε" ;
+ VPres Ind Pl P2 Passive _ => plItt + "εστε" ;
+ VPres Ind Pl P3 Passive _ => plItt +"ονται" ;
+
+ VPres _ Sg P1 Active _ => plIksw ;
+ VPres _ Sg P2 Active _ => plIks + "εις" ;
+ VPres _ Sg P3 Active _ => plIks + "ει" ;
+ VPres _ Pl P1 Active _=> plIks + "ουμε" ;
+ VPres _ Pl P2 Active _ => plIks + "ετε" ;
+ VPres _ Pl P3 Active _ => plIks + "ουν" ;
+
+ VPres _ Sg P1 Passive _ => plig + "ώ" ;
+ VPres _ Sg P2 Passive _ => plig + "είς" ;
+ VPres _ Sg P3 Passive _ => plig + "εί" ;
+ VPres _ Pl P1 Passive _ => plig + "ούμε" ;
+ VPres _ Pl P2 Passive _ => plig + "είτε" ;
+ VPres _ Pl P3 Passive _ => plig + "ούν" ;
+
+ VPast _ Sg P1 Active Perf => Epliksa ;
+ VPast _ Sg P2 Active Perf=> Epliks + "ες" ;
+ VPast _ Sg P3 Active Perf => Epliks + "ε" ;
+ VPast _ Pl P1 Active Perf => plIks + "αμε" ;
+ VPast _ Pl P2 Active Perf => plIks + "ατε" ;
+ VPast _ Pl P3 Active Perf => Epliks + "αν" ;
+
+ VPast _ Sg P1 Passive Perf => plIg + "ηκα" ;
+ VPast _ Sg P2 Passive Perf => plIg + "ηκες" ;
+ VPast _ Sg P3 Passive Perf => plIg + "ηκε" ;
+ VPast _ Pl P1 Passive Perf => plig + "ήκαμε" ;
+ VPast _ Pl P2 Passive Perf=> plig + "ήκατε" ;
+ VPast _ Pl P3 Passive Perf => plIg + "ηκαν" ;
+
+ VPast _ Sg P1 Active Imperf => Eplitta ;
+ VPast _ Sg P2 Active Imperf => Eplitt + "ες" ;
+ VPast _ Sg P3 Active Imperf => Eplitt + "ε" ;
+ VPast _ Pl P1 Active Imperf => plItt+ "αμε" ;
+ VPast _ Pl P2 Active Imperf => plItt + "ατε" ;
+ VPast _ Pl P3 Active Imperf => Eplitt + "αν" ;
+
+ VPast _ Sg P1 Passive Imperf=> " " ;
+ VPast _ Sg P2 Passive Imperf => " " ;
+ VPast _ Sg P3 Passive Imperf => " " ;
+ VPast _ Pl P1 Passive Imperf => " " ;
+ VPast _ Pl P2 Passive Imperf=> " ";
+ VPast _ Pl P3 Passive Imperf => " ";
+
+ VNonFinite Active => plIks + "ει" ;
+ VNonFinite Passive => plig + "εί" ;
+
+ VImperative Perf Sg Active=> Imp3 ;
+ VImperative Perf Pl Active => Imp ;
+ VImperative Imperf Sg Active => Imp4;
+ VImperative Imperf Pl Active => Imp2;
+
+ VImperative _ Sg Passive => ImpP ;
+ VImperative _ Pl Passive => plig + "είτε" ;
+
+ Gerund =>plItt + "οντας" ;
+
+ Participle d g n c => (regAdj part).s !d! g !n !c
+ }
+ } ;
+
+
+ VerbNpperf : (x1,_,_,_,_: Str) -> Verb = \plIttw, plIksw,Epliksa, Eplitta,part->
+ let
+ plItt = init plIttw ;
+ plitt = mkVerbStem plItt ;
+ plIks = init plIksw ;
+ Epliks = init Epliksa ;
+ Eplitt = init Eplitta ;
+ plIg = mkStem2 plIksw ;
+ plig = mkVerbStem plIg ;
+ Imp = mkImper plIks ;
+ Imp2 = plItt + "ετε" ;
+ Imp3 = plIks + "ε" ;
+ Imp4 = plItt + "ε" ;
+ ImpP = plIks + "ου" ;
+ part =part;
+ in
+ mkVerbNpperf plIttw plIksw Epliksa Eplitta plItt plitt plIks Epliks Eplitt plig plIg Imp Imp2 Imp3 Imp4 ImpP part;
+
+
+ VerbNpperf2 : (x1,_,_,_,_: Str) -> Verb = \petyxaInw, petYxw,pEtyxa, petYxaina, part->
+ let
+ petyxaIn = init petyxaInw ;
+ petyxainw = mkVerbStem petyxaInw ;
+ petYx = init petYxw ;
+ pEtyx = init pEtyxa ;
+ petYxain = init petYxaina ;
+ epitEyxth = mkStem2 petYxw ;
+ epiteyxth = mkVerbStem epitEyxth ;
+ Imp = mkImper petYx ;
+ Imp2 = petyxaIn + "ετε" ;
+ Imp3 = pEtyx + "ε" ;
+ Imp4 = petYxain + "ε" ;
+ ImpP = mkImperPassive epitEyxth + "ου" ;
+ part =part;
+ in
+ mkVerbNpperf petyxaInw petYxw pEtyxa petYxaina petyxaIn petyxainw petYx pEtyx petYxain epiteyxth epitEyxth Imp Imp2 Imp3 Imp4 ImpP part;
+
+
+ auxVerb : Verb = mkAux "έχω" "είχα" "έχε" "έχετε" "έχων" ;
+
+
+ Verbirreg_pigaInw : (x1,_,_,_: Str) -> Verb = \pigAinw, pAw, pIga,pIgaina ->
+ let
+ pigAin = init pigAinw ;
+ pA = init pAw ;
+ pIg = init pIga;
+ pIgain = init pIgaina;
+ part= " " ;
+ in
+ {
+ s = table {
+ VPres Ind Sg P1 Active _ => pigAin + "ω" ;
+ VPres Ind Sg P2 Active _ => pigAin + "εις" ;
+ VPres Ind Sg P3 Active _=> pigAin + "ει" ;
+ VPres Ind Pl P1 Active _ => pigAin + "ουμε" ;
+ VPres Ind Pl P2 Active _ => pigAin + "ετε" ;
+ VPres Ind Pl P3 Active _ => pigAin + "ουν" ;
+
+ VPres Ind Sg P1 Passive _ => " " ;
+ VPres Ind Sg P2 Passive _ => " " ;
+ VPres Ind Sg P3 Passive _=> " " ;
+ VPres Ind Pl P1 Passive _=> " " ;
+ VPres Ind Pl P2 Passive _ => " " ;
+ VPres Ind Pl P3 Passive _ => " " ;
+
+ VPres _ Sg P1 Active _ => pAw ;
+ VPres _ Sg P2 Active _ => pA + "ς" ;
+ VPres _ Sg P3 Active _ => pA + "ει" ;
+ VPres _ Pl P1 Active _=> pA + "με" ;
+ VPres _ Pl P2 Active _ => pA + "τε" ;
+ VPres _ Pl P3 Active _ => pA + "νε" ;
+
+ VPres _ Sg P1 Passive _ => " " ;
+ VPres _ Sg P2 Passive _ => " " ;
+ VPres _ Sg P3 Passive _ => " " ;
+ VPres _ Pl P1 Passive _ => " " ;
+ VPres _ Pl P2 Passive _ => " " ;
+ VPres _ Pl P3 Passive _ => " " ;
+
+ VPast _ Sg P1 Active Perf => pIga ;
+ VPast _ Sg P2 Active Perf=> pIg + "ες" ;
+ VPast _ Sg P3 Active Perf => pIg + "ε" ;
+ VPast _ Pl P1 Active Perf => pIg + "αμε" ;
+ VPast _ Pl P2 Active Perf => pIg + "ατε" ;
+ VPast _ Pl P3 Active Perf => pIg + "αν" ;
+
+ VPast _ Sg P1 Passive Perf =>" " ;
+ VPast _ Sg P2 Passive Perf => " " ;
+ VPast _ Sg P3 Passive Perf => " " ;
+ VPast _ Pl P1 Passive Perf => " " ;
+ VPast _ Pl P2 Passive Perf=> " " ;
+ VPast _ Pl P3 Passive Perf => " " ;
+
+ VPast _ Sg P1 Active Imperf => pIgaina ;
+ VPast _ Sg P2 Active Imperf => pIgain + "ες" ;
+ VPast _ Sg P3 Active Imperf => pIgain + "ε" ;
+ VPast _ Pl P1 Active Imperf => pigAin+ "αμε" ;
+ VPast _ Pl P2 Active Imperf => pigAin + "ατε" ;
+ VPast _ Pl P3 Active Imperf => pIgain + "αν" ;
+
+ VPast _ Sg P1 Passive Imperf=>" " ;
+ VPast _ Sg P2 Passive Imperf => " " ;
+ VPast _ Sg P3 Passive Imperf => " ";
+ VPast _ Pl P1 Passive Imperf => " " ;
+ VPast _ Pl P2 Passive Imperf=> " " ;
+ VPast _ Pl P3 Passive Imperf => " " ;
+
+ VNonFinite Active => pA + "ει" ;
+ VNonFinite Passive => " " ;
+
+ VImperative Perf Sg Active=> pA + "νε" ;
+ VImperative Perf Pl Active => pA + "τε" ;
+ VImperative Imperf Sg Active => pIgain + "ε";
+ VImperative Imperf Pl Active => pigAin + "ετε" ;
+
+ VImperative _ Sg Passive => " " ;
+ VImperative _ Pl Passive => " " ;
+
+ Gerund =>pigAin + "οντας" ;
+ Participle d g n c => (regAdj part).s !d! g !n !c
+ }
+ } ;
+
+
+
+ -------A small number of verbs form their active or passive past by using endings in -ην. Mostly used in formal _texts.---------------------
+ mkVerbIN : (x1,_,_,_,_,_,_,_,_,_,_,_,_,_,_: Str) -> Verb = \kathistW, katastIsw, katEstisa, kathistoYsa, kathist, katastIs, katEstis, kathistoYs, kathIst, katast, katEst, Imp, Imp1, Imp2, part ->
+ {
+ s = table {
+ VPres Ind Sg P1 Active _ => kathist + "ώ" ;
+ VPres Ind Sg P2 Active _ => kathist + "άς" ;
+ VPres Ind Sg P3 Active _=> kathist + "ά" ;
+ VPres Ind Pl P1 Active _ => kathist + "άμε" ;
+ VPres Ind Pl P2 Active _ => kathist + "άτε" ;
+ VPres Ind Pl P3 Active _ => kathist + "ούν" ;
+
+ VPres Ind Sg P1 Passive _ => kathIst + "αμαι" ;
+ VPres Ind Sg P2 Passive _ => kathIst +"ασαι" ;
+ VPres Ind Sg P3 Passive _=> kathIst +"αται" ;
+ VPres Ind Pl P1 Passive _=> kathist +"άμεθα" ;
+ VPres Ind Pl P2 Passive _ => kathIst + "ασθε" ;
+ VPres Ind Pl P3 Passive _ => kathIst +"ανται" ;
+
+ VPres _ Sg P1 Active _ => katastIsw ;
+ VPres _ Sg P2 Active _ => katastIs + "εις" ;
+ VPres _ Sg P3 Active _ => katastIs + "ει" ;
+ VPres _ Pl P1 Active _=> katastIs + "ουμε" ;
+ VPres _ Pl P2 Active _ => katastIs + "ετε" ;
+ VPres _ Pl P3 Active _ => katastIs + "ουν" ;
+
+ VPres _ Sg P1 Passive _ => katast + "ώ" ;
+ VPres _ Sg P2 Passive _ => katast + "είς" ;
+ VPres _ Sg P3 Passive _ => katast + "εί" ;
+ VPres _ Pl P1 Passive _ => katast + "ούμε" ;
+ VPres _ Pl P2 Passive _ => katast + "είτε" ;
+ VPres _ Pl P3 Passive _ => katast + "ούν" ;
+
+ VPast _ Sg P1 Active Perf => katEstisa ;
+ VPast _ Sg P2 Active Perf=> katEstis + "ες" ;
+ VPast _ Sg P3 Active Perf => katEstis + "ε" ;
+ VPast _ Pl P1 Active Perf => katastIs + "αμε" ;
+ VPast _ Pl P2 Active Perf => katastIs + "ατε" ;
+ VPast _ Pl P3 Active Perf => katEstis + "αν" ;
+
+ VPast _ Sg P1 Passive Perf => katEst + "ην" ;
+ VPast _ Sg P2 Passive Perf => katEst + "ης" ;
+ VPast _ Sg P3 Passive Perf => katEst + "η" ;
+ VPast _ Pl P1 Passive Perf => " " ;
+ VPast _ Pl P2 Passive Perf=> " " ;
+ VPast _ Pl P3 Passive Perf => katEst + "ησαν" ;
+
+ VPast _ Sg P1 Active Imperf => kathistoYsa ;
+ VPast _ Sg P2 Active Imperf => kathistoYs + "ες" ;
+ VPast _ Sg P3 Active Imperf => kathistoYs + "ε" ;
+ VPast _ Pl P1 Active Imperf => kathistoYs+ "αμε" ;
+ VPast _ Pl P2 Active Imperf => kathistoYs + "ατε" ;
+ VPast _ Pl P3 Active Imperf => kathistoYs + "αν" ;
+
+ VPast _ Sg P1 Passive Imperf=> " " ;
+ VPast _ Sg P2 Passive Imperf => " " ;
+ VPast _ Sg P3 Passive Imperf => " " ;
+ VPast _ Pl P1 Passive Imperf => " " ;
+ VPast _ Pl P2 Passive Imperf=> " ";
+ VPast _ Pl P3 Passive Imperf => " ";
+
+ VNonFinite Active => katastIs + "ει" ;
+ VNonFinite Passive => katast + "εί" ;
+
+ VImperative Perf Sg Active=> Imp ;
+ VImperative Perf Pl Active => Imp1 ;
+ VImperative Imperf Sg Active => " ";
+ VImperative Imperf Pl Active => Imp2;
+
+ VImperative _ Sg Passive => katastIs + "ου" ;
+ VImperative _ Pl Passive => katast + "είτε" ;
+
+ Gerund =>katast + "ώντας" ;
+
+ Participle d g n c => (regAdj part).s !d! g !n !c
+ }
+ } ;
+
+
+ VerbIN : (x1,_,_,_,_: Str) -> Verb = \kathistW, katastIsw, katEstisa, kathistoYsa, katestimEnos->
+ let
+ kathist = init kathistW ;
+ katastIs = init katastIsw ;
+ katEstis = init katEstisa ;
+ kathistoYs = init kathistoYsa ;
+ kathIst = mkStem kathistW ;
+ katast = Predef.tk 2 katastIs ;
+ katEst= Predef.tk 2 katEstis ;
+ Imp = katEstis + "ε" ;
+ Imp1 = katastIs + "τε" ;
+ Imp2 = kathist + "άτε" ;
+ part = katestimEnos ;
+ in
+ mkVerbIN kathistW katastIsw katEstisa kathistoYsa kathist katastIs katEstis kathistoYs kathIst katast katEst Imp Imp1 Imp2 part;
+
+
+
+ -----Verbs with a prepositional prefix and the auxiliary verb εχω--------------
+ mkVerbExw : (x1,x2,x3,x4,x5,x6,x7,x8,x9,x10: Str) -> Verb = \parExw, parAsxw,pareIxa, parEx, parAsx, pareIx, parex, parasxeth, parasxEth, part->
+ {
+ s = table {
+ VPres Ind Sg P1 Active _ => parExw ;
+ VPres Ind Sg P2 Active _ => parEx + "εις" ;
+ VPres Ind Sg P3 Active _=> parEx + "ει" ;
+ VPres Ind Pl P1 Active _ => parEx+ "ουμε" ;
+ VPres Ind Pl P2 Active _ => parEx + "ετε" ;
+ VPres Ind Pl P3 Active _ => parEx + "ουν" ;
+
+ VPres Ind Sg P1 Passive _ => parEx + "ομαι" ;
+ VPres Ind Sg P2 Passive _ => parEx + "εσαι" ;
+ VPres Ind Sg P3 Passive _=> parEx + "εται" ;
+ VPres Ind Pl P1 Passive _=> parex + "όμαστε" ;
+ VPres Ind Pl P2 Passive _ => parEx + "εστε" ;
+ VPres Ind Pl P3 Passive _ => parEx + "ονται" ;
+
+ VPres _ Sg P1 Active _ => parAsxw ;
+ VPres _ Sg P2 Active _ => parAsx + "εις" ;
+ VPres _ Sg P3 Active _ => parAsx + "ει" ;
+ VPres _ Pl P1 Active _=> parAsx + "ουμε" ;
+ VPres _ Pl P2 Active _ => parAsx + "ετε" ;
+ VPres _ Pl P3 Active _ => parAsx + "ουν" ;
+
+ VPres _ Sg P1 Passive _ => parasxeth + "ώ" ;
+ VPres _ Sg P2 Passive _ => parasxeth + "είς" ;
+ VPres _ Sg P3 Passive _ => parasxeth + "εί" ;
+ VPres _ Pl P1 Passive _ => parasxeth + "ούμε" ;
+ VPres _ Pl P2 Passive _ => parasxeth + "είτε" ;
+ VPres _ Pl P3 Passive _ => parasxeth + "ούν" ;
+
+ VPast _ Sg P1 Active Perf => pareIxa ;
+ VPast _ Sg P2 Active Perf=> pareIx + "ες" ;
+ VPast _ Sg P3 Active Perf => pareIx + "ε" ;
+ VPast _ Pl P1 Active Perf => pareIx + "αμε" ;
+ VPast _ Pl P2 Active Perf => pareIx + "ατε" ;
+ VPast _ Pl P3 Active Perf => pareIx + "αν" ;
+
+ VPast _ Sg P1 Passive Perf => parasxEth + "ηκα" ;
+ VPast _ Sg P2 Passive Perf => parasxEth + "ηκες" ;
+ VPast _ Sg P3 Passive Perf => parasxEth + "ηκε" ;
+ VPast _ Pl P1 Passive Perf => parasxeth + "ήκαμε" ;
+ VPast _ Pl P2 Passive Perf=> parasxeth + "ήκατε" ;
+ VPast _ Pl P3 Passive Perf => parasxEth + "ηκαν" ;
+
+ VPast _ Sg P1 Active Imperf => pareIxa ;
+ VPast _ Sg P2 Active Imperf => pareIx + "ες" ;
+ VPast _ Sg P3 Active Imperf => pareIx + "ε" ;
+ VPast _ Pl P1 Active Imperf => pareIx + "αμε" ;
+ VPast _ Pl P2 Active Imperf => pareIx + "ατε" ;
+ VPast _ Pl P3 Active Imperf => pareIx + "αν" ;
+
+ VPast _ Sg P1 Passive Imperf=> parex + "όμουν" ;
+ VPast _ Sg P2 Passive Imperf => parex + "όσουν" ;
+ VPast _ Sg P3 Passive Imperf => parex + "όταν" ;
+ VPast _ Pl P1 Passive Imperf => parex + "όμασταν" ;
+ VPast _ Pl P2 Passive Imperf=> parex + "όσασταν" ;
+ VPast _ Pl P3 Passive Imperf => parex + "όντουσαν" ;
+
+ VNonFinite Active => parEx + "ει" ;
+ VNonFinite Passive => parasxeth + "εί" ;
+
+ VImperative Perf Sg Active=> " " ;
+ VImperative Perf Pl Active => parAsx + "ετε";
+ VImperative Imperf Sg Active => " " ;
+ VImperative Imperf Pl Active => parex + "ετε" ;
+
+ VImperative _ Sg Passive => " " ;
+ VImperative _ Pl Passive => parasxeth + "είτε" ;
+
+ Gerund => parEx + "οντας" ;
+
+ Participle d g n c => (regAdj part).s !d! g !n !c
+ }
+ };
+
+
+
+ VerbExw : (x1,_,_,_: Str) -> Verb = \parExw, parAsxw,pareIxa, parexOmenos->
+ let
+ parEx = init parExw ;
+ parAsx = init parAsxw ;
+ pareIx = init pareIxa ;
+ parex = mkVerbStem parEx ;
+ parasxEth = mkStem parExw ;
+ parasxeth = mkVerbStem parasxEth ;
+ part = parexOmenos ;
+ in
+ mkVerbExw parExw parAsxw pareIxa parEx parAsx pareIx parex parasxeth parasxEth part;
+
+
+ -----Verbs with a prepositional suffix and the auxiliary verb εχω--------------
+ mkVerbExwNoPass : (x1,x2,x3,x4,x5,x6,x7: Str) -> Verb = \symmetExw, symmetAsxw, symmeteIxa, symmetEx, symmetAsx, symmeteIx, part->
+ {
+ s = table {
+ VPres Ind Sg P1 Active _ => symmetExw ;
+ VPres Ind Sg P2 Active _ => symmetEx + "εις" ;
+ VPres Ind Sg P3 Active _=> symmetEx + "ει" ;
+ VPres Ind Pl P1 Active _ => symmetEx+ "ουμε" ;
+ VPres Ind Pl P2 Active _ => symmetEx + "ετε" ;
+ VPres Ind Pl P3 Active _ => symmetEx + "ουν" ;
+
+ VPres Ind Sg P1 Passive _ => " " ;
+ VPres Ind Sg P2 Passive _ => " " ;
+ VPres Ind Sg P3 Passive _=> " ";
+ VPres Ind Pl P1 Passive _=> " " ;
+ VPres Ind Pl P2 Passive _ => " " ;
+ VPres Ind Pl P3 Passive _ => " ";
+
+ VPres _ Sg P1 Active _ => symmetAsxw ;
+ VPres _ Sg P2 Active _ => symmetAsx + "εις" ;
+ VPres _ Sg P3 Active _ => symmetAsx + "ει" ;
+ VPres _ Pl P1 Active _=> symmetAsx + "ουμε" ;
+ VPres _ Pl P2 Active _ => symmetAsx + "ετε" ;
+ VPres _ Pl P3 Active _ => symmetAsx + "ουν" ;
+
+ VPres _ Sg P1 Passive _ => " " ;
+ VPres _ Sg P2 Passive _ => " " ;
+ VPres _ Sg P3 Passive _ => " " ;
+ VPres _ Pl P1 Passive _ => " " ;
+ VPres _ Pl P2 Passive _ => " " ;
+ VPres _ Pl P3 Passive _ => " " ;
+
+ VPast _ Sg P1 Active Perf => symmeteIxa ;
+ VPast _ Sg P2 Active Perf=> symmeteIx + "ες" ;
+ VPast _ Sg P3 Active Perf => symmeteIx + "ε" ;
+ VPast _ Pl P1 Active Perf => symmeteIx + "αμε" ;
+ VPast _ Pl P2 Active Perf => symmeteIx + "ατε" ;
+ VPast _ Pl P3 Active Perf => symmeteIx + "αν" ;
+
+ VPast _ Sg P1 Passive Perf => " ";
+ VPast _ Sg P2 Passive Perf =>" " ;
+ VPast _ Sg P3 Passive Perf => " " ;
+ VPast _ Pl P1 Passive Perf => " ";
+ VPast _ Pl P2 Passive Perf=> " " ;
+ VPast _ Pl P3 Passive Perf => " " ;
+
+ VPast _ Sg P1 Active Imperf => symmeteIxa ;
+ VPast _ Sg P2 Active Imperf => symmeteIx + "ες" ;
+ VPast _ Sg P3 Active Imperf => symmeteIx + "ε" ;
+ VPast _ Pl P1 Active Imperf => symmeteIx + "αμε" ;
+ VPast _ Pl P2 Active Imperf => symmeteIx + "ατε" ;
+ VPast _ Pl P3 Active Imperf => symmeteIx + "αν" ;
+
+ VPast _ Sg P1 Passive Imperf=> " " ;
+ VPast _ Sg P2 Passive Imperf => " " ;
+ VPast _ Sg P3 Passive Imperf =>" ";
+ VPast _ Pl P1 Passive Imperf => " " ;
+ VPast _ Pl P2 Passive Imperf=> " " ;
+ VPast _ Pl P3 Passive Imperf => " ";
+
+ VNonFinite Active => symmetEx + "ει" ;
+ VNonFinite Passive => " " ;
+
+ VImperative Perf Sg Active=> " " ;
+ VImperative Perf Pl Active => symmetAsx + "ετε";
+ VImperative Imperf Sg Active => " " ;
+ VImperative Imperf Pl Active => symmetEx + "ετε" ;
+
+ VImperative _ Sg Passive => " " ;
+ VImperative _ Pl Passive => " ";
+
+ Gerund => symmetEx + "οντας" ;
+
+ Participle d g n c => (regAdj part).s !d! g !n !c
+ }
+ };
+
+
+
+ VerbExwNoPass : (x1,_,_,_: Str) -> Verb = \symmetExw, symmetAsxw, symmeteIxa,symmetExon->
+ let
+ symmetEx = init symmetExw ;
+ symmetAsx = init symmetAsxw ;
+ symmeteIx = init symmeteIxa ;
+ part = symmetExon ;
+ in
+ mkVerbExwNoPass symmetExw symmetAsxw symmeteIxa symmetEx symmetAsx symmeteIx part;
+
+ mkVerbAproswpo : (x1,x2,x3,x4: Str) -> Verb = \vrEchei, vrExei, Evrexe, Evreche->
+ {
+ s = table {
+ VPres Ind Sg P1 Active _ => " " ;
+ VPres Ind Sg P2 Active _ => " " ;
+ VPres Ind Sg P3 Active _=> vrEchei ;
+ VPres Ind Pl P1 Active _ => " " ;
+ VPres Ind Pl P2 Active _ => " " ;
+ VPres Ind Pl P3 Active _ => " " ;
+
+ VPres Ind Sg P1 Passive _ => " " ;
+ VPres Ind Sg P2 Passive _ => " " ;
+ VPres Ind Sg P3 Passive _=> " ";
+ VPres Ind Pl P1 Passive _=> " " ;
+ VPres Ind Pl P2 Passive _ => " " ;
+ VPres Ind Pl P3 Passive _ => " ";
+
+ VPres _ Sg P1 Active _ => " " ;
+ VPres _ Sg P2 Active _ => " " ;
+ VPres _ Sg P3 Active _ => vrExei ;
+ VPres _ Pl P1 Active _=> " " ;
+ VPres _ Pl P2 Active _ => " " ;
+ VPres _ Pl P3 Active _ => " " ;
+
+ VPres _ Sg P1 Passive _ => " " ;
+ VPres _ Sg P2 Passive _ => " " ;
+ VPres _ Sg P3 Passive _ => " " ;
+ VPres _ Pl P1 Passive _ => " " ;
+ VPres _ Pl P2 Passive _ => " " ;
+ VPres _ Pl P3 Passive _ => " " ;
+
+ VPast _ Sg P1 Active Perf => " " ;
+ VPast _ Sg P2 Active Perf=> " " ;
+ VPast _ Sg P3 Active Perf => Evrexe;
+ VPast _ Pl P1 Active Perf => " " ;
+ VPast _ Pl P2 Active Perf => " " ;
+ VPast _ Pl P3 Active Perf => " " ;
+
+ VPast _ Sg P1 Passive Perf => " ";
+ VPast _ Sg P2 Passive Perf =>" " ;
+ VPast _ Sg P3 Passive Perf => " " ;
+ VPast _ Pl P1 Passive Perf => " ";
+ VPast _ Pl P2 Passive Perf=> " " ;
+ VPast _ Pl P3 Passive Perf => " " ;
+
+ VPast _ Sg P1 Active Imperf => " " ;
+ VPast _ Sg P2 Active Imperf => " " ;
+ VPast _ Sg P3 Active Imperf => Evreche ;
+ VPast _ Pl P1 Active Imperf => " " ;
+ VPast _ Pl P2 Active Imperf => " " ;
+ VPast _ Pl P3 Active Imperf => " " ;
+
+ VPast _ Sg P1 Passive Imperf=> " " ;
+ VPast _ Sg P2 Passive Imperf => " " ;
+ VPast _ Sg P3 Passive Imperf =>" ";
+ VPast _ Pl P1 Passive Imperf => " " ;
+ VPast _ Pl P2 Passive Imperf=> " " ;
+ VPast _ Pl P3 Passive Imperf => " ";
+
+ VNonFinite Active => vrExei ;
+ VNonFinite Passive => " " ;
+
+ VImperative Perf Sg Active=> " " ;
+ VImperative Perf Pl Active => "" ;
+ VImperative Imperf Sg Active => " " ;
+ VImperative Imperf Pl Active => " " ;
+
+ VImperative _ Sg Passive => " " ;
+ VImperative _ Pl Passive => " ";
+
+ Gerund => "";
+
+ Participle d g n c => " "
+ }
+ };
+
+
+ mk_Prepei : (x1,x2: Str) -> Verb = \prEpei, Eprepe->
+ {
+ s = table {
+ VPres Ind Sg P1 Active _ => prEpei ;
+ VPres Ind Sg P2 Active _ => prEpei ;
+ VPres Ind Sg P3 Active _=> prEpei ;
+ VPres Ind Pl P1 Active _ => prEpei ;
+ VPres Ind Pl P2 Active _ => prEpei ;
+ VPres Ind Pl P3 Active _ => prEpei ;
+
+ VPres Ind Sg P1 Passive _ => " " ;
+ VPres Ind Sg P2 Passive _ => " " ;
+ VPres Ind Sg P3 Passive _=> " ";
+ VPres Ind Pl P1 Passive _=> " " ;
+ VPres Ind Pl P2 Passive _ => " " ;
+ VPres Ind Pl P3 Passive _ => " ";
+
+ VPres _ Sg P1 Active _ => prEpei ;
+ VPres _ Sg P2 Active _ => prEpei ;
+ VPres _ Sg P3 Active _ => prEpei ;
+ VPres _ Pl P1 Active _=> prEpei;
+ VPres _ Pl P2 Active _ => prEpei ;
+ VPres _ Pl P3 Active _ => prEpei ;
+
+ VPres _ Sg P1 Passive _ => " " ;
+ VPres _ Sg P2 Passive _ => " " ;
+ VPres _ Sg P3 Passive _ => " " ;
+ VPres _ Pl P1 Passive _ => " " ;
+ VPres _ Pl P2 Passive _ => " " ;
+ VPres _ Pl P3 Passive _ => " " ;
+
+ VPast _ Sg P1 Active Perf =>Eprepe ;
+ VPast _ Sg P2 Active Perf=> Eprepe ;
+ VPast _ Sg P3 Active Perf => Eprepe;
+ VPast _ Pl P1 Active Perf => Eprepe;
+ VPast _ Pl P2 Active Perf => Eprepe ;
+ VPast _ Pl P3 Active Perf => Eprepe ;
+
+ VPast _ Sg P1 Passive Perf => " ";
+ VPast _ Sg P2 Passive Perf =>" " ;
+ VPast _ Sg P3 Passive Perf => " " ;
+ VPast _ Pl P1 Passive Perf => " ";
+ VPast _ Pl P2 Passive Perf=> " " ;
+ VPast _ Pl P3 Passive Perf => " " ;
+
+ VPast _ Sg P1 Active Imperf => Eprepe ;
+ VPast _ Sg P2 Active Imperf => Eprepe ;
+ VPast _ Sg P3 Active Imperf => Eprepe ;
+ VPast _ Pl P1 Active Imperf => Eprepe;
+ VPast _ Pl P2 Active Imperf => Eprepe ;
+ VPast _ Pl P3 Active Imperf => Eprepe ;
+
+ VPast _ Sg P1 Passive Imperf=> " " ;
+ VPast _ Sg P2 Passive Imperf => " " ;
+ VPast _ Sg P3 Passive Imperf =>" ";
+ VPast _ Pl P1 Passive Imperf => " " ;
+ VPast _ Pl P2 Passive Imperf=> " " ;
+ VPast _ Pl P3 Passive Imperf => " ";
+
+ VNonFinite Active => Eprepe ;
+ VNonFinite Passive => " " ;
+
+ VImperative Perf Sg Active=> " " ;
+ VImperative Perf Pl Active => "" ;
+ VImperative Imperf Sg Active => " " ;
+ VImperative Imperf Pl Active => " " ;
+
+ VImperative _ Sg Passive => " " ;
+ VImperative _ Pl Passive => " ";
+
+ Gerund => "";
+
+ Participle d g n c => " "
+ }
+ };
+
+
+
+ }
+
diff --git a/lib/src/greek/CatGre.gf b/lib/src/greek/CatGre.gf
new file mode 100644
index 000000000..69772dc3c
--- /dev/null
+++ b/lib/src/greek/CatGre.gf
@@ -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 ;
+
+}
diff --git a/lib/src/greek/CommonGre.gf b/lib/src/greek/CommonGre.gf
new file mode 100644
index 000000000..61998df51
--- /dev/null
+++ b/lib/src/greek/CommonGre.gf
@@ -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} ;
+
+
+
+
+ }
\ No newline at end of file
diff --git a/lib/src/greek/ConjunctionGre.gf b/lib/src/greek/ConjunctionGre.gf
new file mode 100644
index 000000000..01c2b7872
--- /dev/null
+++ b/lib/src/greek/ConjunctionGre.gf
@@ -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} ;
+
+}
diff --git a/lib/src/greek/ExtraGre.gf b/lib/src/greek/ExtraGre.gf
new file mode 100644
index 000000000..a6fa90571
--- /dev/null
+++ b/lib/src/greek/ExtraGre.gf
@@ -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 ;
+
+
+
+
+}
\ No newline at end of file
diff --git a/lib/src/greek/ExtraGreAbs.gf b/lib/src/greek/ExtraGreAbs.gf
new file mode 100644
index 000000000..e274d948f
--- /dev/null
+++ b/lib/src/greek/ExtraGreAbs.gf
@@ -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
+}
\ No newline at end of file
diff --git a/lib/src/greek/GrammarGre.gf b/lib/src/greek/GrammarGre.gf
new file mode 100644
index 000000000..144d668a1
--- /dev/null
+++ b/lib/src/greek/GrammarGre.gf
@@ -0,0 +1,26 @@
+
+ concrete GrammarGre of Grammar =
+ VerbGre,
+ NounGre,
+ SentenceGre,
+ PhraseGre,
+ StructuralGre,
+ RelativeGre,
+ AdjectiveGre,
+ ConjunctionGre,
+ NumeralGre,
+ AdverbGre,
+ TenseGre,
+ TextGre,
+ IdiomGre,
+ QuestionGre
+ ;
+
+
+
+
+
+
+
+
+
diff --git a/lib/src/greek/IdiomGre.gf b/lib/src/greek/IdiomGre.gf
new file mode 100644
index 000000000..2371654ad
--- /dev/null
+++ b/lib/src/greek/IdiomGre.gf
@@ -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 } ;
+
+
+
+}
+
diff --git a/lib/src/greek/LangGre.gf b/lib/src/greek/LangGre.gf
new file mode 100644
index 000000000..aa113632a
--- /dev/null
+++ b/lib/src/greek/LangGre.gf
@@ -0,0 +1,4 @@
+concrete LangGre of Lang =
+ GrammarGre,
+ LexiconGre
+ ;
diff --git a/lib/src/greek/LexiconGre.gf b/lib/src/greek/LexiconGre.gf
new file mode 100644
index 000000000..e36a1a9d7
--- /dev/null
+++ b/lib/src/greek/LexiconGre.gf
@@ -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 "νέος" ;
+
+} ;
diff --git a/lib/src/greek/MakeStructuralGre.gf b/lib/src/greek/MakeStructuralGre.gf
new file mode 100644
index 000000000..758c9d746
--- /dev/null
+++ b/lib/src/greek/MakeStructuralGre.gf
@@ -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 = <>} ;
+
+
+}
\ No newline at end of file
diff --git a/lib/src/greek/MorphoGre.gf b/lib/src/greek/MorphoGre.gf
new file mode 100644
index 000000000..33f224cbb
--- /dev/null
+++ b/lib/src/greek/MorphoGre.gf
@@ -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
+ -- } ;
+
+
+
+
+
+} ;
+
diff --git a/lib/src/greek/NounGre.gf b/lib/src/greek/NounGre.gf
new file mode 100644
index 000000000..ffe037176
--- /dev/null
+++ b/lib/src/greek/NounGre.gf
@@ -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;
+ } ;
+
+
+
+}
\ No newline at end of file
diff --git a/lib/src/greek/NumeralGre.gf b/lib/src/greek/NumeralGre.gf
new file mode 100644
index 000000000..6ac3587d6
--- /dev/null
+++ b/lib/src/greek/NumeralGre.gf
@@ -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 of {
+ => mkGen134 tria;
+ => mkMasc134 tria;
+ => mkMascAcc134 tria;
+ => mkFem134 tria ;
+ => tria ;
+ => mkGen134 tria;
+ => 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 of {
+ => mkGen134 tria;
+ => mkMasc134 tria;
+ => mkMascAcc134 tria;
+ => mkFem134 tria ;
+ => tria ;
+ => mkGen134 tria;
+ => 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 of {
+ => mkGen134 xilia;
+ => mkMasc134 xilia;
+ => mkMascAcc134 xilia;
+ => mkFem134 xilia ;
+ => xilia ;
+ => mkGen134 xilia;
+ => 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 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 } ;
+
+}
diff --git a/lib/src/greek/OverloadGre.gf b/lib/src/greek/OverloadGre.gf
new file mode 100644
index 000000000..fcf982a45
--- /dev/null
+++ b/lib/src/greek/OverloadGre.gf
@@ -0,0 +1 @@
+resource OverloadGre = Overload with (Grammar = GrammarGre) ;
\ No newline at end of file
diff --git a/lib/src/greek/ParadigmsGre.gf b/lib/src/greek/ParadigmsGre.gf
new file mode 100644
index 000000000..f42cea8f3
--- /dev/null
+++ b/lib/src/greek/ParadigmsGre.gf
@@ -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 of {
+ => mkNoun_anthropos x n g ;
+ => mkNoun_kivernisi x n g ;
+ => mkNoun_fournaris x n g ;
+ => mkNoun_filakas x n g ;
+ => mkNoun_prosopo x n g ;
+ => mkNoun_fws x n g ;
+ => mkNoun_provlima x n g ;
+ => 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 of {
+ => mkAdjective4 x n ;
+ => mkAdjective3 x n ;
+ => 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) ;
+
+
+
+
+
+
+ }
diff --git a/lib/src/greek/PhraseGre.gf b/lib/src/greek/PhraseGre.gf
new file mode 100644
index 000000000..662fc2c20
--- /dev/null
+++ b/lib/src/greek/PhraseGre.gf
@@ -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 } ;
+
+}
+
diff --git a/lib/src/greek/QuestionGre.gf b/lib/src/greek/QuestionGre.gf
new file mode 100644
index 000000000..9a1f5e4d4
--- /dev/null
+++ b/lib/src/greek/QuestionGre.gf
@@ -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
+ }
+ } ;
+
+
+
+
+}
diff --git a/lib/src/greek/RelativeGre.gf b/lib/src/greek/RelativeGre.gf
new file mode 100644
index 000000000..2dd26c18c
--- /dev/null
+++ b/lib/src/greek/RelativeGre.gf
@@ -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
+ } ;
+}
+
diff --git a/lib/src/greek/ResGre.gf b/lib/src/greek/ResGre.gf
new file mode 100644
index 000000000..2ca23dff5
--- /dev/null
+++ b/lib/src/greek/ResGre.gf
@@ -0,0 +1,1835 @@
+--# -path=.:../abstract:../common:../../prelude
+
+
+resource ResGre = ParamX ** open Prelude in {
+
+ flags coding= utf8 ;
+
+
+ param
+ Case = Nom | Gen | Acc | Vocative | CPrep Prepos;
+
+ Gender = Masc | Fem | Neut | Change;
+
+ Agr = Ag Gender Number Person ;
+
+ Mood = Ind | Con | Hortative;
+
+ TTense = TPres | TPast | TFut | TCond | TImperf ;
+
+ CardOrd = NCard Gender Case| NCardX | NOrd Gender Number Case ;
+
+ DForm = unit | teen | ten | hundr isVowel ;
+
+ isVowel = Is | isNot ;
+
+ Aspect = Perf | Imperf ;
+
+ Order = Main | Inv ;
+
+ Form = Weak |Emphatic ;
+
+ VForm = VPres Mood Number Person Voice Aspect| VPast Mood Number Person Voice Aspect| VNonFinite Voice| VImperative Aspect Number Voice| Gerund | Participle Degree Gender Number Case;
+
+ Voice = Active | Passive;
+
+ Prepos = P_se | PNul | P_Dat;
+
+
+ oper
+
+ AAgr : Type = {g : Gender ; n : Number} ;
+
+ VP = { v : Verb ; clit,clit2 : Str ; comp : Agr => Str ; isNeg : Bool ; voice : Voice ; aspect :Aspect} ;
+
+ NounPhrase = { s : Case => {c1,c2,comp : Str ; isClit : Bool } ; a : Agr ;isNeg:Bool} ;
+
+ Noun : Type = {s : Number => Case => Str ; g : Gender} ;
+
+ Adj : Type = {s : Degree => Gender => Number => Case => Str ; adv : Degree => Str } ;
+
+ Adv : Type = {s : Str } ;
+
+ Verb : Type = {s : VForm => Str } ;
+
+ Det : Type = {s : Gender => Case => Str ; n : Number};
+
+ PName : Type = {s : Number => Case => Str ; g : Gender} ;
+
+ Pronoun : Type = { s : Case => {c1,c2,comp : Str ; isClit : Bool } ; a : Agr; poss : Str } ;
+
+ Preposition = {s : Str ; c : Case} ;
+
+ Quantifier = {s : Bool => Gender => Number => Case => Str ; sp : Gender => Number => Case => Str ; isNeg:Bool } ;
+
+ Compl : Type = {s : Str ; c : Case ; isDir : Bool} ;
+
+ prepCase : Case -> Str ;
+
+
+
+ prepositionse : Case = CPrep P_se ;
+ dative : Case = CPrep P_Dat;
+ possCase : Gender -> Number -> Case -> Str ;
+ possCase = artDef ;
+
+ prepCase : Case -> Str = \c -> case c of {
+ Nom =>[];
+ Acc =>[];
+ Gen =>[];
+ Vocative => [] ;
+ CPrep P_se => elisSe ;
+ CPrep PNul => [] ;
+ CPrep P_Dat => []
+ } ;
+
+
+ npPol : Bool -> Det -> NounPhrase = \isNeg, n -> heavyNPpol isNeg {
+ s = \\c => prepCase c ++ n.s ! Masc ! c;
+ a = agrP3 Masc n.n
+ } ;
+
+ nppolPos : Det -> NounPhrase = npPol False ;
+ nppolNeg : Det -> NounPhrase = npPol True ;
+
+
+ mkPron: (aftos, tou,ton ,afton,aftou : Str) -> Gender -> Number -> Person -> Pronoun =
+ \aftos, tou,ton,afton,aftou, g,n,p ->
+ let
+ seafton : Case -> Str = \x -> prepCase x ++ afton ;
+ in {
+ s = table {
+ Nom => {c1 = [] ; c2 = []; comp = aftos; isClit = False} ;
+ Gen => {c1 = tou ; c2 = [] ;comp = []; isClit = True} ;
+ Acc => {c1 = [] ; c2 = ton; comp = [] ; isClit = True} ;
+ CPrep P_Dat => {c1 = [] ;c2 = []; comp = aftou ; isClit = False} ;
+ CPrep P_se => {c1 = [] ;c2 = []; comp = seafton (CPrep P_se) ; isClit = False} ;
+ CPrep PNul => {c1 = [] ;c2 = []; comp = afton ; isClit = False} ;
+ Vocative => {c1 = [] ; c2 = []; comp = [] ; isClit = False}
+ } ;
+ poss = tou ;
+ g = g;
+ a = Ag g n p
+ } ;
+
+
+
+
+ ---to use the emphatic forms of the pronouns in conjunctions-----
+ conjunctCase : Case -> Case ;
+
+ conjunctCase : Case -> Case = \c ->
+ case c of {
+ Acc => CPrep PNul ;
+ _ => c
+ } ;
+
+
+ heavyNP : {s : Case => Str ; a : Agr} -> NounPhrase = heavyNPpol False ;
+
+ heavyNPpol : Bool -> {s : Case => Str ; a : Agr} -> NounPhrase = \isNeg,np -> {
+ s = \\c => {comp = np.s ! c ; c1 = []; c2 = []; isClit = False ;} ;
+ a = np.a ;
+ isNeg = isNeg
+ } ;
+
+
+
+ complAcc : Compl = {s = [] ; c = Acc ; isDir = True} ;
+ complGen : Compl = {s = [] ; c = Gen ; isDir = False} ;
+ complDat : Compl = {s = [] ; c = dative ; isDir = False} ;
+ complPrepSe : Compl = {s = [] ; c = prepositionse ; isDir = False} ;
+
+ mkVPSlash : Compl -> VP -> VP ** {c2 : Compl} = \c,vp -> vp ** {c2 = c} ;
+
+
+
+ appCompl : Compl -> NounPhrase -> Str = \comp,np ->
+ comp.s ++ (np.s ! comp.c).comp ;
+
+
+
+ predVP : Str -> Agr -> VP -> {s : Order => TTense => Anteriority => Polarity => Mood => Str} = predVPPol False ;
+
+ predVPPol : Bool -> Str -> Agr -> VP -> {s : Order => TTense => Anteriority => Polarity => Mood => Str} = \subjpol, subj,agr,vp ->
+ let
+ comp = vp.comp ! agr ;
+ clit = vp.clit ;
+ clit2=vp.clit2;
+
+ verb : Mood -> Voice -> Aspect-> TTense => Str = \m, vo ,as->
+ table { TCond => agrV auxVerb m vo as TPres agr ++ vp.v.s ! VNonFinite vo;
+ TImperf => agrV auxVerb m vo as TPast agr ++ vp.v.s ! VNonFinite vo;
+ t => agrV vp.v m vo as t agr
+ } ;
+ in {
+ s = \\o,t,ant, p, m =>
+ let negpm = case orB subjpol vp.isNeg of {
+ True => neg Neg m ;
+ _ => neg p m
+ } ;
+ vo = vp.voice ;
+ as = vp.aspect ;
+ in
+ case of {
+ => subj ++ negpm ++ clit ++ clit2 ++ verb m vo as ! t ++ comp;
+ => negpm ++ clit ++ clit2 ++ verb m vo as ! t ++ comp ++ subj ;
+
+ => subj ++ negpm ++ clit ++ clit2++ verb m vo as! TCond ++ comp ;
+ => negpm ++ clit ++ clit2 ++ verb m vo as ! TCond ++ comp ++ subj ;
+
+ => subj ++ negpm ++ "θα" ++ clit ++ clit2 ++verb m vo as! t ++ comp ;
+ => negpm ++ "θα"++ clit ++ clit2++ verb m vo as! t ++ comp ++ subj;
+
+ => subj ++ negpm ++ "θα" ++ clit ++ clit2 ++ verb m vo as! TCond ++ comp ;
+ => negpm ++"θα" ++ clit ++ clit2 ++ verb m vo as! TCond ++ comp ++ subj ;
+
+ => subj ++ negpm ++ "θα" ++ clit ++ verb m vo Imperf! TPast ++ comp ;
+ => negpm ++ "θα" ++ clit ++ clit2 ++ verb m vo Imperf ! TPast ++ comp ++ subj;
+
+ => subj ++ negpm ++ "θα"++ clit ++ clit2 ++ verb m vo as! TImperf ++ comp ;
+ => negpm ++ "θα" ++clit ++ clit2 ++ verb m vo as! TImperf ++ comp ++ subj ;
+
+ => subj ++ negpm ++ clit ++ clit2 ++ verb m vo as! TPast ++ comp ;
+ => negpm ++ clit ++ clit2 ++ verb m vo as! TPast ++ comp ++ subj ;
+
+
+ => subj ++ negpm ++ clit ++ clit2 ++ verb m vo as!TImperf ++ comp;
+ => negpm ++ clit ++ clit2 ++ verb m vo as!TImperf ++ comp ++ subj;
+
+ <_, TImperf,Simul,Ind> => subj ++ negpm ++ clit ++ clit2 ++ verb m vo as! t ++ comp ;
+ <_, TImperf,Anterior,Ind> => negpm ++ clit ++ clit2 ++ verb m vo as! TImperf ++ comp ++ subj;
+
+ <_, _,_,Con> => subj ++ "να" ++ negpm ++ clit ++ clit2 ++ verb m vo as! t ++ comp ;
+ => subj ++ "ας" ++ negpm ++ clit ++ clit2 ++ verb m vo as! t ++ comp ;
+ => "ας" ++ negpm ++ clit ++ clit2 ++ verb m vo as! t ++ comp ++ subj
+ }
+ } ;
+
+ neg : Polarity -> Mood -> Str = \p,m -> case p of {
+ Pos => [] ;
+ Neg => case m of {
+ Ind => "δεν" ;
+ Con |Hortative => "μήν"
+ }
+ } ;
+
+
+
+ agrV : Verb -> Mood -> Voice -> Aspect -> TTense -> Agr -> Str = \v,m,vo,as, t,a -> case a of {
+ Ag _ n p => case of {
+ => v.s ! VPast Ind n p Active Perf ;
+ => v.s ! VPast Ind n p Passive Perf ;
+ => v.s ! VPast m n p Active Imperf;
+ => v.s ! VPast m n p Passive Imperf;
+ => v.s ! VPres Ind n p Active Imperf;
+ => v.s ! VPres Ind n p Passive Imperf;
+ => v.s ! VPres Con n p Active Perf;
+ => v.s ! VPres Con n p Passive Perf;
+ => v.s ! VPast m n p Active Imperf;
+ => v.s ! VPast m n p Passive Imperf;
+ => v.s ! VPres m n p Active Perf;
+ => v.s ! VPres m n p Passive Perf;
+ _ => v.s ! VPres m n p vo Perf
+ }
+ } ;
+
+ predV : Verb -> VP = \v -> {
+ v = v ;
+ clit = [] ;
+ clit2 = [] ;
+ comp = \\a => [] ;
+ isNeg = False;
+ voice = Active ;
+ aspect = Perf ;
+ } ;
+
+
+
+ ------------Agreements -------------
+ agrFeatures : Agr -> {g : Gender ; n : Number ; p : Person} = \a ->
+ case a of {Ag g n p => {g = g ; n = n ; p = p }} ;
+
+ complAgr : Agr -> {g : Gender ; n : Number} = \a -> case a of {
+ Ag g n _ => {g = g ; n = n}
+ } ;
+
+ verbAgr : Agr -> {g : Gender ; n : Number ; p : Person} = \a -> case a of {
+ Ag g n p => {g = g ; n = n ; p = p}
+ } ;
+
+ clitAgr : Agr -> { n : Number ; p : Person} = \a -> case a of {
+ Ag _ n p => { n = n; p = p}
+ } ;
+
+
+ agrP3 : Gender -> Number -> Agr = \g,n ->
+ Ag g n P3 ;
+ aagr : Gender -> Number -> AAgr = \g,n ->
+ {g = g ; n = n} ;
+
+ ---- Conjunction Agreements----
+
+ conjAgr : Number -> Agr -> Agr -> Agr = \n,xa,ya ->
+ let
+ x = agrFeatures xa ; y = agrFeatures ya
+ in Ag
+ (conjGender x.g y.g)
+ (conjNumber (conjNumber x.n y.n) n)
+ (conjPPerson x.p y.p) ;
+
+
+ conjGender : Gender -> Gender -> Gender = \m,n ->
+ case m of {
+ Fem => n ;
+ _ => Masc
+ } ;
+
+
+ conjPPerson : Person -> Person -> Person = \p,q ->
+ case of {
+ <_,P1> | <_,P2> => P1 ;
+ => P1 ;
+ => P2 ;
+ => P3
+ };
+
+
+
+ insertObject : Compl -> NounPhrase -> VP -> VP = \c,np,vp ->
+ let
+ obj = np.s ! c.c ;
+ in {
+ v = vp.v ;
+ clit = vp.clit ++ obj.c1 ;
+ clit2 = vp.clit2 ++ obj.c2;
+ comp = \\a => c.s ++ obj.comp ++ vp.comp ! a ;
+ isNeg = orB vp.isNeg np.isNeg ;
+ voice = vp.voice ;
+ aspect = vp.aspect ;
+ } ;
+
+
+ insertComplement : (Agr => Str) -> VP -> VP = \co,vp -> {
+ v = vp.v ;
+ clit = vp.clit ;
+ clit2 = vp.clit2 ;
+ isNeg = vp.isNeg ;
+ comp = \\a => vp.comp ! a ++ co ! a ;
+ voice = vp.voice ;
+ aspect = vp.aspect ;
+ } ;
+
+
+ insertAdv : Str -> VP -> VP = \co,vp -> {
+ v = vp.v ;
+ clit = vp.clit ;
+ clit2 = vp.clit2 ;
+ comp = \\a => vp.comp ! a ++ co ;
+ isNeg = vp.isNeg ;
+ voice = vp.voice ;
+ aspect = vp.aspect ;
+ } ;
+
+ insertAdV : Str -> VP -> VP = \co,vp -> {
+ v = vp.v ;
+ clit = vp.clit ;
+ clit2 = vp.clit2 ;
+ comp =\\a => co ++ vp.comp ! a ;
+ isNeg = vp.isNeg ;
+ voice = vp.voice ;
+ aspect = vp.aspect ;
+ } ;
+
+
+
+
+
+ ----------Formation of Proper Names ----------
+ mkName :(s1,_,_,_,_,_ : Str) -> Gender -> PName =
+ \nm,gm,am,vm,pn,pg, g -> {
+ s = table {
+ Sg => table {
+ Nom => nm ;
+ Gen |CPrep P_Dat => gm ;
+ Acc |CPrep P_se |CPrep PNul => am ;
+ Vocative => vm
+ } ;
+ Pl => table {
+ Nom | Vocative |Acc |CPrep P_se |CPrep PNul => pn ;
+ Gen |CPrep P_Dat => pg
+ }
+ } ;
+ g = g
+ } ;
+
+ ----------Regular Proper Names----------
+ regName: Str -> PName = \Giannis-> case Giannis of {
+ Giann + "ης" => mkName Giannis (Giann + "η") (Giann + "η") (Giann + "η") (Giann + "ηδες") (Giann + "ηδων") Masc ;
+ Kost + "ής" => mkName Giannis (Kost + "ή") (Kost + "ή") (Kost + "ή")(Kost + "ήδες") (Kost + "ήδων") Masc ;
+ Giorg + "ος" => mkName Giannis (Giorg + "ου") ( Giorg + "ο") (Giorg + "ο") (Giorg + "ηδες") ( Giorg + "ηδων") Masc ;
+ Kost + "ας" => mkName Giannis (Kost + "α") (Kost + "α") (Kost + "α")(Kost + "ηδες") (Kost + "ηδων") Masc ;
+ Mari + "α" => mkName Giannis (Mari + "ας") (Mari + "α") (Mari + "α")(Mari + "ες") (Mari + "ων") Fem ;
+ Elen + "η" => mkName Giannis (Elen + "ης") (Elen + "η") (Elen + "η")(Elen + "ες") (Elen + "ων") Fem ;
+ Fros + "ω" => mkName Giannis (Fros + "ως") (Fros + "ω") (Fros + "ω") ("") ("")Fem ;
+ Mirt + "ώ" => mkName Giannis (Mirt + "ώς") (Mirt + "ώ") (Mirt + "ώ") ("")("")Fem ;
+ Londin + "ο" => mkName Giannis (Londin + "ου") (Londin + "ο") (Londin + "ο") (Londin + "α") (Londin + "ων") Neut ;
+ Paris + "ι" => mkName Giannis (mkStemNouns Paris + "ιού") (Paris + "ι") (Paris + "ι")(Paris + "ια") (mkStemNouns Paris + "ιών") Neut
+ };
+
+
+ ----------Regular Proper Names that change their Vocative ending--------------
+ regName2: Str -> PName = \s-> case s of {
+ Alexandr + "ος" => mkName s (Alexandr + "ου") (Alexandr + "ο") (Alexandr + "ε")(Alexandr + "οι") (Alexandr + "ων") Masc ;
+ Isimerin + "ός" => mkName s (Isimerin + "ού") ( Isimerin + "ό") (Isimerin + "έ") (Isimerin + "οί") ( Isimerin + "ών") Masc
+ };
+
+
+
+
+
+
+
+
+
+ ---------------NOUNS ------------------------------------
+ ---------------------------------------------------------
+
+
+ mkNoun : (s1,_,_,_,_,_,_,_ : Str) -> Gender -> Noun =
+ \sn,sg,sa,sv,pn,pg,pa,pv, g -> {
+ s = table {
+ Sg => table {
+ Nom => sn ;
+ Gen |CPrep P_Dat=> sg ;
+ Acc |CPrep P_se |CPrep PNul => sa ;
+ Vocative => sv
+ } ;
+ Pl => table {
+ Nom => pn ;
+ Gen |CPrep P_Dat=> pg ;
+ Acc |CPrep P_se |CPrep PNul => pa;
+ Vocative => pv
+ }
+ } ;
+ g = g
+ } ;
+
+
+ ------Masculine nouns in -ης, irregular --------------------
+ mkNoun_prytanis : (s1,_ : Str) -> Gender -> Noun =
+ \prytanis, prytaneon, g ->
+ let
+ prytani = init prytanis;
+ prytAn = Predef.tk 3 prytaneon ;
+ in {
+ s = table {
+ Sg => table {
+ Nom => prytanis ;
+ Gen |CPrep P_Dat=> prytani ;
+ Acc | Vocative|CPrep P_se |CPrep PNul => prytani
+ } ;
+ Pl => table {
+ Nom => prytAn + "εις" ;
+ Gen |CPrep P_Dat=> prytaneon ;
+ Acc | Vocative |CPrep P_se |CPrep PNul => prytAn + "εις"
+ }
+ } ;
+ g = g
+ } ;
+
+
+ ------Masculine nouns in -ς, irregular --------------------
+ mkNoun_mys : (s1,_ : Str) -> Gender -> Noun =
+ \mys, myon, g ->
+ let
+ my = init mys;
+ in {
+ s = table {
+ Sg => table {
+ Nom => mys ;
+ Gen |CPrep P_Dat=> my ;
+ Acc |CPrep P_se |CPrep PNul => mys;
+ Vocative => []
+ } ;
+ Pl => table {
+ Nom => my + "ες" ;
+ Gen |CPrep P_Dat=> myon ;
+ Acc |CPrep P_se |CPrep PNul => my + "ες" ;
+ Vocative => []
+ }
+ } ;
+ g = g
+ } ;
+
+ ------Masculine nouns -ος parisyllabic, stressing in the penultimate syllable in genSg and acc/genPl--------------------
+ mkNoun_anthropos : (s1,_ : Str) -> Gender -> Noun =
+ \anthropos, anthropon, g ->
+ let
+ anthrop = Predef.tk 2 anthropos ;
+ anthrOp = Predef.tk 2 anthropon ;
+ in {
+ s = table {
+ Sg => table {
+ Nom => anthropos ;
+ Gen |CPrep P_Dat=> anthrOp + "ου" ;
+ Acc |CPrep P_se |CPrep PNul => anthrop + "ο";
+ Vocative => anthrop + "ε"
+ } ;
+ Pl => table {
+ Nom | Vocative=> anthrop + "οι" ;
+ Gen |CPrep P_Dat=> anthropon ;
+ Acc |CPrep P_se |CPrep PNul => anthrOp + "ους"
+ }
+ } ;
+ g = g
+ } ;
+
+
+ ------Masculine nouns in -as(-ias, -istas), parisyllabic, with genPL with the stress on the penultimate syllable. -----------
+ mkNoun_filakas : (s1,_ : Str) -> Gender -> Noun =
+ \filakas, filakon, g ->
+ let
+ filak = Predef.tk 2 filakas ;
+ in {
+ s = table {
+ Sg => table {
+ Nom => filakas ;
+ Gen |CPrep P_Dat| Acc | Vocative |CPrep P_se |CPrep PNul => mkGenSg filakas
+ } ;
+ Pl => table {
+ Nom |Acc | Vocative|CPrep P_se |CPrep PNul => mkNomPl filakas ;
+ Gen|CPrep P_Dat => filakon
+ }
+ } ;
+ g = g
+ } ;
+
+ ------Masculine nouns in -as,, parisyllabic, with genPL with the stress on the penultimate or the final syllable. -----------
+ mkNoun_touristas : (s1: Str) -> Gender -> Noun =
+ \touristas, g ->
+ let
+ tourist = Predef.tk 2 touristas ;
+ in {
+ s = table {
+ Sg => table {
+ Nom => touristas ;
+ Gen |CPrep P_Dat=> mkGenSg touristas;
+ Acc | Vocative|CPrep P_se |CPrep PNul => mkAccSg touristas
+ } ;
+ Pl => table {
+ Nom | Acc | Vocative|CPrep P_se |CPrep PNul => mkNomPl touristas;
+ Gen|CPrep P_Dat => mkGen touristas
+ }
+ } ;
+ g = g
+ } ;
+
+
+ ----------------Masculine nouns in -ης , imparisyllabic , augmenting syllables.--------------
+ mkNoun_fournaris : (s1,_ : Str) -> Gender -> Noun =
+ \fournaris, fournarides, g ->
+ let
+ fournar = Predef.tk 2 fournaris ;
+ fournAr = Predef.tk 4 fournarides ;
+ in {
+ s = table {
+ Sg => table {
+ Nom => fournaris ;
+ Gen |CPrep P_Dat| Acc | Vocative|CPrep P_se |CPrep PNul => mkGenSg fournaris
+ } ;
+ Pl => table {
+ Nom | Acc | Vocative |CPrep P_se |CPrep PNul=> fournarides ;
+ Gen|CPrep P_Dat => fournAr + "ηδων"
+ }
+ } ;
+ g = g
+ } ;
+
+
+ ----------------Feminine nouns in -α ,parisyllabic.--------------
+ mkNoun_thalassa : (s: Str) -> Gender -> Noun =
+ \thalassa, g ->
+ let
+ thalass = init thalassa ;
+ in {
+ s = table {
+ Sg => table {
+ Nom | Acc | Vocative|CPrep P_se |CPrep PNul => thalassa ;
+ Gen|CPrep P_Dat => mkGenSg thalassa
+ } ;
+ Pl => table {
+ Nom | Acc | Vocative|CPrep P_se |CPrep PNul => thalass + "ες" ;
+ Gen|CPrep P_Dat => mkGen thalassa
+ }
+ } ;
+ g = g
+ } ;
+
+ ----------------Feminine nouns in -η with plural in -εις with stress movement--------------
+ mkNoun_kivernisi : (s1,_ : Str) -> Gender -> Noun =
+ \kivernisi, kiverniseis, g ->
+ let
+ kivernis = init kivernisi ;
+ kivernIs = Predef.tk 3 kiverniseis ;
+ in {
+ s = table {
+ Sg => table {
+ Nom |Acc | Vocative|CPrep P_se |CPrep PNul => kivernisi ;
+ Gen |CPrep P_Dat=> kivernis + "ης"
+ } ;
+ Pl => table {
+ Nom | Acc | Vocative |CPrep P_se |CPrep PNul => kiverniseis;
+ Gen |CPrep P_Dat=> kivernIs + "εων"
+ }
+ } ;
+ g = g
+ } ;
+
+ ----------------Neuter nouns in -ι , with stress movement--------------
+ mkNoun_agori : (s: Str) -> Gender -> Noun =
+ \agOri, g ->
+ let
+ agori = mkStemNouns agOri;
+ in {
+ s = table {
+ Sg => table {
+ Nom | Acc | Vocative|CPrep P_se |CPrep PNul => agOri ;
+ Gen |CPrep P_Dat=> mkGenSg agori
+ } ;
+ Pl => table {
+ Nom | Acc | Vocative|CPrep P_se |CPrep PNul => mkNomPl agOri;
+ Gen |CPrep P_Dat=> mkGen agOri
+
+ }
+ } ;
+ g = g
+ } ;
+
+
+ ----------------Neuter nouns in -oς , with stress movement in genSg and gen/accPl--------------
+ mkNoun_megethos: (s1,_ : Str) -> Gender -> Noun =
+ \mEgethos, megEthi, g ->
+ let
+ megEth = init megEthi ;
+ megethos = mkStemNouns mEgethos ;
+ in {
+ s = table {
+ Sg => table {
+ Nom | Acc | Vocative |CPrep P_se |CPrep PNul => mEgethos ;
+ Gen |CPrep P_Dat=> megEth + "ους"
+ } ;
+ Pl => table {
+ Nom | Acc | Vocative |CPrep P_se |CPrep PNul => megEthi;
+ Gen|CPrep P_Dat => mkGen megethos
+ }
+ } ;
+ g = g
+ } ;
+
+ ----------------Neuter nouns in -μα, -ιμο ,with stress movement in genSg and gen/accPl, and syllable augmentation. --------------
+ mkNoun_provlima: (s1,_ : Str) -> Gender -> Noun =
+ \prOvlima, provlimata, g ->
+ let
+ provlImat = init provlimata ;
+ provlima = mkStemNouns prOvlima ;
+ in {
+ s = table {
+ Sg => table {
+ Nom | Acc | Vocative |CPrep P_se |CPrep PNul => prOvlima ;
+ Gen |CPrep P_Dat=> provlImat + "ος"
+ } ;
+ Pl => table {
+ Nom | Acc | Vocative |CPrep P_se |CPrep PNul=> provlimata;
+ Gen|CPrep P_Dat => mkGen provlima
+ }
+ } ;
+ g = g
+ } ;
+
+
+ ---------------Neuter nouns in -o , with stress movement--------------
+ mkNoun_prosopo : (s1,_ : Str) -> Gender -> Noun =
+ \prOsopo, prosOpon, g ->
+ let
+ prosOpo = init prosOpon ;
+ prosOp = init prosOpo ;
+ in {
+ s = table {
+ Sg => table {
+ Nom | Acc | Vocative|CPrep P_se |CPrep PNul => prOsopo ;
+ Gen |CPrep P_Dat=> prosOp + "ου"
+ } ;
+ Pl => table {
+ Nom |Acc | Vocative |CPrep P_se |CPrep PNul=> mkNomPl prOsopo ;
+ Gen |CPrep P_Dat=> prosOpon
+ }
+ } ;
+ g = g
+ } ;
+
+
+ mkNoun_anthropos : (s1,_ : Str) -> Gender -> Noun =
+ \anthropos, anthropon, g ->
+ let
+ anthrop = Predef.tk 2 anthropos ;
+ anthrOp = Predef.tk 2 anthropon ;
+ in {
+ s = table {
+ Sg => table {
+ Nom => anthropos ;
+ Gen|CPrep P_Dat => anthrOp + "ου" ;
+ Acc |CPrep P_se |CPrep PNul => anthrop + "ο";
+ Vocative => anthrop + "ε"
+ } ;
+ Pl => table {
+ Nom | Vocative=> anthrop + "οι" ;
+ Gen |CPrep P_Dat=> anthropon ;
+ Acc |CPrep P_se |CPrep PNul => anthrOp + "ους"
+ }
+ } ;
+ g = g
+ } ;
+
+
+
+ ----------------Neuter nouns in -ς , with stress movement,syllabic augmentation, irregular (φως, γεγονός, ημίφως) --------------
+ mkNoun_fws: (s1,_ : Str) -> Gender -> Noun =
+ \fws, fwtos, g ->
+ let
+ fW = init fws ;
+ in {
+ s = table {
+ Sg => table {
+ Nom | Acc | Vocative|CPrep P_se |CPrep PNul=> fws ;
+ Gen |CPrep P_Dat=>fwtos
+ } ;
+ Pl => table {
+ Nom | Acc | Vocative |CPrep P_se |CPrep PNul => fW + "τα";
+ Gen |CPrep P_Dat=> fW + "των"
+ }
+ } ;
+ g = g
+ } ;
+
+
+
+
+ ----------------Neuter nouns in -ν , with stress movement --------------
+ mkNoun_endiaferon: (s1: Str) -> Gender -> Noun =
+ \endiaferon, g ->
+ {
+ s = table {
+ Sg => table {
+ Nom | Acc | Vocative |CPrep P_se |CPrep PNul=> endiaferon ;
+ Gen |CPrep P_Dat=> mkGenSg endiaferon
+ } ;
+ Pl => table {
+ Nom | Acc | Vocative |CPrep P_se |CPrep PNul => mkNomPl endiaferon;
+ Gen |CPrep P_Dat=> mkGen endiaferon
+ }
+ } ;
+ g = g
+ } ;
+
+ --------Indeclinable Nouns------------
+ mkNounAklito: Str -> Gender -> Noun =
+ \s1, g ->
+ {
+ s = table {
+ Sg | Pl => table {
+ Nom | Acc | Vocative |Gen |CPrep P_Dat| CPrep P_se |CPrep PNul => s1
+ }
+ } ;
+ g = g
+ } ;
+
+
+
+ mkGen : Str -> Str = \s -> case s of {
+ c + "άι" => c + "αγιών" ;
+ c + "όι" => c + "ογιών" ;
+ c + v@(#stressedVowel) + x@(_ + _) + "α" =>c + unstress v + x + "ών" ;
+ c + v@(#stressedVowel) + x@(_ + _) + "ος" =>c + unstress v + x + "ών" ;
+ c + "έας" => c + "έων" ;
+ c + "ής" => c + "ών" ;
+ --c + "ης" => c + "ών" ;
+ c + "ος" => c + "ών" ;
+ c + "άν" => c + "άντων" ;
+ c + "όν" => c + "όντων" ;
+ c + ("α" | "ο" ) => c + "άτων" ;
+
+ c + v@(#stressedVowel) + x@(_ + _) + "ας" =>c + unstress v + x + "ών" ;
+ c + v@(#stressedVowel) + x@(_ + _) + "η" =>c + unstress v + x + "ών" ;
+ c + v@(#stressedVowel) + x@(_ + _) + "ης" =>c + unstress v + x + "ών" ;
+ c + v@(#stressedVowel) + x@(_ + _) + ("ι" | "υ") =>c + unstress v + x + "ιών" ;
+ c + v@(#stressedVowel) + x@(_ + _) + "εν" =>c + unstress v + x + "έντων" ;
+ c + v@(#stressedVowel) + x@(_ + _) + "ον" =>c + unstress v + x + "όντων"
+ } ;
+
+
+
+ mkGenSg : Str -> Str = \s ->
+ case s of
+ {x + "η" => x + "ης";
+ x + "ος" => x + "ους";
+ x + "αι" => x + "αγιού";
+ x + "οι" => x + "ογιού";
+ x + "ης" => x + "η";
+ x + "α" => x + "ας";
+ x + "έας" => x + "έα";
+ x + "ο" => x + "ου";
+ x + "ής" => x + "ή";
+ x + "ον" => x + "οντος";
+ x + "όν" => x + "όντος";
+ x + "εν" => x + "εντος";
+ x + "άν" => x + "άντος";
+ x + ("ι" | "υ") => x + "ιού";
+ x + "ας" => x + "α"
+ };
+
+ mkNomPl : Str -> Str = \s ->
+ case s of
+ {
+ x + "έας" => x + "είς" ;
+ x + "ής" => x + "είς" ;
+ x + "ης" => x + "ες" ;
+ x + "ος" => x + "η" ;
+ x + "άι" => x + "άγια";
+ x + "όι" => x + "όγια";
+ x + "ον" => x + "οντα";
+ x + "όν" => x + "όντα";
+ x + "άν" => x + "άντα";
+ x + "εν" => x + "εντα";
+ x + ("ι" | "υ") => x + "ια" ;
+ x + "ας" => x + "ες" ;
+ x + "ο" => x + "α"
+ };
+
+
+ mkAccSg : Str -> Str = \s ->
+ case s of
+ {x + "ής" => x + "ή" ;
+ x + "ης" => x + "η" ;
+ x + "έας" => x + "έα";
+ x + "ος" => x + "ος";
+ x + "ας" => x + "α"
+ };
+
+
+
+
+ mkStemNouns : Str -> Str = \s -> case s of {
+ c + v@(#stressedVowel) + x@(_ + _) =>c + unstress v + x
+ } ;
+
+
+
+
+
+
+
+ --Nouns with no stress movement.
+ regN: Str -> Noun = \s-> case s of {
+ kaloger + "ος" => mkNoun s (kaloger + "ου") (kaloger + "ο") (kaloger + "ε") (kaloger + "οι") (kaloger + "ων") (kaloger + "ους")(kaloger + "οι") Masc ;
+ ouran + "ός" => mkNoun s (ouran + "ού") (ouran + "ό") (ouran + "έ") (ouran + "οί") (ouran + "ών") (ouran + "ούς") (ouran + "οί") Masc ;
+ ypologist + "ής" => mkNoun s (ypologist + "ή") (ypologist + "ή") (ypologist + "ή") (ypologist + "ές") (ypologist + "ών") (ypologist + "ές") (ypologist + "ές") Masc ;
+ pater + "ας" => mkNoun s (pater + "α") (pater + "α") (pater + "α") (pater + "ες") (pater + "ων") (pater + "ες")(pater + "ες") Masc ;
+ tom + "έας" => mkNoun s (tom + "έα") (tom + "έα") (tom + "έα")(tom + "είς") (tom + "έων") (tom + "είς") (tom + "είς")Masc ;
+ agelad + "α" => mkNoun s (agelad + "ας") (agelad + "α") (agelad + "α")(agelad + "ες") (agelad + "ων") (agelad + "ες") (agelad + "ες")Fem ;
+ koili + "ά" => mkNoun s (koili + "άς") (koili + "ά") (koili + "ά")(koili + "ές") (koili + "ών") (koili + "ές") (koili + "ές")Fem ;
+ allag + "ή" => mkNoun s (allag + "ής") (allag + "ή") (allag + "ή")(allag + "ές") (allag + "ών") (allag + "ές") (allag + "ές")Fem ;
+ pswm + "ί" => mkNoun s (pswm + "ιού") (pswm + "ί") (pswm + "ί") (pswm + "ιά") (pswm + "ιών") (pswm + "ιά") (pswm + "ιά") Neut ;
+ mwr + "ό" => mkNoun s (mwr + "ού") (mwr + "ό") (mwr + "ό") (mwr + "ά") (mwr+ "ών") (mwr + "ά") (mwr + "ά") Neut ;
+ vivli + "ο" => mkNoun s (vivli + "ου") (vivli + "ο")(vivli + "ο") (vivli + "α") (vivli+ "ων") (vivli + "α") (vivli + "α") Neut
+
+ };
+
+ --Nouns with no stress movement, that augment the number of syllables when declined.
+ regNaniso: Str -> Noun = \s-> case s of {
+ manav + "ης" => mkNoun s (manav + "η") (manav + "η") (manav + "η")(manav + "ηδες") (manav + "ηδων") (manav + "ηδες") (manav + "ηδες")Masc ;
+ aer + "ας" => mkNoun s (aer + "α") (aer + "α") (aer + "α")(aer + "ηδες") (aer + "ηδων") (aer + "ηδες") (aer + "ηδες")Masc ;
+ mpogiatz + "ής" => mkNoun s (mpogiatz + "ή") (mpogiatz + "ή")(mpogiatz + "ή") (mpogiatz + "ήδες") (mpogiatz + "ήδων") (mpogiatz + "ήδες") (mpogiatz + "ήδες") Masc ;
+ kanap + "ές" => mkNoun s (kanap + "έ") (kanap + "έ")(kanap + "έ") (kanap + "έδες") (kanap + "έδων") (kanap + "έδες") (kanap + "έδες") Masc ;
+ papp + "ούς" => mkNoun s (papp + "ού") (papp + "ού") (papp + "ού")(papp + "ούδες") (papp + "ούδων") (papp + "ούδες") (papp + "ούδες")Masc ;
+ pap + "άς" => mkNoun s (pap + "ά") (pap + "ά") (pap + "ά") (pap + "άδες") (pap + "άδων") (pap + "άδες") (pap + "άδες") Masc ;
+ giagi + "ά" => mkNoun s (giagi + "άς") (giagi + "ά") (giagi + "ά") (giagi + "άδες") (giagi + "άδων") (giagi + "άδες") (giagi + "άδες")Fem ;
+ alep + "ού" => mkNoun s (alep + "ούς") (alep + "ού") (alep + "ού") (alep + "ούδες") (alep + "ούδων") (alep + "ούδες") (alep + "ούδες") Fem ;
+ ix + "ώ" => mkNoun s (ix + "ούς") (ix + "ώ") (ix + "ώ") ("") ("") ("") ("") Fem ; -----this is an exeption noun
+ ox + "ύ" => mkNoun s (ox + "έος") (ox + "ύ") (ox + "ύ")(ox + "έα") (ox + "έων") (ox + "έα") (ox + "έα") Neut ; ---this is an exeption noun
+ plout + "ος" => mkNoun s (plout + "ου") (plout + "ο") (plout + "ε")(plout + "η") (plout + "ων") (plout + "η") (plout + "η") Change;
+ san + "ός" => mkNoun s (san + "ού") (san + "ό") (san + "έ")(san + "ά") (san + "ών") (san + "ά") (san + "ά") Change
+ };
+
+ regIrreg: Str -> Noun = \s-> case s of {
+ kre + "ας" => mkNoun s (mkStemNouns kre + "ατος") (kre + "ας") (kre + "ας")(kre + "ατα") (mkStemNouns kre + "άτων") (kre + "ατα") (kre + "ατα") Neut;
+ xron + "ος" => mkNoun s (xron + "ου") (xron + "ο") (xron + "ε")(xron + "ια") (xron + "ων") (xron + "ια") (xron + "ια") Change;
+ gal + "α" => mkNoun s ( gal + "ατος") (gal + "α") (gal + "α")(gal + "ατα") (mkStemNouns gal + "άτων") (gal + "ατα") (gal + "ατα") Neut ;
+ mel + "ι" => mkNoun s ( mel + "ιτος") (mel + "ι") (mel + "ι")(mel + "ια") (mkStemNouns mel + "ιών") (mel + "ια") (mel + "ια") Neut ;
+ p + "ύρ" => mkNoun s ( p + "υρός") (p + "ύρ") (p + "ύρ")(p + "υρά") ( p + "υρών") (p + "υρά") (p + "υρά") Neut ; ---exeptions from ancient greek
+ ip + "αρ" => mkNoun s ( ip + "ατος") (ip + "αρ") (ip + "αρ")(ip + "ατα") ( mkStemNouns ip + "άτων") (ip + "ατα") (ip + "ατα") Neut ---exeptions from ancient greek
+ };
+
+
+
+
+ --------------------------ADJECTIVES/ADVERBS -------------------------
+ ----------------------------------------------------------------------
+
+ -------suffixed comparative form of an adjective-------------------
+ mkComparative : Str -> Str = \s ->
+ case s of
+ {
+ x + "κακός" => x + "χειρότερος" ;
+ x + "καλός" => x + "καλύτερος" ;
+ x + "μεγάλος" => x + "μεγαλύτερος" ;
+ x + "ύς" => x + "ύτερος" ;
+ x + "ής" => x + "έστερος" ;
+ x + "ός" => x + "ότερος" ;
+ c + v@(#stressedVowel) + x@(_ + _) + "ος" =>c + unstress v + x + "ότερος" ;
+ c + v@(#stressedVowel) + x@(_ + _) + ("ής" | "ης") =>c + unstress v + x + "έστερος"
+ };
+
+
+
+ -----Creates the adverb, by using Neutral, Sg, Nom ------
+ mkAdverb : Str -> Str =
+ \s -> case s of
+ {
+ x + "ο" => x + "α" ;
+ x + "ό" => x + "ά" ;
+ x + "γον" => x + "γόντως" ;
+ x + "λον" =>x + "λοντικά" ;
+ x + "ής" => x + "ώς" ;
+ x + "ης" => x + "ως" ;
+ x + "ές" => x + "ώς" ;
+ x + "ύ" => x + "ιά" ;
+ x + "ικο" => x + "ικα"
+ };
+
+
+ mkAdverb2 : Str -> Str =
+ \s -> case s of
+ {
+ x + "ύ" => x + "έως"
+ };
+
+ -----comparative form of the adverb ------
+ mkAdverbCompar : Str -> Str =
+ \s -> case s of
+ {x + "κακό" => x + "χειρότερα" ;
+ x + "καλό" => x + "καλύτερα" ;
+ x + "ο" => x + "ότερα" ;
+ x + "ό" => x + "ότερα" ;
+ x + "ύ" => x + "ύτερα" ;
+ x + "έως" => x + "ύτερα" ;
+ x + "ές" => x + "έστερα"
+
+ };
+
+
+ -----superlative form of the adverb ------
+ mkAdverbSuper : Str -> Str =
+ \s -> case s of
+ {x + "κακό" => x + "κάκιστα" ;
+ x + "καλό" => x + "κάλιστα" ;
+ x + ("ο" | "ό" ) => x + "ότατα" ;
+ x + "ύ" => x + "ύτατα" ;
+ x + "έως" => x + "ύτατα" ;
+ x + "ές" => x + "έστατα"
+
+ };
+
+ ----Adjectives that form the comparative with a suffix----------
+ mkAdjective2 : (s1,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_: Str) -> Adj = \sn,sg,sa,sv,pn,pg,pa,snf,sgf,pnf,pgf,snn,sgn,pnn,pgn, comp ->
+ let
+ adverb = mkAdverb snn;
+ comp1 = mkComparative sn;
+ comp =Predef.tk 2 comp1 ;
+ in {
+ s = table { Posit => table {
+ Masc => table {
+ Sg => table {
+ Nom => sn ; Gen |CPrep P_Dat=> sg ; Acc |CPrep P_se |CPrep PNul => sa ; Vocative => sv
+ } ;
+ Pl => table {
+ Nom | Vocative => pn ; Gen |CPrep P_Dat=> pg ; Acc |CPrep P_se |CPrep PNul => pa
+ }} ;
+ Change=> table {
+ Sg => table {
+ Nom => sn ; Gen|CPrep P_Dat => sg ; Acc |CPrep P_se |CPrep PNul => sa ; Vocative => sv
+ } ;
+ Pl => table {
+ Nom | Acc | Vocative|CPrep P_se |CPrep PNul => pnn ; Gen |CPrep P_Dat=> pgn
+ }} ;
+ Fem => table {
+ Sg => table {
+ Nom | Acc | Vocative|CPrep P_se |CPrep PNul => snf ; Gen|CPrep P_Dat => sgf
+ } ;
+ Pl => table {
+ Nom | Acc | Vocative |CPrep P_se |CPrep PNul => pnf ; Gen |CPrep P_Dat=> pgf
+ }} ;
+ Neut => table {
+ Sg => table {
+ Nom | Acc | Vocative |CPrep P_se |CPrep PNul => snn ; Gen|CPrep P_Dat => sgn
+ } ;
+ Pl => table {
+ Nom | Acc | Vocative |CPrep P_se |CPrep PNul=> pnn ; Gen|CPrep P_Dat => pgn
+ }} } ;
+ Compar | Superl => table {
+ Masc => table {
+ Sg => table {
+ Nom => comp1 ; Gen|CPrep P_Dat => comp + "ου"; Acc |CPrep P_se |CPrep PNul=> comp + "ο"; Vocative => comp + "ος"
+ } ;
+ Pl => table {
+ Nom | Vocative => comp + "οι"; Gen|CPrep P_Dat => comp+ "ων"; Acc |CPrep P_se |CPrep PNul => comp + "ους"
+ }} ;
+ Fem => table {
+ Sg => table {
+ Nom | Acc | Vocative|CPrep P_se |CPrep PNul => comp + "η" ; Gen|CPrep P_Dat => comp + "ης"
+ } ;
+ Pl => table {
+ Nom | Acc | Vocative|CPrep P_se |CPrep PNul => comp + "ες"; Gen |CPrep P_Dat=> comp + "ων"
+ }} ;
+ Neut | Change=> table {
+ Sg => table {
+ Nom | Acc | Vocative|CPrep P_se |CPrep PNul => comp + "ο" ; Gen |CPrep P_Dat=> comp + "ου"
+ } ;
+ Pl => table {
+ Nom | Acc |Vocative|CPrep P_se |CPrep PNul => comp + "α"; Gen|CPrep P_Dat => comp + "ων"
+ }} }
+ } ;
+ adv = table { Posit => adverb ; Compar => mkAdverbCompar snn ; Superl => mkAdverbSuper snn} ;
+ } ;
+
+
+ ----Adjectives that form the comparative with a suffix, irregularities in the formation of adverbs.
+ -----It concerns mostly adjectives with endings -ύς, -εία, -ύ, that differenciate from those ending in -ύς, -ιά, -ύ.
+ mkAdjectiveIr : (s1,_ : Str) -> Adj = \eythis,eytheos ->
+ let
+ eyth = Predef.tk 2 eythis;
+ eythIteros = mkComparative eythis ;
+ eythIter = Predef.tk 2 eythIteros;
+ adverb = eytheos;
+ in {
+ s = table { Posit | Superl => table {
+ Masc | Change => table {
+ Sg => table {
+ Nom => eythis ; Gen |CPrep P_Dat=> eyth + "έος" ; Acc |CPrep P_se |CPrep PNul| Vocative => eyth + "ύ"
+ } ;
+ Pl => table {
+ Nom | Vocative |Acc |CPrep P_se |CPrep PNul => eyth + "είς" ; Gen|CPrep P_Dat => eyth + "έων"
+ }} ;
+ Fem => table {
+ Sg => table {
+ Nom | Acc | Vocative|CPrep P_se |CPrep PNul => eyth + "εία"; Gen |CPrep P_Dat=> eyth + "είας"
+ } ;
+ Pl => table {
+ Nom | Acc | Vocative|CPrep P_se |CPrep PNul => eyth + "είες" ; Gen |CPrep P_Dat=> eyth + "ειών"
+ }} ;
+ Neut => table {
+ Sg => table {
+ Nom | Acc | Vocative |CPrep P_se |CPrep PNul => eyth + "ύ" ; Gen |CPrep P_Dat=> eyth + "έος"
+ } ;
+ Pl => table {
+ Nom | Acc | Vocative |CPrep P_se |CPrep PNul=> eyth + "έα" ; Gen|CPrep P_Dat => eyth + "έων"
+ }} };
+ Compar => table {
+ Masc | Change => table {
+ Sg => table {
+ Nom | Vocative => eythIteros ; Gen|CPrep P_Dat => eythIter + "ου"; Acc |CPrep P_se |CPrep PNul => eythIter + "ο"
+ } ;
+ Pl => table {
+ Nom | Vocative => eythIter + "οι"; Gen|CPrep P_Dat => eythIter+ "ων"; Acc |CPrep P_se |CPrep PNul => eythIter + "ους"
+ }} ;
+ Fem => table {
+ Sg => table {
+ Nom | Acc | Vocative |CPrep P_se |CPrep PNul => eythIter + "η" ; Gen|CPrep P_Dat => eythIter + "ης"
+ } ;
+ Pl => table {
+ Nom | Acc | Vocative |CPrep P_se |CPrep PNul=> eythIter + "ες"; Gen |CPrep P_Dat=> eythIter + "ων"
+ }} ;
+ Neut => table {
+ Sg => table {
+ Nom | Acc | Vocative |CPrep P_se |CPrep PNul => eythIter + "ο" ; Gen|CPrep P_Dat => eythIter + "ου"
+ } ;
+ Pl => table {
+ Nom | Acc | Vocative|CPrep P_se |CPrep PNul => eythIter + "α"; Gen|CPrep P_Dat => eythIter + "ων"
+ }} }
+ } ;
+ adv = table { Posit => eytheos ; Compar => mkAdverbCompar eytheos ; Superl => mkAdverbSuper eytheos} ;
+ } ;
+
+
+
+ -------Adjectives that form the comparative using "πιό"------
+ mkAdjective : (s1,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Adj = \sn,sg,sa,sv,pn,pg,pa,snf,sgf,pnf,pgf,snn,sgn,pnn,pgn ->
+ let
+ adverb = mkAdverb snn;
+ a = "πιό";
+ in {
+ s = table { Posit => table {
+ Masc => table {
+ Sg => table {
+ Nom => sn ; Gen|CPrep P_Dat => sg ; Acc |CPrep P_se |CPrep PNul => sa ; Vocative => sv
+ } ;
+ Pl => table {
+ Nom | Vocative => pn ; Gen |CPrep P_Dat=> pg ; Acc |CPrep P_se |CPrep PNul => pa
+ }} ;
+ Change=> table {
+ Sg => table {
+ Nom => sn ; Gen|CPrep P_Dat => sg ; Acc |CPrep P_se |CPrep PNul=> sa ; Vocative => sv
+ } ;
+ Pl => table {
+ Nom | Acc | Vocative|CPrep P_se |CPrep PNul => pnn ; Gen|CPrep P_Dat => pgn
+ }} ;
+ Fem => table {
+ Sg => table {
+ Nom | Acc | Vocative|CPrep P_se |CPrep PNul => snf ; Gen|CPrep P_Dat => sgf
+ } ;
+ Pl => table {
+ Nom | Acc | Vocative |CPrep P_se |CPrep PNul => pnf ; Gen |CPrep P_Dat=> pgf
+ }} ;
+ Neut => table {
+ Sg => table {
+ Nom | Acc | Vocative |CPrep P_se |CPrep PNul => snn ; Gen|CPrep P_Dat => sgn
+ } ;
+ Pl => table {
+ Nom | Acc | Vocative |CPrep P_se |CPrep PNul=> pnn ; Gen |CPrep P_Dat=> pgn
+ }} } ;
+ Compar| Superl => table {
+ Masc => table {
+ Sg => table {
+ Nom => a ++ sn ; Gen|CPrep P_Dat => a ++ sg ; Acc |CPrep P_se |CPrep PNul => a ++ sa ; Vocative => a ++ sv
+ } ;
+ Pl => table {
+ Nom | Vocative => a ++ pn ; Gen |CPrep P_Dat=> a ++ pg ; Acc |CPrep P_se |CPrep PNul=> a ++ pa
+ }} ;
+ Fem => table {
+ Sg => table {
+ Nom | Acc | Vocative|CPrep P_se |CPrep PNul => a ++ snf ; Gen|CPrep P_Dat => a ++ sgf
+ } ;
+ Pl => table {
+ Nom | Acc | Vocative |CPrep P_se |CPrep PNul => a ++ pnf ; Gen|CPrep P_Dat => a ++pgf
+ }} ;
+ Neut | Change=> table {
+ Sg => table {
+ Nom | Acc | Vocative |CPrep P_se |CPrep PNul => a ++ snn ; Gen|CPrep P_Dat => a ++ sgn
+ } ;
+ Pl => table {
+ Nom | Acc | Vocative|CPrep P_se |CPrep PNul => a ++ pnn ; Gen|CPrep P_Dat => a ++ pgn
+ }} }
+ };
+ adv = table { Posit => adverb ; Compar => adverb ; Superl => adverb} ;
+ } ;
+
+
+ -------Category of adjectives ending in -ων, -ουσα, -ον with stress movement.------------------
+ mkAdjective3 : (s1,_ : Str) -> Adj = \epeigwn,epeigontwn ->
+ let
+ a = "πιό";
+ epeIg = Predef.tk 2 epeigwn;
+ epeIgon = epeIg + "ον" ;
+ epeig = mkStemNouns epeIg ;
+ epeigon = mkStemNouns epeIgon ;
+ adverb = mkAdverb epeigon;
+ in {
+ s = table { Posit => table {
+ Masc | Change => table {
+ Sg => table {
+ Nom | Vocative => epeigwn ; Gen |CPrep P_Dat=> epeIg + "οντος" ; Acc |CPrep P_se |CPrep PNul => epeIg + "οντα"
+ } ;
+ Pl => table {
+ Nom | Vocative |Acc |CPrep P_se |CPrep PNul => epeIg + "οντες" ; Gen |CPrep P_Dat=> epeigontwn
+ }} ;
+ Fem => table {
+ Sg => table {
+ Nom | Acc | Vocative|CPrep P_se |CPrep PNul => epeIg + "ουσα";Gen |CPrep P_Dat=> epeIg + "ουσας"
+ } ;
+ Pl => table {
+ Nom | Acc |Vocative|CPrep P_se |CPrep PNul => epeIg + "ουσες" ; Gen|CPrep P_Dat => epeig + "ουσών"
+ }} ;
+ Neut => table {
+ Sg => table {
+ Nom | Acc | Vocative |CPrep P_se |CPrep PNul => epeIg + "ον" ; Gen|CPrep P_Dat => epeIg + "οντος"
+ } ;
+ Pl => table {
+ Nom | Acc | Vocative |CPrep P_se |CPrep PNul=> epeIg + "οντα" ; Gen |CPrep P_Dat=> epeigontwn
+ }} };
+ Compar | Superl => table {
+ Masc | Change => table {
+ Sg => table {
+ Nom | Vocative => a ++ epeigwn; Gen |CPrep P_Dat=> a ++ epeIg + "οντος" ; Acc |CPrep P_se |CPrep PNul => a ++ epeIg + "οντα"
+ } ;
+ Pl => table {
+ Nom | Vocative | Acc | CPrep P_se |CPrep PNul => a ++ epeIg + "οντες" ; Gen|CPrep P_Dat => a ++ epeigontwn
+ }} ;
+ Fem => table {
+ Sg => table {
+ Nom | Acc | Vocative |CPrep P_se |CPrep PNul => a ++ epeIg + "ουσα" ; Gen |CPrep P_Dat=> a ++ epeIg + "ουσας"
+ } ;
+ Pl => table {
+ Nom | Acc | Vocative |CPrep P_se |CPrep PNul => a ++ epeIg + "ουσες" ; Gen|CPrep P_Dat => a ++ epeig + "ουσών"
+ }} ;
+ Neut => table {
+ Sg => table {
+ Nom | Acc | Vocative|CPrep P_se |CPrep PNul => a ++ epeIg + "ον"; Gen |CPrep P_Dat=> a ++ epeIg + "οντος"
+ } ;
+ Pl => table {
+ Nom | Acc | Vocative|CPrep P_se |CPrep PNul => a ++ epeIg + "οντα" ; Gen |CPrep P_Dat=> a ++ epeigontwn
+ }} }
+ } ;
+ adv = table { Posit => adverb ; Compar => a ++ adverb ; Superl => a ++ adverb} ;
+ } ;
+
+
+
+ -------Category of adjectives ending in -ης, -ης, -ες with stress movement in Neutral.------------------
+ mkAdjective4 : (s1,_: Str) -> Adj = \sinithis,sInithes ->
+ let
+ adverb = mkAdverb sinithis;
+ sinIthi = init sinithis;
+ sinIth = Predef.tk 2 sinithis;
+ sin = mkComparative sinithis ;
+ si = Predef.tk 2 sin;
+ in
+ {
+ s = table { Posit => table {
+ Masc | Fem | Change=> table {
+ Sg => table {
+ Nom => sinithis ; Gen|CPrep P_Dat => sinIth + "ους" ; Acc | Vocative|CPrep P_se |CPrep PNul => sinIthi
+ } ;
+ Pl => table {
+ Nom | Vocative | Acc |CPrep P_se |CPrep PNul => sinIth + "εις" ; Gen |CPrep P_Dat=> sinIth + "ων"
+ }} ;
+ Neut => table {
+ Sg => table {
+ Nom | Acc | Vocative |CPrep P_se |CPrep PNul => sInithes ; Gen |CPrep P_Dat=> sinIth + "ους"
+ } ;
+ Pl => table {
+ Nom | Acc |Vocative|CPrep P_se |CPrep PNul => sinIthi ; Gen |CPrep P_Dat=> sinIth + "ων"
+ }} } ;
+ Compar | Superl => table {
+ Masc | Change => table {
+ Sg => table {
+ Nom => sin ; Gen |CPrep P_Dat=> si + "ου"; Acc |CPrep P_se |CPrep PNul => si + "ο"; Vocative => si + "ος"
+ } ;
+ Pl => table {
+ Nom | Vocative => si + "οι"; Gen |CPrep P_Dat=> si+ "ων"; Acc |CPrep P_se |CPrep PNul =>si + "ους"
+ }} ;
+ Fem => table {
+ Sg => table {
+ Nom | Acc | Vocative|CPrep P_se |CPrep PNul => si + "η" ; Gen |CPrep P_Dat=> si + "ης"
+ } ;
+ Pl => table {
+ Nom | Acc | Vocative |CPrep P_se |CPrep PNul => si + "ες"; Gen |CPrep P_Dat=> si + "ων"
+ }} ;
+ Neut => table {
+ Sg => table {
+ Nom | Acc |Vocative|CPrep P_se |CPrep PNul=> si + "ο" ; Gen|CPrep P_Dat => si + "ου"
+ } ;
+ Pl => table {
+ Nom | Acc | Vocative |CPrep P_se |CPrep PNul=> si + "α"; Gen |CPrep P_Dat=> si + "ων"
+ }} }
+ } ;
+ adv = table { Posit => adverb ; Compar => sin ++ "τερα" ; Superl => sin ++ "τατα"} ;
+ } ;
+
+
+
+ ------ Indeclinable Adjectives ------
+ mkAdjAklito : Str -> Adj = \s1 ->
+ let
+ a = "πιό" ;
+ in {
+ s = table { Posit | Superl => table {
+ Masc |Fem | Neut | Change => table {
+ Sg |Pl => table {
+ Nom | Gen | Acc| Vocative |CPrep P_se |CPrep PNul|CPrep P_Dat => s1
+ } }
+ } ;
+ Compar => table {
+ Masc |Fem | Neut | Change => table {
+ Sg |Pl => table {
+ Nom | Gen | Acc| Vocative | CPrep P_se |CPrep PNul |CPrep P_Dat => a ++ s1
+ } }}
+ };
+ adv = table { Posit => " " ; Compar => " " ; Superl => " "} ;
+ } ;
+
+
+
+ ---Adjectives with endings -ος (-ός), -η, -ο
+
+ regAdj : Str -> Adj = \mikros -> case mikros of {
+ mikr + "ός" => mkAdjective mikros (mikr + "ού") (mikr + "ό")(mikr + "έ") (mikr + "οί")(mikr + "ών")(mikr + "ούς")
+ (mikr + "ή") (mikr + "ής") (mikr + "ές")(mikr + "ών")
+ (mikr + "ό")(mikr + "ού")(mikr + "ά")(mikr + "ών") ;
+ omorf + "ος" => mkAdjective mikros (omorf + "ου") (omorf + "ο") (omorf + "ε") (omorf + "οι")(omorf + "ων")(omorf + "ους")
+ (omorf + "η") (omorf + "ης") (omorf + "ες")(omorf + "ων")
+ (omorf + "ο")(omorf + "ου")(omorf + "α")(omorf + "ων") ;
+ ex + "ων" => mkAdjective mikros (ex + "οντος") (ex + "οντα") (ex + "οντα") (ex + "οντες")(unstress ex + "όντων")(ex + "οντες")
+ (ex + "ουσα")(ex + "ουσας") (ex + "ουσες")(ex + "ουσων")
+ (ex + "ον")(ex+ "οντος")(ex + "οντα")(unstress ex + "όντων") ;
+ nonExist => mkAdjective mikros (nonExist ) (nonExist ) (nonExist ) (nonExist)(nonExist )(nonExist )
+ (nonExist ) (nonExist ) (nonExist )(nonExist )
+ (nonExist )(nonExist )(nonExist )(nonExist )
+
+ } ;
+
+
+ -----adjectives with endings -ος (-ός), -α , -ο | -ύς, -ια , -υ | -ης, -α , -ικο | -ών, -ουσα , -ων και -ης , -ια, -ι
+
+ regAdj1 : Str -> Adj = \metrios -> case metrios of {
+ metri + "ος" => mkAdjective metrios (metri + "ου") (metri + "ο")(metri + "ε") (metri + "οι")(metri + "ων")(metri + "ους")
+ (metri + "α") (metri + "ας") (metri + "ες")(metri + "ων")
+ (metri + "ο")(metri + "ου")(metri + "α")(metri + "ων") ;
+ pali+ "ός" => mkAdjective metrios (pali + "ού") (pali + "ό")(pali + "έ") (pali + "οί")(pali + "ών")(pali + "ούς")
+ (pali + "ά") (pali + "άς") (pali + "ές")(pali + "ών")
+ (pali + "ό")(pali + "ού")(pali + "ά")(pali + "ών") ;
+ pax + "ύς" => mkAdjective metrios (pax + "ύ") (pax + "ύ") (pax + "ύ")(pax + "ιοί")(pax + "ιών")(pax + "ιούς")
+ (pax + "ιά")(pax + "ιάς") (pax + "ιές")(pax + "ιών")
+ (pax + "ύ")(pax + "ιού")(pax + "ιά")(pax + "ιών") ;
+ staxt + "ής" => mkAdjective metrios (staxt + "ή") (staxt + "ή") (staxt + "ή")(staxt + "ιοί")(staxt + "ιών")(staxt + "ιούς")
+ (staxt + "ιά")(staxt + "ιάς") (staxt + "ιές")(staxt + "ιών")
+ (staxt + "ί")(staxt + "ιού")(staxt + "ιά")(staxt + "ιών") ;
+ tempel + "ης" => mkAdjective metrios (tempel + "η") (tempel + "η") (tempel + "η") (tempel + "ηδες")(tempel + "ηδων")(tempel + "ηδες")
+ (tempel + "α")(tempel + "ας") (tempel + "ες")(tempel + "ων")
+ (tempel + "ικο")(tempel + "ικου")(tempel + "ικα")(tempel + "ικων") ;
+ par + "ών" => mkAdjective metrios (par + "όντος") (par + "όντα") (par + "όντα") (par + "όντες")(par + "όντων")(par + "όντες")
+ (par + "ούσα")(par + "ούσας") (par + "ούσες")(par + "ουσών")
+ (par + "όν")(par+ "όντος")(par + "όντα")(par + "όντων")
+ } ;
+
+
+
+ -----adjectives with endings -ος, -ια , -ο |-υς, -εια , -υ | -ης, -ης , -ες
+
+ regAdj2 : Str -> Adj = \glikos -> case glikos of {
+ glik + "ός" => mkAdjective glikos (glik + "ού") (glik + "ό") (glik + "έ")(glik + "οί")(glik + "ών")(glik + "ούς")
+ (glik + "ιά") (glik + "ιάς") (glik + "ές")(glik + "ών")
+ (glik + "ό")(glik + "ού")(glik + "ά")(glik + "ών") ;
+ fresk + "ος" => mkAdjective glikos (fresk + "ου") (fresk + "ο") (fresk + "ε")(fresk + "οι")(fresk + "ων")(fresk + "ους")
+ (fresk + "ια") (fresk + "ιας") (fresk + "ες")(fresk + "ων")
+ (fresk + "ο")(fresk + "ουύ")(fresk + "α")(fresk + "ων") ;
+
+ akriv + "ής" => mkAdjective glikos (akriv + "ή") (akriv + "ή") (akriv + "ή") (akriv + "είς")(akriv + "ών")(akriv + "είς")
+ (akriv + "ής")(akriv + "ή") (akriv + "είς")(akriv + "ών")
+ (akriv + "ές")(akriv + "ούς")(akriv + "ή")(akriv + "ών")
+
+ } ;
+
+ irregAdj : Str -> Adj = \ilIthios -> case ilIthios of {
+ ilIth + "ιος" => mkAdjective ilIthios (ilIth + "ιου") (ilIth + "ιο") (ilIth + "ιε")(ilIth + "ιοι")(mkStemNouns ilIth + "ίων")(ilIth + "ιους")
+ (ilIth + "ια") (ilIth + "ιας") (ilIth + "ιες")(mkStemNouns ilIth + "ίων")
+ (ilIth + "ιο")(ilIth + "ιου")(ilIth + "ια")(mkStemNouns ilIth + "ίων")
+ } ;
+
+
+ ---------------------------------------------------------------------------------------------------------------------------------------------
+---------For Adjectives with suffixed comparative----------------
+
+ ---Adjectives with endings -ος, -η, -ο
+
+ regAdj3 : Str -> Adj = \mikros -> case mikros of {
+ mikr + "ός" => mkAdjective2 mikros (mikr + "ού") (mikr + "ό")(mikr + "έ") (mikr + "οί")(mikr + "ών")(mikr + "ούς")
+ (mikr + "ή") (mikr + "ής") (mikr + "ές")(mikr + "ών")
+ (mikr + "ό")(mikr + "ού")(mikr + "ά")(mikr + "ών") (mikr + "ότερος") ;
+ omorf + "ος" => mkAdjective2 mikros (omorf + "ου") (omorf + "ο") (omorf + "ε") (omorf + "οι")(omorf + "ων")(omorf + "ους")
+ (omorf + "η") (omorf + "ης") (omorf + "ες")(omorf + "ων")
+ (omorf + "ο")(omorf + "ου")(omorf + "α")(omorf + "ων") (omorf + "ότερος")
+ } ;
+
+
+ -----adjectives with endings -ος, -α , -ο | -υς, -ια , -υ και -ης , -ια, -ι
+
+ regAdj4 : Str -> Adj = \metrios -> case metrios of {
+ metri + "ος" => mkAdjective2 metrios (metri + "ου") (metri + "ο")(metri + "ε") (metri + "οι")(metri + "ων")(metri + "ους")
+ (metri + "α") (metri + "ας") (metri + "ες")(metri + "ων")
+ (metri + "ο")(metri + "ου")(metri + "α")(metri + "ων") (metri + "ότερος");
+ pali+ "ός" => mkAdjective2 metrios (pali + "ού") (pali + "ό")(pali + "έ") (pali + "οί")(pali + "ών")(pali + "ούς")
+ (pali + "ά") (pali + "άς") (pali + "ές")(pali + "ών")
+ (pali + "ό")(pali + "ού")(pali + "ά")(pali + "ών") (pali + "ότερος") ;
+ pax + "ύς" => mkAdjective2 metrios (pax + "ύ") (pax + "ύ") (pax + "ύ")(pax + "ιοί")(pax + "ιών")(pax + "ιούς")
+ (pax + "ιά")(pax + "ιάς") (pax + "ιές")(pax + "ιών")
+ (pax + "ύ")(pax + "ιού")(pax + "ιά")(pax + "ιών")(pax + "ύτερος");
+ staxt + "ής" => mkAdjective2 metrios (staxt + "ή") (staxt + "ή") (staxt + "ή")(staxt + "ιοί")(staxt + "ιών")(staxt + "ιούς")
+ (staxt + "ιά")(staxt + "ιάς") (staxt + "ιές")(staxt + "ιών")
+ (staxt + "ί")(staxt + "ιού")(staxt + "ιά")(staxt + "ιών") (staxt + "ύτερος")
+
+
+ } ;
+
+
+ -----adjectives with endings -ος (-ός), -ια , -ο | -ύς, -εια , -υ | -ής, -ης , -ες
+
+ regAdj5 : Str -> Adj = \glikos -> case glikos of {
+ glik + "ός" => mkAdjective2 glikos (glik + "ού") (glik + "ό") (glik + "έ")(glik + "οί")(glik + "ών")(glik + "ούς")
+ (glik + "ιά") (glik + "ιάς") (glik + "ές")(glik + "ών")
+ (glik + "ό")(glik + "ού")(glik + "ά")(glik + "ών") (glik + "ότερος") ;
+ fresk + "ος" => mkAdjective2 glikos (fresk + "ου") (fresk + "ο") (fresk + "ε")(fresk + "οι")(fresk + "ων")(fresk + "ους")
+ (fresk + "ια") (fresk + "ιας") (fresk + "ες")(fresk + "ων")
+ (fresk + "ο")(fresk + "ουύ")(fresk + "α")(fresk + "ων")(fresk + "ότερος") ;
+ akriv + "ής" => mkAdjective2 glikos (akriv + "ή") (akriv + "ή") (akriv + "ή") (akriv + "είς")(akriv + "ών")(akriv + "είς")
+ (akriv + "ής")(akriv + "ή") (akriv + "είς")(akriv + "ών")
+ (akriv + "ές")(akriv + "ούς")(akriv + "ή")(akriv + "ών") (akriv + "έστερος")
+
+ } ;
+
+
+ -----Pattern for the final -ν in the Feminine Accusative of the definite article----------
+ FemAccFinalN : pattern Str = #("ά" | "ό" | "ί"| "έ" | "ή" | "ύ"| "ώ" | "α" | "ο" | "ι"| "ε" |"η" | "υ" | "ω" |"κ"|"π" |"τ"| "ξ" |"ψ"| "γκ" |"μπ" |"ντ" );
+
+
+
+
+ mkDeterminer : (s1,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Number -> Det = \mn,mg,ma,yn,yg,ya,nn,ng,na,c,cg,ca,n ->
+ {
+ s = table {
+ Masc => table { Nom => mn ; Gen |CPrep P_Dat=> mg ; Acc |CPrep P_se |CPrep PNul => ma ; Vocative => []} ;
+ Fem => table { Nom => yn ; Gen |CPrep P_Dat=> yg ; Acc |CPrep P_se |CPrep PNul => ya ;Vocative => [] } ;
+ Neut => table { Nom => nn ; Gen |CPrep P_Dat=> ng ; Acc |CPrep P_se |CPrep PNul => na; Vocative => [] } ;
+ Change => table { Nom => c ; Gen|CPrep P_Dat => cg ; Acc |CPrep P_se |CPrep PNul => ca; Vocative => [] }
+ } ;
+ n = n ;
+ } ;
+
+
+
+ artDef : Gender -> Number -> Case -> Str = \g,n,c ->
+ case of {
+ => "ο";
+ => "του" ;
+ => prepCase c++ "τον" ;
+ => "στον" ;
+ => "η" ;
+ => "της" ;
+ => pre { FemAccFinalN => "την" ; _=> "τη"} ;
+ => pre { FemAccFinalN => "στην" ; _=> "στη"} ;
+ => prepCase c++ "το" ;
+ => "του" ;
+ => "στο" ;
+ => "οι";
+ => "των" ;
+ => prepCase c++ "τους" ;
+ => "στους" ;
+ => "οι" ;
+ => "των" ;
+ => prepCase c++ "τις";
+ => "στις";
+ < Neut | Change ,Pl, Nom |Acc |CPrep PNul > => prepCase c++ "τα" ;
+ < Neut | Change ,Pl, CPrep P_se > => "στα" ;
+ => prepCase c++ "των" ;
+ <_,_, Vocative > => " "
+ } ;
+
+
+
+
+
+ relPron : Bool => AAgr => Case => Str = \\b,ag,c =>
+ case b of {
+ False => case c of {
+ Nom => case of
+ { => "η οποία" ;
+ => "ο οποίος" ;
+ => "το οποίο" ;
+ => "οι οποίες" ;
+ => "οι οποίοι" ;
+ => "τα οποία"
+ };
+ Gen |CPrep P_Dat => case of
+ { => "της οποίας" ;
+ => "του οποίου" ;
+ => "των οποίων"
+ };
+ Acc | CPrep PNul => case of
+ { => "την οποία" ;
+ => "τον οποίο" ;
+ => "το οποίο" ;
+ => "τις οποίες" ;
+ => "τους οποίους" ;
+ => "τα οποία"
+ };
+ CPrep P_se => case of
+ { => "στην οποία" ;
+ => "στον οποίο" ;
+ => "στο οποίο" ;
+ => "στις οποίες" ;
+ => "στους οποίους" ;
+ => "στα οποία"
+ } ;
+ Vocative => case of
+ {<_,_> => " "
+ }
+ } ;
+ _ => "που"
+ } ;
+
+
+
+
+ artIndef : Gender -> Number-> Case -> Str = \g,n,c ->
+ case of {
+ => "ένας";
+ => "ενός" ;
+ => prepCase c++ "ένα";
+ => " ";
+ => prepCase c++ "μία" ;
+ => "μίας" ;
+ => prepCase c++ "μία" ;
+ => " ";
+ =>prepCase c++ "ένα" ;
+ => "ενός";
+ => " " ;
+ <_ ,Pl, _> => " "
+ } ;
+
+
+
+
+ reflPron : Agr => Case => Str = \\ag,c => case of {
+ < Ag _ Sg P1 ,Nom |Vocative > => "ο εαυτός μου" ;
+ < Ag _ Sg P1 ,Gen |CPrep P_Dat > => "του εαυτού μου" ;
+ < Ag _ Sg P1 ,Acc| CPrep PNul> => "τον εαυτό μου" ;
+ < Ag _ Sg P1 ,CPrep P_se> => "στον εαυτό μου" ;
+
+
+ < Ag _ Sg P2 ,Nom |Vocative > => "ο εαυτός σου" ;
+ < Ag _ Sg P2 ,Gen |CPrep P_Dat > => "του εαυτού σου" ;
+ < Ag _ Sg P2 ,Acc| CPrep PNul> => "τον εαυτό σου" ;
+ < Ag _ Sg P2 ,CPrep P_se> => "στον εαυτό σου" ;
+
+
+ < Ag Fem Sg P3 ,Nom |Vocative > => "ο εαυτός της" ;
+ < Ag Fem Sg P3 ,Gen |CPrep P_Dat > => "του εαυτού της" ;
+ < Ag Fem Sg P3 ,Acc| CPrep PNul> => "τον εαυτό της" ;
+ < Ag Fem Sg P3 ,CPrep P_se> => "στον εαυτό της" ;
+
+
+ < Ag _ Sg P3 ,Nom |Vocative > => "ο εαυτός του" ;
+ < Ag _ Sg P3 ,Gen |CPrep P_Dat > => "του εαυτού του" ;
+ < Ag _ Sg P3 ,Acc| CPrep PNul> => "τον εαυτό του" ;
+ < Ag _ Sg P3 ,CPrep P_se> => "στον εαυτό του" ;
+
+
+ < Ag _ Pl P1 ,Nom |Vocative > => "οι εαυτοί μας" ;
+ < Ag _ Pl P1 ,Gen |CPrep P_Dat > => "των εαυτών μας" ;
+ < Ag _ Pl P1 ,Acc| CPrep PNul > => "τους εαυτούς μας" ;
+ < Ag _ Pl P1 ,CPrep P_se> => "στους εαυτούς μας" ;
+
+
+ < Ag _ Pl P2 ,Nom |Vocative > => "οι εαυτοί σας" ;
+ < Ag _ Pl P2 ,Gen |CPrep P_Dat > => "των εαυτών σας" ;
+ < Ag _ Pl P2 ,Acc| CPrep PNul> => "τους εαυτούς σας" ;
+ < Ag _ Pl P2 ,CPrep P_se> => "στους εαυτούς σας" ;
+
+
+ < Ag _ Pl P3 ,Nom |Vocative > => "οι εαυτοί τους" ;
+ < Ag _ Pl P3 ,Gen |CPrep P_Dat > => "των εαυτών τους" ;
+ < Ag _ Pl P3 ,Acc| CPrep PNul> => "τους εαυτούς τους" ;
+ < Ag _ Pl P3 ,CPrep P_se> => "στους εαυτούς τους"
+ };
+
+
+ Predet : Type = {s :Number => Gender => Case => Str} ;
+
+ mkPredet : (s1,s2,s3,s4,s5,s6,s7,s8,s9,s10: Str) -> Predet = \olos,olou,olo,oli,olis,oloi,olwn,olous,oles,ola->
+ {
+ s = table {
+ Sg => table {
+ Masc | Change => table { Nom => olos ; Gen |CPrep P_Dat=> olou ; Acc |CPrep P_se |CPrep PNul => olo ; Vocative => []} ;
+ Fem => table { Nom => oli ; Gen |CPrep P_Dat=> olis ; Acc |CPrep P_se |CPrep PNul => oli ;Vocative => [] } ;
+ Neut => table { Nom => olo ; Gen |CPrep P_Dat=> olou ; Acc |CPrep P_se |CPrep PNul => olo; Vocative => [] }
+ } ;
+ Pl => table {
+ Masc => table { Nom => oloi ; Gen |CPrep P_Dat=> olwn ; Acc |CPrep P_se |CPrep PNul => olous ; Vocative => []} ;
+ Fem => table { Nom => oles ; Gen |CPrep P_Dat=> olwn ; Acc |CPrep P_se |CPrep PNul => oles ;Vocative => [] } ;
+ Neut |Change => table { Nom => ola ; Gen |CPrep P_Dat=> olwn ; Acc |CPrep P_se |CPrep PNul => ola; Vocative => [] }
+ }}; } ;
+
+
+
+
+
+
+ copula : Verb = {
+ s = \\a => case a of {
+ VPres _ Sg P1 Active _=> "είμαι" ;
+ VPres _ Sg P2 Active _=> "είσαι" ;
+ VPres _ Sg P3 Active _=> "είναι" ;
+ VPres _ Pl P1 Active _=> "είμαστε" ;
+ VPres _ Pl P2 Active _=> "είσαστε" ;
+ VPres _ Pl P3 Active _=> "είναι" ;
+ VPres _ Sg P1 Passive _=> "είμαι" ;
+ VPres _ Sg P2 Passive _=> "είσαι" ;
+ VPres _ Sg P3 Passive _=> "είναι" ;
+ VPres _ Pl P1 Passive _=> "είμαστε" ;
+ VPres _ Pl P2 Passive _=> "είσαστε" ;
+ VPres _ Pl P3 Passive _=> "είναι" ;
+ VPast _ Sg P1 Active _=> "ήμουν" ;
+ VPast _ Sg P2 Active _=> "ήσουν" ;
+ VPast _ Sg P3 Active _=> "ήταν" ;
+ VPast _ Pl P1 Active _=> "ήμασταν" ;
+ VPast _ Pl P2 Active _=> "ήσασταν" ;
+ VPast _ Pl P3 Active _=> "ήταν" ;
+ VPast _ Sg P1 Passive _=> "ήμουν" ;
+ VPast _ Sg P2 Passive _=> "ήσουν" ;
+ VPast _ Sg P3 Passive _=> "ήταν" ;
+ VPast _ Pl P1 Passive _=> "ήμασταν" ;
+ VPast _ Pl P2 Passive _=> "ήσασταν" ;
+ VPast _ Pl P3 Passive _=> "ήταν" ;
+
+ VNonFinite Active => "υπάρξει" ;
+ VNonFinite Passive => "υπάρξει" ;
+ VImperative Perf Sg Active=> " " ;
+ VImperative Perf Pl Active=> " " ;
+ VImperative Imperf Sg Active=> " " ;
+ VImperative Imperf Pl Active=> " " ;
+
+ VImperative _ Sg Passive => " " ;
+ VImperative _ Pl Passive=> "" ;
+
+ Gerund => "όντας" ;
+
+ Participle d g n c => (regAdj1 "ών").s !d! g !n !c
+ }
+ } ;
+
+
+ Exist : Verb = {
+ s = \\a => case a of {
+ VPres _ Sg P1 Active _=> "υπάρχω" ;
+ VPres _ Sg P2 Active _=> "υπάρχεις" ;
+ VPres _ Sg P3 Active _=> "υπάρχει" ;
+ VPres _ Pl P1 Active _=> "υπάρχουμε" ;
+ VPres _ Pl P2 Active _=> "υπάρχετε" ;
+ VPres _ Pl P3 Active _=> "υπάρχουν" ;
+ VPres _ Sg P1 Passive _=> "υπάρχω" ;
+ VPres _ Sg P2 Passive _=>"υπάρχει" ;
+ VPres _ Sg P3 Passive _=> "υπάρχουμε" ;
+ VPres _ Pl P1 Passive _=> "υπάρχουμε" ;
+ VPres _ Pl P2 Passive _=> "υπάρχετε" ;
+ VPres _ Pl P3 Passive _=> "υπάρχουν" ;
+ VPast _ Sg P1 Active _=> "υπήρχα" ;
+ VPast _ Sg P2 Active _=> "υπήρχες" ;
+ VPast _ Sg P3 Active _=> "υπήρχε" ;
+ VPast _ Pl P1 Active _=> "υπήρχαμε" ;
+ VPast _ Pl P2 Active _=> "υπήρχατε" ;
+ VPast _ Pl P3 Active _=> "υπήρχαν" ;
+ VPast _ Sg P1 Passive _=> "υπήρχα" ;
+ VPast _ Sg P2 Passive _=> "υπήρχες" ;
+ VPast _ Sg P3 Passive _=> "υπήρχε" ;
+ VPast _ Pl P1 Passive _=> "υπήρχαμε" ;
+ VPast _ Pl P2 Passive _=> "υπήρχατε" ;
+ VPast _ Pl P3 Passive _=> "υπήρχαν" ;
+
+ VNonFinite Active => "υπάρξει" ;
+ VNonFinite Passive => "υπάρξει" ;
+ VImperative Perf Sg Active=> " " ;
+ VImperative Perf Pl Active=> " " ;
+ VImperative Imperf Sg Active=> " " ;
+ VImperative Imperf Pl Active=> " " ;
+
+ VImperative _ Sg Passive=> " " ;
+ VImperative _ Pl Passive=> "" ;
+
+ Gerund => "υπάρχοντας" ;
+
+ Participle d g n c => (regAdj1 "υπάρχων").s !d! g !n !c
+ }
+ } ;
+
+
+ auxVerb : Verb = mkAux "έχω" "είχα" "έχε" "έχετε" "έχων" ;
+
+
+
+ mkAux : (x1,_,_,_,_: Str) -> Verb = \Exw,eIxa, Exe, Exete, Exwn->
+ let
+ Ex= init Exw ;
+ eIx = init eIxa ;
+ in
+ {
+ s = table {
+ VPres _ Sg P1 Active _=> Exw ;
+ VPres _ Sg P2 Active _=> Ex + "εις" ;
+ VPres _ Sg P3 Active _=> Ex + "ει" ;
+ VPres _ Pl P1 Active _=> Ex+ "ουμε" ;
+ VPres _ Pl P2 Active _=> Ex + "ετε" ;
+ VPres _ Pl P3 Active _=> Ex + "ουν" ;
+
+ VPres _ Sg P1 Passive _=> " " ;
+ VPres _ Sg P2 Passive _=> " " ;
+ VPres _ Sg P3 Passive _=> " " ;
+ VPres _ Pl P1 Passive _=> " " ;
+ VPres _ Pl P2 Passive _=> " " ;
+ VPres _ Pl P3 Passive _=> " " ;
+
+ VPast _ Sg P1 Active _=> eIxa ;
+ VPast _ Sg P2 Active _=> eIx + "ες" ;
+ VPast _ Sg P3 Active _ => eIx + "ε" ;
+ VPast _ Pl P1 Active _ => eIx + "αμε" ;
+ VPast _ Pl P2 Active _ => eIx + "ατε" ;
+ VPast _ Pl P3 Active _ => eIx + "αν" ;
+
+ VPast _ Sg P1 Passive _ => " " ;
+ VPast _ Sg P2 Passve _=> " " ;
+ VPast _ Sg P3 Passive _ => " " ;
+ VPast _ Pl P1 Passive _ => " " ;
+ VPast _ Pl P2 Passive _ => " " ;
+ VPast _ Pl P3 Passive _ => " " ;
+
+ VNonFinite Active => Ex + "ει" ;
+ VNonFinite Passive => " " ;
+
+ VImperative Perf Sg Active=> " " ;
+ VImperative Perf Pl Active=> " " ;
+ VImperative Imperf Sg Active=> Exe ;
+ VImperative Imperf Pl Active=> Exe ;
+
+ VImperative _ Sg Passive => " " ;
+ VImperative _ Pl Passive=> " " ;
+
+ Gerund => Ex + "οντας" ;
+
+ Participle d g n c => (regAdj Exwn).s !d! g !n !c
+ }
+ };
+
+
+
+ conjThat : Str = "οτι" ;
+
+ --------- Elision ---------
+ vowel : Strs = strs {
+ "α" ; "ά" ; "ο" ; "ό" ; "ε" ; "έ" ; "ι" ;
+ "ί" ; "η" ; "ή";
+ "υ" ; "ύ" ; "ω" ; "ώ" ;
+ "Α" ; "Ο" ; "Ι" ; "Ε" ; "Υ" ; "Η" ; "Ω"
+ } ;
+
+ elision : Str -> Str = \d -> d + pre {"ε" ; "'" / vowel} ;
+
+ elisSe = elision "σ" ;
+
+
+
+ ---To control the stress movement we define the stress/unstressed vowels, and convert them to their opposite-----
+ stressedVowel : pattern Str = #("ά" | "ό" | "ί"| "έ" | "ή" | "ύ"| "ώ" | "εύ");
+
+ unstressedVowel : pattern Str = #("α" | "ο" | "ι"| "ε" |"η" | "υ" | "ω" | "ευ");
+
+ unstress : Str -> Str = \v -> case v of {
+ "ά" => "α" ;
+ "ό" => "ο" ;
+ "ί" => "ι" ;
+ "έ" => "ε" ;
+ "ή" => "η" ;
+ "ύ" => "υ";
+ "ώ" => "ω" ;
+ "εύ" => "ευ" ;
+ _ => v
+ } ;
+
+ stress : Str -> Str = \x -> case x of {
+ "α" => "ά" ;
+ "ο" => "ό" ;
+ "ι" => "ί" ;
+ "ε" => "έ" ;
+ "η" => "ή" ;
+ "υ" => "ύ" ;
+ "ω" => "ώ" ;
+ "ευ" => "εύ" ;
+ _ => x
+ } ;
+
+
+ mkVerbStem : Str -> Str = \s ->
+ case s of {
+ c + v@(#stressedVowel) + x@(_ + _) => c + unstress v + x
+ } ;
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/lib/src/greek/SentenceGre.gf b/lib/src/greek/SentenceGre.gf
new file mode 100644
index 000000000..d2dd3b342
--- /dev/null
+++ b/lib/src/greek/SentenceGre.gf
@@ -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 of {
+ => vp.v.s ! VImperative Perf Sg Active ++ vp.clit ++ vp.clit2 ++ vp.comp ! a ;
+ => vp.v.s ! VImperative Perf Pl Active ++ vp.clit ++ vp.clit2 ++vp.comp ! a2 ;
+ => vp.v.s ! VImperative Imperf Sg Active ++ vp.clit ++ vp.clit2 ++ vp.comp ! a ;
+ => vp.v.s ! VImperative Imperf Pl Active ++ vp.clit ++ vp.clit2 ++vp.comp ! a2 ;
+ => "μην" ++ vp.clit ++ vp.clit2 ++ vp.v.s ! VPres Con Sg P2 Active Perf++ vp.comp ! a ;
+ => "μην" ++ vp.clit ++ vp.clit2++ vp.v.s ! VPres Con Pl P2 Active Perf++ vp.comp ! a2;
+ => "μην" ++ vp.clit ++ vp.clit2 ++ vp.v.s ! VPres Ind Sg P2 Active Perf++ vp.comp ! a ;
+ => "μην" ++ 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
+ } ;
+
+}
\ No newline at end of file
diff --git a/lib/src/greek/StressGre.gf b/lib/src/greek/StressGre.gf
new file mode 100644
index 000000000..ca977a169
--- /dev/null
+++ b/lib/src/greek/StressGre.gf
@@ -0,0 +1,39 @@
+resource StressGre = {
+
+flags coding=utf8 ;
+
+
+
+oper
+
+mkN : Str -> Str * Str = \s -> case s of {
+ c + v@(#stressedVowel) + x@(? + ?) + "α" => ;
+ _ =>
+} ;
+
+
+
+
+stressedVowel : pattern Str = #("ά" | "ό" | "ί"| "έ" );
+
+unstress : Str -> Str = \v -> case v of {
+ "ά" => "α" ;
+ "ό" => "ο" ;
+ "ί" => "ι" ;
+ "έ" => "ε" ;
+ _ => v
+} ;
+
+stress : Str -> Str = \v -> case v of {
+ "α" => "ά" ;
+ "ο" => "ό" ;
+ "ι" => "ί" ;
+ "ε" => "έ" ;
+ _ => v
+} ;
+
+
+
+
+
+}
\ No newline at end of file
diff --git a/lib/src/greek/StructuralGre.gf b/lib/src/greek/StructuralGre.gf
new file mode 100644
index 000000000..60333036c
--- /dev/null
+++ b/lib/src/greek/StructuralGre.gf
@@ -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 of {
+ => "ο καθένας";
+ => "του καθενός" ;
+ => prepCase c ++ "τον καθένα" ;
+ => prepCase c ++ "η καθεμία";
+ => "της καθεμίας" ;
+ => prepCase c ++"το καθένα";
+ => "του καθενός"
+ }; 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 of {
+ => "λίγοι";
+ => "λίγων" ;
+ =>prepCase c ++"λίγους" ;
+ => prepCase c ++"λίγες";
+ => "λίγων" ;
+ => prepCase c ++"λίγα";
+ => "λίγων"
+ };
+ 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 of {
+ => "πολλοί";
+ => "πολλών" ;
+ =>prepCase c ++ "πολλούς" ;
+ => prepCase c ++"πολλές";
+ => 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 of{
+ => "πολύς";
+ => "πόλύ" ;
+ => prepCase c ++"πολύ" ;
+ => "πολύ" ;
+ =>prepCase c ++ "πολλή";
+ => "πολλής" ;
+ => prepCase c ++"πολύ";
+ => "πολύ"
+ };
+ 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 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 of {
+ => "κάποιος";
+ => "κάποιου" ;
+ =>prepCase c ++ "κάποιον" ;
+ => "κάποιε" ;
+ => prepCase c ++"κάποια";
+ => "κάποιας" ;
+ => prepCase c ++"κάποιο";
+ => "κάποιου"
+ };
+ n= Sg;
+ isNeg = False
+ } ;
+
+ somePl_Det = {s,sp = \\g,c => case of {
+ => "κάποιοι";
+ => "κάποιων" ;
+ => prepCase c ++"κάποιους" ;
+ => prepCase c ++"κάποιες";
+ => 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 of {
+ =>prepCase c ++ "ποιός" ;
+ =>prepCase c ++ "ποιά" ;
+ =>prepCase c ++ "ποιό" ;
+ =>prepCase c ++"ποιάς" ;
+ => prepCase c ++"ποιού" ;
+ => prepCase c ++"ποιόν" ;
+ _ => " "
+ };
+ a = {g = Masc ; n = Sg} ;
+ n=Sg
+ };
+
+ whoPl_IP = {s = \\g,c => case of {
+ => prepCase c ++"ποιοί" ;
+ => prepCase c ++ "ποιές" ;
+ => prepCase c ++"ποιά" ;
+ => prepCase c ++"ποιών" ;
+ => 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 of {
+ => "κανένας";
+ => "κανενός" ;
+ => prepCase c ++ "κανέναν" ;
+ => prepCase c ++ "καμία";
+ => "καμιάς" ;
+ => prepCase c ++"κανένα";
+ => "κανενός" ;
+ <_,Pl,_> => " " };
+ in {
+ s = \\_ => kanenas ;
+ sp = kanenas ;
+ isNeg = True
+ } ;
+
+ not_Predet = let oxi : Number =>Gender=> Case => Str= \\n,g,c => case 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 "Ελληνικά" ;
+
+}
+
diff --git a/lib/src/greek/SymbolGre.gf b/lib/src/greek/SymbolGre.gf
new file mode 100644
index 000000000..acd38950a
--- /dev/null
+++ b/lib/src/greek/SymbolGre.gf
@@ -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 "," ;
+
+}
\ No newline at end of file
diff --git a/lib/src/greek/TenseGre.gf b/lib/src/greek/TenseGre.gf
new file mode 100644
index 000000000..b34fcae0d
--- /dev/null
+++ b/lib/src/greek/TenseGre.gf
@@ -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} ;
+
+ }
+
\ No newline at end of file
diff --git a/lib/src/greek/TextGre.gf b/lib/src/greek/TextGre.gf
new file mode 100644
index 000000000..4fa860955
--- /dev/null
+++ b/lib/src/greek/TextGre.gf
@@ -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} ;
+
+}
\ No newline at end of file
diff --git a/lib/src/greek/VerbGre.gf b/lib/src/greek/VerbGre.gf
new file mode 100644
index 000000000..4900b7892
--- /dev/null
+++ b/lib/src/greek/VerbGre.gf
@@ -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 ;
+
+
+}