diff --git a/index.html b/index.html index ca655201d..1f94b071c 100644 --- a/index.html +++ b/index.html @@ -67,6 +67,8 @@ January 2013
+ + + + + + + + + + + + + + + @@ -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

  • - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
    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
    GreGreek+-+++++---*IP
    Heb Hebrew +
    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 +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FunctionTypeExplanation
    masculineGender-
    feminineGender-
    neutralGender-
    accusativeCase-
    genitiveCase-
    indicativeMood-
    conjunctiveMood-
    singularNumber-
    pluralNumber-
    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-
    mkN1Str -> Gender -> N-
    mkNendingStr -> Str -> Gender -> N-
    mkN2N -> Prep -> N2 ---η μητέρα + γενική-
    ofN2N -> N2-
    mkN3N -> Prep -> Prep -> N3-
    mkPN(anna : Str) -> PN-
    mkPN(nm,gm,am,vm,pn,pa : Str) -> Gender -> PN-
    makeNP(_,_,_: Str) -> Number -> Gender -> NP-
    makeNPStr -> Number -> Gender ->Bool -> NP-
    mkpantaStr -> Str -> Str -> Number -> Gender -> NP-
    mkkatiStr ->Number -> Gender -> Bool -> NP-
    mkA(a : Str) -> A-
    mkA(a,b: Str) -> A-
    mkAd2Str -> A-
    mkAd3Str -> A-
    mkAd4Str -> A-
    mkAd5Str -> A-
    mkAdIrregStr -> A-
    mkA1Str -> Str -> A-
    mkA2A -> Prep -> A2-
    mkA2VA -> Prep -> Prep -> A2V;-
    mkAVA -> AV-
    mkASA -> AS-
    mkV2V -> V2-
    mkV2V -> Prep -> V2-
    mkVSV -> VS-
    mkVQV -> VQ-
    mkVVV -> VV-
    mkVAV -> VA-
    accPrep-
    genPrep-
    datPrep-
    prepsePrep-
    mkPrepStr -> Preposition-
    mkPrep2Str -> Preposition-
    mkPrep3Str -> Preposition-
    mkPrep4Str -> Preposition-
    PrepositionType-
    mkPrepositionStr -> Preposition-
    mkPreposition2Str -> Preposition-
    mkPreposition3Str -> Preposition-
    mkPreposition4Str -> Preposition-
    mkV3V -> V3-
    mkV3V -> Prep -> V3-
    mkV3V -> Prep -> Prep -> V3-
    mkV3V -> V3-
    mkV3V -> Prep -> V3-
    mkV3V -> Prep -> Prep -> V3-
    mmkV3V -> Prep -> Prep -> V3milaw, se, gia
    dirV3V -> Prep -> V3dino,_,se
    dirdirV3V -> V3dino,_,_
    mmkVV -> Str -> V-
    expressVV -> Str -> V-
    mmkV2V -> Prep -> V2-
    dirV2V -> V2-
    mkV2VV -> Prep -> Prep -> V2V-
    mkV2SV -> Prep -> V2S-
    mkV2QV -> Prep -> V2Q-
    mkV2AV -> Prep -> Prep -> V2A-
    mkV0V -> V0-
    V0Type-
    V0Type-
    mkNVVerb -> V-
    compoundVVerb -> 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 ; + + +}