Module:el-verb-conj

Από Βικιλεξικό
Μετάβαση στην πλοήγηση Πήδηση στην αναζήτηση

Module:el-verb-conj/τεκμηρίωση για το Module:el-verb-conj

Περιγραφή

Κώδικας για την κλίση των ρημάτων της νεοελληνικής. Καλείται από πρότυπα κλίσης

Ονομαστικές παράμετροι

  • λήμμα= : Απαιτείται μόνο αν η σελίδα δεν είναι αυτή του ρήματος που κλίνουμε.
  • προθ=: Το πρώτο συνθετικό σε σύνθετα ρήματα.
  • ενεστ=: Το κλιτικό παράδειγμα του ενεστώτα. Οδηγεί στις αντίστοιχες συναρτήσεις του module, πχ enestotas['ω'], enestotas['άω_ώ'] κλπ.
  • συνοπτ=: Το κλιτικό παράδειγμα των συνοπτικών χρόνων. Οδηγεί στις αντίστοιχες συναρτήσεις του module, πχ synoptikoi['α'], synoptikoi['ήκα-ώ'] κλπ.
  • χμτχ= : Ο χαρακτήρας της μετοχής παθητ. παρακειμένου. Μπορεί να πάρει τις τιμές μ, μμ, σμ, γμ
  • χαρ= : Στα συμφωνόληκτα ρήματα όπως αλλάζω, μειώνω έχει αυτομάτως την τιμή 1.
    Σε ρήματα όπως ρίχνω, διδάσκω, πρέπει να δώσουμε χαρ=2
  • θαορ= : Το θέμα του αορίστου, όπου σχηματίζεται ανώμαλα.
  • θμελλ= : Το θέμα του μέλλοντα, όπου σχηματίζεται ανώμαλα.
  • μτχ=: Η μετοχή παθητικού παρακειμένου, όταν σχηματίζεται ανώμαλα.
  • πρ1= :β' ενικό προστακτικής ενεστώτα
  • πρ2= :β' πληθυντικό προστακτικής ενεστώτα
  • πρ3= :β' ενικό προστακτικής αορίστου
  • πρ4= :β' πληθυντικό προστακτικής αορίστου

Στην ενεργητική φωνή

  • παρακΒ=1 : Θα εμφανίσει τους δεύτερους μεταβατικούς τύπους των συντελεσμένων χρόνων (έχω ...μένο)
  • παρακΓ=1 : Για τους δεύτερους αμετάβατους τύπους των συντελεσμένων χρόνων (είμαι ...μένος)
  • σ : Ο χαρακτήρας του αορίστου. Μπορεί να πάρει τις τιμές σ, ξ, ψ, ν
  • συνίζ: Για ρήματα όπου η συνίζηση επηρεάζει τον τόνο στον αόριστο. Μπορεί να πάρει τις τιμές
    συνίζ=nil, πχ αιφνιδιάζω, αιφνιδίασα
    συνίζ=1, πχ βουλιάζω, βούλιαξα
    συνίζ=2, πχ αδειάζω, άδειασα
  • pr4=ε: όπου απαιτείται ένα επιπλέον ε στο σχηματισμό του β' πληθ. προστ. αορ.

Στην παθητική φωνή

  • παρακΒ=1 : Θα εμφανίσει τους δεύτερους τύπους των συντελεσμένων χρόνων (είμαι ...μένος)
  • μτχ1=1 : Θα εμφανίσει την παθητική μετοχή ενεστώτα σε -όμενος
  • μτχ=-: Όταν δεν υπάρχει μετοχή παθητικού παρακειμένου
  • χαορ : Μπορεί να πάρει τις τιμές θ, στ, χτ, φτ κλπ
  • σ : Ο χαρακτήρας του β' ενικ. προστακτ. αορίστου. Μπορεί να πάρει τις τιμές σ, ξ, ψ

_module = {}

atona = { ['α'] = 'ά', ['ε'] = 'έ', ['η'] = 'ή', ['ι'] = 'ί', ['ϊ'] = 'ΐ', 
        ['ο'] = 'ό', ['υ'] = 'ύ', ['ϋ'] = 'ΰ', ['ω'] = 'ώ' }

tonismena = { ['ά'] = 'α', ['έ'] = 'ε', ['ή'] = 'η', ['ί'] = 'ι', ['ΐ'] = 'ϊ',
    ['ό'] = 'ο', ['ύ'] = 'υ', ['ΰ'] = 'ϋ', ['ώ'] = 'ω' }

tonismena2 = { ['άι'] = 'αϊ', ['έι'] = 'εϊ', ['όι'] = 'οϊ',
    ['άυ'] = 'αϋ', ['έυ'] ='εϋ', ['όυ'] = 'οϋ' }

tonismena3 = { ['αΐ'] = 'άι', ['εΐ'] = 'έι', ['οΐ'] = 'όι', ['αΰ'] = 'άυ', ['εΰ'] = 'έυ', ['ουί'] = 'ούι' }
dipsifa = { 'αι', 'οι', 'ει', 'αυ', 'ου', 'ευ', 'ηυ' }

-- Χρώματα
xr1 = "style='background:#c0c0c0'"
xr2 = "style='background:#e2e4c0'"
style1 = "style='background:#F0F0F0;border:1px solid #AAAACC;margin-left:1em;margin-bottom:0.5em;text-align:left;' rules='all' cellpadding='5' cellspacing='0'"

function removeaccent(stem)
    --για κάθε χαρακτήρα
    local wordproduced = ''
    --για κάθε συνδυασμό γραμμάτων που μπορεί να χρειαστούν διαλυτικά
    for diplotonismeno, neatimh in pairs(tonismena2) do
        arxi, telos = mw.ustring.find(stem, diplotonismeno)
        if arxi ~= nil then
            wordproduced = mw.ustring.gsub(stem, diplotonismeno, neatimh, 1) --μια φορά αντικατάσταση
            --βρέθηκε ο τόνος και αφαιρέθηκε
            return wordproduced
        end        
    end
    for codepoint in mw.ustring.gcodepoint( stem ) do
        --αντικατάστησέ τον με βάση τον πίνακα
        mychar = mw.ustring.char(codepoint)
        convertedchar = tonismena[mychar]            
        --αν βρήκε κάτι για αντικατάσταση
        --είναι δηλαδή τονισμένο γράμμα
        if convertedchar ~= nil then
            --πρόσθεσέ το στη δημιουργούμενη κλείδα
            wordproduced = wordproduced .. convertedchar
        else
            --αλλιώς άσε το ίδιο
            wordproduced = wordproduced .. mychar        
        end
    end
    return wordproduced
end
 
-- Η συνάρτηση αρχίζει από το τελευταίο γράμμα του θέματος και πηγαίνει προς το πρώτο. 
-- Όταν συναντήσει το πρώτο (άτονο) φωνήεν, το τονίζει και τέλος
-- Εννοείται ότι η μεταβλητή stem δεν πρέπει να περιέχει τονισμένα φωνήεντα.
 
 
function neostonos(stem)
    local stempoint = mw.ustring.len(stem)
    local wordproduced = ""
    while stempoint > 0 do
       mychar = mw.ustring.sub(stem, stempoint, stempoint)
       newchar = atona[mychar]
       if newchar ~= nil then
          if stempoint > 1 then
              return mw.ustring.sub(stem, 1, stempoint-1 ) .. newchar .. wordproduced
          else
              return newchar .. wordproduced
          end
       else
           wordproduced = mychar .. wordproduced
           stempoint = stempoint -1
       end
    end
    return wordproduced
end

-- μετάθεση του τόνου στην προπαραλήγουσα
function _module.neostonos2(stem, syniz)
    local wordproduced = ""
    --για κάθε συνδυασμό γραμμάτων με τόνο και διαλυτικά
    for diplotonismeno, neatimh in pairs(tonismena3) do
        arxi, telos = mw.ustring.find(stem, diplotonismeno)
        if arxi ~= nil then
            return mw.ustring.gsub(stem, diplotonismeno, neatimh, 1) --μια φορά αντικατάσταση
            --βρέθηκε ο τόνος και μετατέθηκε
        end        
    end
    -- αν δεν βρέθηκαν διαλυτικά αρχίζουμε από το τέλος για να βρούμε πού είναι ο τόνος
    stempoint = mw.ustring.len(stem)
    accentNotFound = true
    while accentNotFound do
       mychar = mw.ustring.sub(stem, stempoint, stempoint)
       newchar = tonismena[mychar]
       if newchar ~= nil then
           wordproduced = newchar .. wordproduced
           accentNotFound = false
       else
           wordproduced = mychar .. wordproduced
       end
       stempoint = stempoint -1
    end
    --να εξετάσουμε αν υπάρχει συνίζηση: πρέπει να μας το πει ο χρήστης, 
    --αιφνιδιάζω (συνίζ=nil), μεριάζω (συνίζ=1), αδειάζω (συνίζ=2)
    if syniz ~= nil then
        syniz = tonumber(syniz)
        wordproduced = mw.ustring.sub(stem, stempoint+1-syniz, stempoint) .. wordproduced
        stempoint = stempoint - syniz
    end
       --να εξετάσουμε αν ο τόνος ήταν σε δίψηφο φωνήεν
    twoletters = mw.ustring.sub(stem, stempoint, stempoint) .. newchar
    for _,v in pairs(dipsifa) do
        if v == twoletters then
            wordproduced = mw.ustring.sub(stem, stempoint, stempoint) .. wordproduced
            stempoint = stempoint -1
        end
    end
    return neostonos(mw.ustring.sub(stem, 1, stempoint)) .. wordproduced
end

--Ενεργητικοί χρόνοι
enestotas0 = function (e)
    local xr2 = "\n|-\n| " .. xr1 .. " | "
    for x=1, 6 do e[x] = e[x]  .. "\n| " .. e[x+6] .. "\n| θα " .. e[x] .. "\n| να " .. e[x] .. "\n| " end
    local output = "|-\n! πρόσωπα\n! Ενεστώτας\n! Παρατατικός\n! Εξ. Μέλλ.\n! Υποτακτική\n! Προστακτική\n! align=center | Μετοχή"
    output = output .. xr2 .. "α' ενικ.\n| " .. e[1] .. '\n| rowspan="6" align="center" |' .. e[13]
    output = output .. xr2 .. "β' ενικ.\n| " .. e[2] .. e[14] .. xr2 .. "γ' ενικ.\n| " .. e[3]
    output = output .. xr2 .. "α' πληθ.\n| " .. e[4] .. xr2 .. "β' πληθ.\n| " .. e[5] .. e[15]
    output = output .. xr2 .. "γ' πληθ.\n| " .. e[6] .. "\n"
    return output
end

enestotas = {}
enestotas["ω"] = function (args)
    local e = {}
    e[1] = args['θ1'] .. 'ω'; e[2] = args['θ1'] .. 'εις'; e[3] = args['θ1'] .. 'ει'
    e[4] = args['θ1'] .. 'ουμε'; e[5] = args['θ1'] .. 'ετε'; e[6] = args['θ1'] .. 'ουν(ε)'
    e[7] = args['θ2'] .. 'α'; e[8] = args['θ2'] .. 'ες'; e[9] = args['θ2'] .. 'ε'
    e[10] = args['θ1α'] .. 'αμε'; e[11] = args['θ1α'] .. 'ατε'; e[12] = args['θ2'] .. 'αν<br />' .. args['θ1α'] .. 'αν(ε)'
    e[13] = args['θ1'] .. 'οντας'; e[14] = args['πρ1']; e[15] = args['πρ2']
    return enestotas0(e)
end

enestotas["άω_ώ"] = function (args)
    local e = {}
    e[1] = args['θ1'] .. 'άω - ' .. args['θ1'] .. 'ώ'; e[2] = args['θ1'] .. 'άς'
    e[3] = args['θ1'] .. 'άει - ' .. args['θ1'] .. 'ά'
    e[4] = args['θ1'] .. 'άμε - ' .. args['θ1'] .. 'ούμε'; e[5] = args['θ1'] .. 'άτε'
    e[6] = args['θ1'] .. 'άν(ε) - ' .. args['θ1'] .. 'ούν(ε)'
    e[7] = args['θ1'] .. 'ούσα'; e[8] = args['θ1'] .. 'ούσες'; e[9] = args['θ1'] .. 'ούσε'
    e[10] = args['θ1'] .. 'ούσαμε'; e[11] = args['θ1'] .. 'ούσατε'; e[12] = args['θ1'] .. 'ούσαν(ε)'
    e[13] = args['θ1'] .. 'ώντας'
    e[14] = args['πρ1'] or args['θ2'] .. "α" 
    e[15] = args['πρ2'] or args['θ1'] .. "άτε"
    return enestotas0(e)
end

enestotas["άω-ώ2"] = function (args)
    local e = {}
    e[1] = args['θ1'] .. 'άω - ' .. args['θ1'] .. 'ώ'; e[2] = args['θ1'] .. 'άς - ' .. args['θ1'] .. 'είς'
    e[3] = args['θ1'] .. 'άει - ' .. args['θ1'] .. 'ά - ' .. args['θ1'] .. 'εί'
    e[4] = args['θ1'] .. 'άμε - ' .. args['θ1'] .. 'ούμε'; e[5] = args['θ1'] .. 'άτε - ' .. args['θ1'] .. 'είτε'
    e[6] = args['θ1'] .. 'άν(ε) - ' .. args['θ1'] .. 'ούν(ε)'
    e[7] = args['θ1'] .. 'ούσα'; e[8] = args['θ1'] .. 'ούσες'; e[9] = args['θ1'] .. 'ούσε'
    e[10] = args['θ1'] .. 'ούσαμε'; e[11] = args['θ1'] .. 'ούσατε'; e[12] = args['θ1'] .. 'ούσαν'
    e[13] = args['θ1'] .. 'ώντας'
    e[14] = args['πρ1'] or args['θ2'] .. "α" 
    e[15] = args['πρ2'] or args['θ1'] .. "άτε - " .. args['θ1'] .. "είτε"
    return enestotas0(e)
end

enestotas["άω_ώ3"] = function (args)-- Αυτά που έχουν δεύτερους τύπους στον παρατατικό πχ αγαπώ
    local e = {}
    e[1] = args['θ1'] .. 'άω - ' .. args['θ1'] .. 'ώ'; e[2] = args['θ1'] .. 'άς'
    e[3] = args['θ1'] .. 'άει - ' .. args['θ1'] .. 'ά'
    e[4] = args['θ1'] .. 'άμε - ' .. args['θ1'] .. 'ούμε'; e[5] = args['θ1'] .. 'άτε'
    e[6] = args['θ1'] .. 'άν(ε) - ' .. args['θ1'] .. 'ούν(ε)'
    e[7] = args['θ1'] .. 'ούσα - ' .. args['θ2'] ..'αγα'
    e[8] = args['θ1'] .. 'ούσες - ' .. args['θ2'] ..'αγες'
    e[9] = args['θ1'] .. 'ούσε - ' .. args['θ2'] ..'αγε'
    e[10] = args['θ1'] .. 'ούσαμε - ' .. args['θ1'] ..'άγαμε'
    e[11] = args['θ1'] .. 'ούσατε - ' .. args['θ1'] ..'άγατε'
    e[12] = args['θ1'] .. 'ούσαν(ε) - ' .. args['θ2'] ..'αγαν - ' .. args['θ1'] ..'άγανε'
    e[13] = args['θ1'] .. 'ώντας'
    e[14] = args['πρ1'] or args['θ2'] .. 'α - ' .. args['θ2'] ..'αγε'
    e[15] = args['πρ2'] or args['θ1'] .. "άτε"
    return enestotas0(e)
end

enestotas["άω_ώ4"] = function (args)
    local e = {}
    e[1] = args['θ1'] .. 'άω - ' .. args['θ1'] .. 'ώ'; e[2] = args['θ1'] .. 'άς - ' .. args['θ1'] .. 'είς'
    e[3] = args['θ1'] .. 'άει - ' .. args['θ1'] .. 'ά - ' .. args['θ1'] .. 'εί'
    e[4] = args['θ1'] .. 'άμε - ' .. args['θ1'] .. 'ούμε'; e[5] = args['θ1'] .. 'άτε - ' .. args['θ1'] .. 'είτε'
    e[6] = args['θ1'] .. 'άν(ε) - ' .. args['θ1'] .. 'ούν(ε)'
    e[7] = args['θ1'] .. 'ούσα - ' .. args['θ2'] ..'αγα'
    e[8] = args['θ1'] .. 'ούσες - ' .. args['θ2'] ..'αγες'
    e[9] = args['θ1'] .. 'ούσε - ' .. args['θ2'] ..'αγε'
    e[10] = args['θ1'] .. 'ούσαμε - ' .. args['θ1'] ..'άγαμε'
    e[11] = args['θ1'] .. 'ούσατε - ' .. args['θ1'] ..'άγατε'
    e[12] = args['θ1'] .. 'ούσαν(ε) - ' .. args['θ2'] ..'αγαν - ' .. args['θ1'] ..'άγανε'
    e[13] = args['θ1'] .. 'ώντας'
    e[14] = args['πρ1'] or args['θ2'] .. "α" 
    e[15] = args['πρ2'] or args['θ1'] .. "άτε - " .. args['θ1'] .. "είτε"
    return enestotas0(e)
end

enestotas["άω-γα"] = function (args)
    local e = {}
    e[1] = args['θ1'] .. 'ω'; e[2] = args['θ1β'] .. 'ς'; e[3] = args['θ1'] .. 'ει'
    --ειδικά για το λέω λες
    if args['θ1'] == 'λέ' then e[2] = 'λες' end
    e[4] = args['θ1'] .. 'με'; e[5] = args['θ1'] .. 'τε'; e[6] = args['θ1'] .. 'νε'
    e[7] = args['θ2'] .. 'γα'; e[8] = args['θ2'] .. 'γες'; e[9] = args['θ2'] .. 'γε'
    e[10] = args['θ1'] .. 'γαμε'; e[11] = args['θ1'] .. 'γατε'; e[12] = args['θ2'] .. 'γαν<br />' .. args['θ1'] .. 'γανε'
    e[13] = args['μτχ1'] or args['θ1'] .. 'γοντας'
    e[14] = args['πρ1']; e[15] = args['πρ2']
    return enestotas0(e)
end

enestotas["ώ-άς"] = function (args)
    local e = {}
    e[1] = args['θ1'] .. 'ώ'; e[2] = args['θ1'] .. 'άς'; e[3] = args['θ1'] .. 'ά'
    e[4] = args['θ1'] .. 'ούμε'; e[5] = args['θ1'] .. 'άτε'; e[6] = args['θ1'] .. 'ούν'
    e[7] = args['θ1'] .. 'ούσα'; e[8] = args['θ1'] .. 'ούσες'; e[9] = args['θ1'] .. 'ούσε'
    e[10] = args['θ1'] .. 'ούσαμε'; e[11] = args['θ1'] .. 'ούσατε'; e[12] = args['θ1'] .. 'ούσαν'
    e[13] = args['θ1'] .. 'ώντας'
    e[14] = args['πρ1'] or args['θ2'] .. "α" 
    e[15] = args['πρ2'] or args['θ1'] .. "άτε"
    return enestotas0(e)
end

enestotas["ώ"] = function (args)
    local e = {}
    e[1] = args['θ1'] .. 'ώ'; e[2] = args['θ1'] .. 'είς'; e[3] = args['θ1'] .. 'εί'
    e[4] = args['θ1'] .. 'ούμε'; e[5] = args['θ1'] .. 'είτε'; e[6] = args['θ1'] .. 'ούν(ε)'
    e[7] = args['θ1'] .. 'ούσα'; e[8] = args['θ1'] .. 'ούσες'; e[9] = args['θ1'] .. 'ούσε'
    e[10] = args['θ1'] .. 'ούσαμε'; e[11] = args['θ1'] .. 'ούσατε'; e[12] = args['θ1'] .. 'ούσαν(ε)'
    e[13] = args['θ1'] .. 'ώντας'
    e[14] = args['πρ1'] or "(" .. args['θ2'] .. "ει)" 
    e[15] = args['πρ2'] or args['θ1'] .. "είτε"
    return enestotas0(e)
end

synoptikoi0 = function (a)
    local xr2 = "\n|-\n| " .. xr1 .. " | "
    for x=1, 6 do a[x] = a[x]  .. "\n| θα " .. a[x+6] .. "\n| να " .. a[x+6] .. "\n| " end
    local output = "|-\n! πρόσωπα\n! \n! Αόριστος\n! Συνοπτ. Μέλλ.\n! Υποτακτική\n! Προστακτική\n! align=center | Απαρέμφατο"
    output = output .. xr2 .. "α' ενικ.\n|  rowspan='6' | \n| " .. a[1] .. "\n| rowspan='6' align='center' |" .. a[13]
    output = output .. xr2 .. "β' ενικ.\n| " .. a[2] .. a[14] .. xr2 .. "γ' ενικ.\n| " .. a[3]
    output = output .. xr2 .. "α' πληθ.\n| " .. a[4] .. xr2 .. "β' πληθ.\n| " .. a[5] .. a[15]
    output = output .. xr2 .. "γ' πληθ.\n| " .. a[6] .. "\n"
    return output
end
    
synoptikoi = {}
synoptikoi['α'] = function (args)
    local a ={}
    a[1] = args['θ3'] .. 'α'; a[2] = args['θ3'] .. 'ες'; a[3] = args['θ3'] .. 'ε'
    a[4] = args['θ4α'] .. 'αμε'; a[5] = args['θ4α'] .. 'ατε'
    a[6] = args['θ3'] .. 'αν<br />' .. args['θ4α'] .. 'αν(ε)'
    a[7] = args['θ4'] .. 'ω'; a[8] = args['θ4'] .. 'εις'; a[9] = args['θ4'] .. 'ει'
    a[10] = args['θ4'] .. 'ουμε'; a[11] = args['θ4'] .. 'ετε'; a[12] = args['θ4'] .. 'ουν(ε)'
    a[13] = args['θ4'] .. 'ει'
    a[14] = args['πρ3']
    a[15] = args['πρ4']
    return synoptikoi0(a)
end

-- αόριστοι σε -ήκα όπως μπήκα + είδα, είπα, ήπια
synoptikoi['ήκα-ω'] = function (args)
    local a ={}
    a[1] = args['θ3'] .. 'α'; a[2] = args['θ3'] .. 'ες'; a[3] = args['θ3'] .. 'ε'
    a[4] = args['θ3'] .. 'αμε'; a[5] = args['θ3'] .. 'ατε'; a[6] = args['θ3'] .. 'αν(ε)'
    a[7] = args['θ4'] .. 'ω'; a[8] = args['θ4'] .. 'εις'; a[9] = args['θ4'] .. 'ει'
    a[10] = args['θ4'] .. 'ούμε'; a[11] = args['θ4'] .. 'είτε'; a[12] = args['θ4'] .. 'ουν'
    a[13] = args['θ4'] .. 'ει'
    a[14] = args['πρ3'] or args['θ4'] .. "ες"
    a[15] = args['πρ4'] or args['θ4'] .. "είτε"
    return synoptikoi0(a)
end

-- σύνθετοι αόριστοι σε -ήκα όπως ξαναμπήκα + ξαναείδα, ξαναείπα, ξαναήπια
synoptikoi['ήκα-ώ'] = function (args)
    local a ={}
    a[1] = args['θ3'] .. 'α'; a[2] = args['θ3'] .. 'ες'; a[3] = args['θ3'] .. 'ε'
    a[4] = args['θ3'] .. 'αμε'; a[5] = args['θ3'] .. 'ατε'; a[6] = args['θ3'] .. 'αν(ε)'
    a[7] = args['θ4'] .. 'ώ'; a[8] = args['θ4'] .. 'είς'; a[9] = args['θ4'] .. 'εί'
    a[10] = args['θ4'] .. 'ούμε'; a[11] = args['θ4'] .. 'είτε'; a[12] = args['θ4'] .. 'ούν(ε)'
    a[13] = args['θ4'] .. 'εί'
    a[14] = args['πρ3'] or args['θ4'] .. "ές"
    a[15] = args['πρ4'] or args['θ4'] .. "είτε"
    return synoptikoi0(a)
end

-- διπλοί αόριστοι σε -α και -ισα όπως τράκαρα + τρακάρισα
synoptikoi['α-ισα'] = function (args)
    local a ={}
    a[1] = args['θ3'] .. 'α - ' .. args['θ4'] .. 'ισα'
    a[2] = args['θ3'] .. 'ες - ' .. args['θ4'] .. ''
    a[3] = args['θ3'] .. 'ε - ' .. args['θ4'] .. ''
    a[4] = args['θ4'] .. 'αμε'; a[5] = args['θ4'] .. 'ατε'
    a[6] = args['θ3'] .. 'αν - ' .. args['θ4'] .. 'ισαν'
    a[7] = args['θ4'] .. 'ω'; a[8] = args['θ4'] .. 'εις'; a[9] = args['θ4'] .. 'ει'
    a[10] = args['θ4'] .. 'ουμε'; a[11] = args['θ4'] .. 'ετε'; a[12] = args['θ4'] .. 'ουν'
    a[13] = args['θ4'] .. 'ει'
    a[14] = args['πρ3'] or args['θ3'] .. "ε - " .. args['θ4'] .. "ισε"
    a[15] = args['πρ4'] or args['θ4'] .. "ετε"
    return synoptikoi0(a)
end

synoptikoi['ην-ω'] = function (args)
    local a ={}
    a[1] = args['θ3'] .. 'ην'; a[2] = args['θ3'] .. 'ης'; a[3] = args['θ3'] .. 'η'
    a[4] = args['θ4α'] .. 'ήκαμε'; a[5] = args['θ4α'] .. 'ήκατε'; a[6] = args['θ3'] .. 'ησαν'
    a[7] = args['θ4'] .. 'ω'; a[8] = args['θ4'] .. 'εις'; a[9] = args['θ4'] .. 'ει'
    a[10] = args['θ4'] .. 'ουμε'; a[11] = args['θ4'] .. 'ετε'; a[12] = args['θ4'] .. 'ουν'
    a[13] = args['θ4'] .. 'ει'
    a[14] = args['πρ3'] or ''
    a[15] = args['πρ4'] or args['θ4'] .. "είτε"
    return synoptikoi0(a)
end

synoptikoi['ην-ώ'] = function (args)
    local a ={}
    a[1] = args['θ3'] .. 'ην'; a[2] = args['θ3'] .. 'ης'; a[3] = args['θ3'] .. 'η'
    a[4] = args['θ4α'] .. 'ήκαμε'; a[5] = args['θ4α'] .. 'ήκατε'; a[6] = args['θ3'] .. 'ησαν'
    a[7] = args['θ4'] .. 'ώ'; a[8] = args['θ4'] .. 'είς'; a[9] = args['θ4'] .. 'εί'
    a[10] = args['θ4'] .. 'ούμε'; a[11] = args['θ4'] .. 'είτε'; a[12] = args['θ4'] .. 'ούν'
    a[13] = args['θ4'] .. 'εί'
    a[14] = args['πρ3'] or args['θ4'] .. "ές"
    a[15] = args['πρ4'] or args['θ4'] .. "είτε"
    return synoptikoi0(a)
end

syntelesmenoi1 = function (args)
    local ei = args['ei'] or "ει"
    local apar = args['θ4'] .. ei
    local pr5 = ""
    local pr6 = ""
    if args['παρακΒ'] ~= nil then
        pr5 = "έχε " .. args['μτχ']
        pr6 = "έχετε " .. args['μτχ']
    end
    output = "|-\n! πρόσωπα\n! Παρακείμενος\n! Υπερσυντέλικος\n! Συντελ. Μέλλ.\n! Υποτακτική\n! Προστακτική\n! "
    output = output .. "\n|-\n| " .. xr1 .. " | α' ενικ.\n| έχω " .. apar .. "\n| είχα " .. apar .. "\n| θα έχω " .. apar .. "\n| να έχω " .. apar .. "\n| \n| rowspan='6' | "
    output = output .. "\n|-\n| " .. xr1 .. " | β' ενικ.\n| έχεις " .. apar .. "\n| είχες " .. apar .. "\n| θα έχεις " .. apar .. "\n| να έχεις " .. apar .. "\n| " .. pr5
    output = output .. "\n|-\n| " .. xr1 .. " | γ' ενικ.\n| έχει " .. apar .. "\n| είχε " .. apar .. "\n| θα έχει " .. apar .. "\n| να έχει " .. apar .. "\n| "
    output = output .. "\n|-\n| " .. xr1 .. " | α' πληθ.\n| έχουμε " .. apar .. "\n| είχαμε " .. apar .. "\n| θα έχουμε " .. apar .. "\n| να έχουμε " .. apar .. "\n| "
    output = output .. "\n|-\n| " .. xr1 .. " | β' πληθ.\n| έχετε " .. apar .. "\n| είχατε " .. apar .. "\n| θα έχετε " .. apar .. "\n| να έχετε " .. apar .. "\n| " .. pr6
    output = output .. "\n|-\n| " .. xr1 .. " | γ' πληθ.\n| έχουν " .. apar .. "\n| είχαν " .. apar .. "\n| θα έχουν " .. apar .. "\n| να έχουν " .. apar .. "\n| \n"
    return output
end

syntelesmenoi2 = function (mtx)
    output = "|-\n| ".. xr1 .. " | Παρακείμενος\n| colspan='6' |έχω (έχεις, έχει, έχουμε, έχετε, έχουν) " .. mtx
    output = output .. "\n|-\n| " .. xr1 .. " | Υπερσυντέλικος\n| colspan='6' |είχα (είχες, είχε , είχαμε, είχατε, είχαν) " .. mtx
    output = output .. "\n|-\n| " .. xr1 .. " | Συντελ. Μέλλ.\n| colspan='6' |θα έχω (θα έχεις, θα έχει, θα έχουμε, θα έχετε, θα έχουν) " .. mtx
    output = output .. "\n|-\n| " .. xr1 .. " | Υποτακτική\n| colspan='6' |να έχω (να έχεις, να έχει, να έχουμε, να έχετε, να έχουν) " .. mtx
    return output
end

--Παθητικοί χρόνοι
enestotas["ιέμαι"] = function (args)
    local e = {}
    e[1] = args['θ1'] .. 'ιέμαι'; e[2] = args['θ1'] .. 'ιέσαι'; e[3] = args['θ1'] .. 'ιέται'
    e[4] = args['θ1'] .. 'ιόμαστε'; e[5] = args['θ1'] .. 'ιέστε'; e[6] = args['θ1'] .. 'ιούνται'
    e[7] = args['θ1'] .. 'ιόμουν(α)'; e[8] = args['θ1'] .. 'ιόσουν(α)'; e[9] = args['θ1'] .. 'ιόταν(ε)'
    e[10] = args['θ1'] .. 'ιόμαστε<br />' .. args['θ1'] .. 'ιόμασταν'
    e[11] = args['θ1'] .. 'ιόσαστε<br />' .. args['θ1'] .. 'ιόσασταν'
    e[12] = args['θ1'] .. 'ιόνταν(ε)<br />' .. args['θ1'] .. 'ιούνταν<br />' .. args['θ1'] .. 'ιόντουσαν'
    e[13] = ''
    if args['μτχ1'] ~= nil then e[13] = '[[' .. args['θ1'] .. 'ώμενος]]' end
    e[14] = args['πρ1']; e[15] = args['πρ2']
    return enestotas0(e)
end

enestotas["ούμαι"] = function (args)
    local e = {}
    e[1] = args['θ1'] .. 'ούμαι'; e[2] = args['θ1'] .. 'είσαι'; e[3] = args['θ1'] .. 'είται'
    e[4] = args['θ1'] .. 'ούμαστε'; e[5] = args['θ1'] .. 'είστε'; e[6] = args['θ1'] .. 'ούνται'
    e[7] = args['θ1'] .. 'ούμουν'; e[8] = args['θ1'] .. 'ούσουν'; e[9] = args['θ1'] .. 'ούνταν'
    e[10] = args['θ1'] .. 'ούμασταν<br />' .. args['θ1'] .. 'ούμαστε'
    e[11] = args['θ1'] .. 'ούσασταν<br />' .. args['θ1'] .. 'ούσαστε'; e[12] = args['θ1'] .. 'ούνταν'
    e[13] = ''; if args['μτχ1'] ~= nil then e[13] = '[[' .. args['θ1'] .. 'ούμενος]]' end
    e[14] = args['πρ1']; e[15] = args['πρ2']
    return enestotas0(e)
end

enestotas["ιέμαι-ούμαι"] = function (args)
    local e = {}
    e[1] = args['θ1'] .. 'ούμαι - ' .. args['θ1'] .. 'ιέμαι'
    e[2] = args['θ1'] .. 'είσαι - ' .. args['θ1'] .. 'ιέσαι'
    e[3] = args['θ1'] .. 'είται - ' .. args['θ1'] .. 'ιέται'
    e[4] = args['θ1'] .. 'ιόμαστε - ' .. args['θ1'] .. 'ούμαστε'
    e[5] = args['θ1'] .. 'είστε - ' .. args['θ1'] .. 'ιέστε - ' .. args['θ1'] .. 'ιόσαστε'
    e[6] = args['θ1'] .. 'ούνται - ' .. args['θ1'] .. 'ιούνται - ' .. args['θ1'] .. 'ιόνται'
    -- Ο παρατατικός θέλει και άλλους τύπους
    e[7] = args['θ1'] .. 'ιόμουν(α)'; e[8] = args['θ1'] .. 'ιόσουν(α)'
    e[9] = args['θ1'] .. 'ούνταν - ' .. args['θ1'] .. 'ιόταν(ε)'
    e[10] = args['θ1'] .. 'ιόμασταν - ' .. args['θ1'] .. 'ιόμαστε'
    e[11] = args['θ1'] .. 'ιόσασταν - ' .. args['θ1'] .. 'ιόσαστε'
    e[12] = args['θ1']..'ούνταν - ' .. args['θ1'] .. 'ιόνταν(ε) - ' .. args['θ1'] .. 'ιούνταν - ' .. args['θ1'] .. 'ιόντουσαν'
    e[13] = ''
    if args['μτχ1'] ~= nil then e[13] = '[[' .. args['θ1'] .. 'ώμενος]]' end
    e[14] = args['πρ1']; e[15] = args['πρ2']
    return enestotas0(e)
end

enestotas["ούμαι2"] = function (args)
    local e = {}
    -- δικαιούμαι, το ού είναι σταθερό, περιέχεται στο args['θ1']
    e[1] = args['θ1'] .. 'μαι'; e[2] = args['θ1'] .. 'σαι'; e[3] = args['θ1'] .. 'ται'
    e[4] = args['θ1'] .. 'μεθα<br />' .. args['θ1'] .. 'μαστε'
    e[5] = args['θ1'] .. 'σθε<br />' .. args['θ1'] .. 'στε'; e[6] = args['θ1'] .. 'νται'
    e[7] = args['θ1'] .. 'μουν<br />' .. args['θ1'] .. 'μην'
    e[8] = args['θ1'] .. 'σουν<br />' .. args['θ1'] .. 'σο'
    e[9] = args['θ1'] .. 'νταν<br />' .. args['θ1'] .. 'το'
    e[10] = args['θ1'] .. 'μαστε<br />' .. args['θ1'] .. 'μασταν'
    e[11] = args['θ1'] .. 'σαστε<br />' .. args['θ1'] .. 'σασταν'
    e[12] = args['θ1'] .. 'νταν<br />' .. args['θ1'] .. 'ντο'
    e[13] = ''; if args['μτχ1'] ~= nil then e[13] = '[[' .. args['θ1'] .. 'μενος]]' end
    e[14] = args['πρ1'] or ""; e[15] = args['πρ2'] or ""
    return enestotas0(e)
end

enestotas["άμαι"] = function (args)
    local e = {}
    e[1] = args['θ1'] .. 'άμαι<br />' .. args['θ1'] .. 'ούμαι'; e[2] = args['θ1'] .. 'άσαι'; e[3] = args['θ1'] .. 'άται'
    e[4] = args['θ1'] .. 'όμαστε<br />' .. args['θ1'] .. 'ούμαστε'
    e[5] = args['θ1'] .. 'άστε'; e[6] = args['θ1'] .. 'ούνται'
    e[7] = args['θ1'] .. 'όμουν(α)'; e[8] = args['θ1'] .. 'όσουν(α)'; e[9] = args['θ1'] .. 'όταν(ε)'
    e[10] = args['θ1'] .. 'όμαστε<br />' .. args['θ1'] .. 'όμασταν'
    e[11] = args['θ1'] .. 'όσαστε<br />' .. args['θ1'] .. 'όσασταν'; e[12] = args['θ1'] .. 'ούνταν'
    e[13] = ''; if args['μτχ1'] ~= nil then e[13] = '[[' .. args['θ1'] .. 'ούμενος]]' end
    e[14] = args['πρ1']; e[15] = args['πρ2']
    return enestotas0(e)
end

enestotas["ώμαι"] = function (args)
    local e = {}
    e[1] = args['θ1'] .. 'ώμαι'; e[2] = args['θ1'] .. 'άσαι'; e[3] = args['θ1'] .. 'άται'
    e[4] = args['θ1'] .. 'ώμεθα - ' .. args['θ1'] .. 'όμαστε'
    e[5] = args['θ1'] .. 'άσθε - ' .. args['θ1'] .. 'άστε'; e[6] = args['θ1'] .. 'ώνται'
    e[7] = args['θ1'] .. 'όμουν'; e[8] = args['θ1'] .. 'όσουν'; e[9] = args['θ1'] .. 'όταν';
    e[10] = args['θ1'] .. 'όμασταν';e[11] = args['θ1'] .. 'όσασταν';e[12] = args['θ1'] .. 'όνταν - ' .. args['θ1'] .. 'όντουσαν';
    e[13] = ''; if args['μτχ1'] ~= nil then e[13] = '[[' .. args['θ1'] .. 'ώμενος]]' end
    e[14] = args['πρ1']; e[15] = args['πρ2']
    return enestotas0(e)
end

enestotas['ομαι'] = function (args)
    local e = {}
    e[1] = args['θ1'] .. 'ομαι'; e[2] = args['θ1'] .. 'εσαι'; e[3] = args['θ1'] .. 'εται'
    e[4] = args['θ2'] .. 'όμαστε'; e[5] = args['θ1'] .. 'εστε'; e[6] = args['θ1'] .. 'ονται'
    e[7] = args['θ2'] .. 'όμουν(α)'; e[8] = args['θ2'] .. 'όσουν(α)'; e[9] = args['θ2'] .. 'όταν(ε)'
    e[10] = args['θ2'] .. 'όμαστε<br />' .. args['θ2'] .. 'όμασταν'
    e[11] = args['θ2'] .. 'όσαστε<br />' .. args['θ2'] .. 'όσασταν'
    e[12] = args['θ1'] .. 'ονταν<br />' .. args['θ2'] .. 'όντουσαν'
    e[13] = ''; if args['μτχ1'] ~= nil then e[13] = '[[' .. args['θ2'] .. 'όμενος]]' end
    e[14] = args['πρ1']; e[15] = args['πρ2']
    return enestotas0(e)
end

-- παθητικοί συνοπτικοί
synoptikoi['ηκα-ώ'] = function (args)
    local a ={}
    a[1] = args['θ3'] .. 'ηκα'; a[2] = args['θ3'] .. 'ηκες'; a[3] = args['θ3'] .. 'ηκε'
    a[4] = args['θ4'] .. 'ήκαμε'; a[5] = args['θ4'] .. 'ήκατε'; a[6] = args['θ3'] .. 'ηκαν<br />' .. args['θ4'] .. 'ήκαν(ε)'
    a[7] = args['θ4'] .. 'ώ'; a[8] = args['θ4'] .. 'είς'; a[9] = args['θ4'] .. 'εί'
    a[10] = args['θ4'] .. 'ούμε'; a[11] = args['θ4'] .. 'είτε'; a[12] = args['θ4'] .. 'ούν(ε)'
    a[13] = args['θ4'] .. 'εί'; a[14] = args['πρ3']; a[15] = args['πρ4']
    return synoptikoi0(a)
end

syntelesmenoi1p = function (args)
    local apar = args['θ4'] .. "εί"
    local mtx = ""
    if args['μτχ'] ~= nil and args['μτχ'] ~= "-" and args['μτχ'] ~= "" then mtx = "[[" .. args['μτχ'] .. "ς]]" end
    local output = "|-\n! πρόσωπα\n! Παρακείμενος\n! Υπερσυντέλικος\n! Συντελ. Μέλλ.\n! Υποτακτική\n! Προστακτική\n! Μετοχή"
    output = output .. "\n|-\n| " .. xr1 .. " | α' ενικ.\n| έχω " .. apar .. "\n| είχα " .. apar .. "\n| θα έχω " .. apar .. "\n| να έχω " .. apar .. "\n| rowspan='6' | \n| rowspan='6' align='center'| " .. mtx
    output = output .. "\n|-\n| " .. xr1 .. " | β' ενικ.\n| έχεις " .. apar .. "\n| είχες " .. apar .. "\n| θα έχεις " .. apar .. "\n| να έχεις " .. apar
    output = output .. "\n|-\n| " .. xr1 .. " | γ' ενικ.\n| έχει " .. apar .. "\n| είχε " .. apar .. "\n| θα έχει " .. apar .. "\n| να έχει " .. apar
    output = output .. "\n|-\n| " .. xr1 .. " | α' πληθ.\n| έχουμε " .. apar .. "\n| είχαμε " .. apar .. "\n| θα έχουμε " .. apar .. "\n| να έχουμε " .. apar
    output = output .. "\n|-\n| " .. xr1 .. " | β' πληθ.\n| έχετε " .. apar .. "\n| είχατε " .. apar .. "\n| θα έχετε " .. apar .. "\n| να έχετε " .. apar
    output = output .. "\n|-\n| " .. xr1 .. " | γ' πληθ.\n| έχουν " .. apar .. "\n| είχαν " .. apar .. "\n| θα έχουν " .. apar .. "\n| να έχουν " .. apar
    return output
end

syntelesmenoi3 = function (mtx)
    local output = "|-\n| ".. xr1 .. " | Παρακείμενος\n| colspan='6' |[[είμαι]], είσαι, είναι [[" .. mtx .. "ς]] - είμαστε, είστε, είναι " .. mtx .."ι"
    output = output .. "\n|-\n| " .. xr1 .. " | Υπερσυντέλικος\n| colspan='6' |ήμουν, ήσουν, ήταν " .. mtx .. "ς - ήμαστε, ήσαστε, ήταν " .. mtx .."ι"
    output = output .. "\n|-\n| " .. xr1 .. " | Συντελ. Μέλλ.\n| colspan='6' |θα είμαι, θα είσαι, θα είναι " .. mtx .. "ς - θα είμαστε, θα είστε, θα είναι " .. mtx .."ι"
    output = output .. "\n|-\n| " .. xr1 .. " | Υποτακτική\n| colspan='6' |να είμαι, να είσαι, να είναι " .. mtx .. "ς - να είμαστε, να είστε, να είναι " .. mtx .."ι"
    return output
end

fulltable_new1 = function (args)
    local output = [=[<div class="NavFrame" style="clear:both;">
<div class="NavHead" align="left">&nbsp; &nbsp; Ενεργητική φωνή</div>
<div class="NavContent">
{|]=] .. style1 .. [=[ 
|-
! colspan="7" style="background:#e2e4c0; text-align:center" | Εξακολουθητικοί χρόνοι ]=]
    output = output .. '\n' .. enestotas[args['ενεστ']](args)
    output = output .. '\n|-\n! colspan="7" style="background:#e2e4c0; text-align:center" | Συνοπτικοί χρόνοι'
    output = output .. '\n' .. synoptikoi[args['συνοπτ']](args)
    output = output .. '\n|-\n! colspan="7" style="background:#e2e4c0; text-align:center" | Συντελεσμένοι χρόνοι'
    output = output .. '\n' .. syntelesmenoi1(args)
    if args['παρακΒ'] ~= nil then
        output = output .. '\n|-\n! colspan="7" style="background:#e2e4c0; text-align:center" | Συντελεσμένοι χρόνοι β΄ (μεταβατικοί)'
        output = output .. '\n' .. syntelesmenoi2(args['μτχ'])
    end
    if args['παρακΓ'] ~= nil then
        output = output .. '\n|-\n! colspan="7" style="background:#e2e4c0; text-align:center" | Συντελεσμένοι χρόνοι β΄ (αμετάβατοι)'
        output = output .. '\n' .. syntelesmenoi3(args['μτχ'])
    end
    output = output .. '\n\n|}\n</div></div>'
    return output
end

fulltable_new2p = function (args)
    local output = [=[<div class="NavFrame" style="clear:both;">
<div class="NavHead" align="left">&nbsp; &nbsp; Παθητική φωνή</div>
<div class="NavContent">
{|]=] .. style1 .. [=[ 
|-
! colspan="7" style="background:#e2e4c0; text-align:center" | Εξακολουθητικοί χρόνοι ]=]
    output = output .. '\n' .. enestotas[args['ενεστ']](args)
    output = output .. '\n|-\n! colspan="7" style="background:#e2e4c0; text-align:center" | Συνοπτικοί χρόνοι'
    output = output .. '\n' .. synoptikoi[args['συνοπτ']](args)
    output = output .. '\n|-\n! colspan="7" style="background:#e2e4c0; text-align:center" | Συντελεσμένοι χρόνοι'
    output = output .. '\n' .. syntelesmenoi1p(args)
    if args['παρακΒ'] ~= nil then
        output = output .. '\n|-\n! colspan="7" style="background:#e2e4c0; text-align:center" | Συντελεσμένοι χρόνοι (β΄ τύποι)'
        output = output .. '\n' .. syntelesmenoi3(args['μτχ'])
    end
    output = output .. '\n\n|}\n</div></div>'
    return output
end

-- Πρώτο πειραματικό πρότυπο, θέλει ως παράμετρο τον Αόριστο
_module.drosizo = function(frame)
    local args = frame:getParent().args
    local lemma = ""
    if args['λήμμα'] ~= nil and args['λήμμα'] ~= "" then
        lemma = args['λήμμα']
    else
        PAGENAME = mw.title.getCurrentTitle().text
        lemma = PAGENAME:match( "^%s*(.-)%s*$" )
    end
    args['θ1'] = mw.ustring.sub(lemma,1,-2)
    if args['θ1α'] == nil then args['θ1α'] = args['θ1'] end
    args['θ2'] = _module.neostonos2(args['θ1'], args['συνίζ'])
    args['θ3'] = mw.ustring.sub(args['αορ'],1,-2)
    args['θ4'] = neostonos(removeaccent(args['θ3']))
    if args['θ4α'] == nil then args['θ4α'] = args['θ4'] end
    if args['πρ1'] == nil then args['πρ1'] = args['θ2'] .. "ε" end
    if args['πρ2'] == nil then args['πρ2'] = args['θ1'] .. "ετε" end
    if args['πρ3'] == nil then args['πρ3'] = args['θ3'] .. "ε" end
    if args['πρ4'] == nil then args['πρ4'] = args['θ4'] .. "ετε" end
    if args['μτχ'] ~= nil then
        args['παρακΒ'] = "1"
    end
    args['ενεστ'] = 'ω'; args['συνοπτ'] = 'α'
    return frame:preprocess(fulltable_new1(args))
end

-- Για το πρότυπο "{{el-κλίσ-δροσίζω}}" που χρειάζεται παραμέτρους για τα θέματα
_module.energitiko_1 = function(frame)
    local args = frame:getParent().args
    local lemma = ""
    if args['λήμμα'] ~= nil and args['λήμμα'] ~= "" then
        lemma = args['λήμμα']
    else
        PAGENAME = mw.title.getCurrentTitle().text
        lemma = PAGENAME:match( "^%s*(.-)%s*$" )
    end
    local pr4 =  args['pr4'] or ''
    args['θ1'] = args[1] or mw.ustring.sub(lemma,1,-2)
    args['θ2'] = args[2]
    if args['θ1α'] == nil then args['θ1α'] = args['θ1'] end
    args['θ4'] = args[3]
    if args['θ4α'] == nil then args['θ4α'] = args['θ4'] end -- allow override (για το 'παίρνω')
    args['θ3'] = args[4]
    if args[5] ~= nil and args[5] ~= "" then
        args['μτχ'] = args[5] .. "ένο"
        args['παρακΒ'] = true
    end
    if args['παρακΒ'] == "0" then args['παρακΒ'] = nil end
    if args['πρ1'] == nil then args['πρ1'] = args['θ2'] .. "ε" end
    if args['πρ2'] == nil then args['πρ2'] = args['θ1'] .. "ετε" end
    if args['πρ3'] == nil then args['πρ3'] = args['θ3'] .. "ε" end
    if args['πρ4'] == nil then args['πρ4'] = args['θ4'] .. pr4 .. "τε" end
    args['ενεστ'] = 'ω'; args['συνοπτ'] = 'α'
    return frame:preprocess(fulltable_new1(args))
end

-- Για το πρότυπο "{{el-κλίσ-'δένω'}}" που δέχεται παραμέτρους για τα θέματα και τις προθέσεις
_module.energitiko_2 = function(frame)
    local args = frame:getParent().args
    local lemma = ""
    if args['λήμμα'] ~= nil and args['λήμμα'] ~= "" then
        lemma = args['λήμμα']
    else
        PAGENAME = mw.title.getCurrentTitle().text
        lemma = PAGENAME:match( "^%s*(.-)%s*$" )
    end
    local pr4 =  args['pr4'] or ''
    local proth1 = args[6] or ''
    local proth2 = args[7] or ''
    local proth3 = args[8] or ''
    args['θ1'] = proth1 .. args[1] or mw.ustring.sub(lemma,1,-2)
    args['θ2'] = proth2 .. 'έ' .. args[2]
    args['θ4'] = proth1 .. args[3]
    args['θ3'] = proth2 .. 'έ' .. args[4]
    args['θ1α'] = args['θ1']
    args['θ4α'] = args['θ4']
    if args[5] ~= nil and args[5] ~= "" then
        args['μτχ'] = proth1 .. args[5] .. "ένο"
        args['παρακΒ'] = true
    end
    if args['παρακΒ'] == "0" then args['παρακΒ'] = nil end
    if args['πρ1'] == nil then
        if args[8] == nil then
            args['πρ1'] = args['θ1'] .. "ε"
        else
            args['πρ1'] = proth3 .. args[2] .. "ε"
        end
    end
    if args['πρ2'] == nil then args['πρ2'] = args['θ1'] .. "ετε" end
    if args['πρ3'] == nil then
        if args[8] == nil then
            args['πρ3'] = args['θ4'] .. "ε"
        else
            args['πρ3'] = proth3 .. args[4] .. "ε"
        end
    end
    if args['πρ4'] == nil then args['πρ4'] = args['θ4'] .. pr4 .. "τε" end
    args['ενεστ'] = 'ω'; args['συνοπτ'] = 'α'
    return frame:preprocess(fulltable_new1(args))
end

-- Για το πρότυπο "{{el-κλίσ-'ακούω'}}"
_module.akouo = function(frame)
    local args = frame:getParent().args
    local lemma = ""
    if args['λήμμα'] ~= nil and args['λήμμα'] ~= "" then
        lemma = args['λήμμα']
    else
        PAGENAME = mw.title.getCurrentTitle().text
        --αφαίρεση κενών στην αρχή και στο τέλος
        lemma = PAGENAME:match( "^%s*(.-)%s*$" )
    end
    local pr4 =  args['pr4'] or ''
    args['θ1'] = args[1] or mw.ustring.sub(lemma,1,-2)
    args['θ1β'] = args['θ1'] 
    args['θ2'] = args[2] or _module.neostonos2(args['θ1'])
    args['θ4'] = args[3] or args['θ1'] .. "σ"
    args['θ4α'] = args['θ4']
    args['θ3'] = args[4] or _module.neostonos2(args['θ4'])
    if args[5] ~= nil and args[5] ~= "" then
        args['μτχ'] = args[5] .. "ένο"
        args['παρακΒ'] = true
    end
    if args['παρακΒ'] == "0" then args['παρακΒ'] = nil end
    if args['πρ1'] == nil then args['πρ1'] = args['θ2'] .. "γε" end
    if args['πρ2'] == nil then args['πρ2'] = args['θ1'] .. "ετε" end
    if args['πρ3'] == nil then args['πρ3'] = args['θ3'] .. "ε" end
    if args['πρ4'] == nil then args['πρ4'] = args['θ4'] .. pr4 .. "τε" end
    args['ενεστ'] = 'άω-γα'; args['συνοπτ'] = 'α'
    return frame:preprocess(fulltable_new1(args))
end

_module.spao = function(frame)
    local args = frame:getParent().args
    local lemma = ""
    local proth = args['προθ'] or ''
    if args['λήμμα'] ~= nil and args['λήμμα'] ~= "" then
        lemma = args['λήμμα']
    else
        PAGENAME = mw.title.getCurrentTitle().text
        --αφαίρεση κενών στην αρχή και στο τέλος
        lemma = PAGENAME:match( "^%s*(.-)%s*$" )
    end
    local pr4 =  args['pr4'] or ''
    args['θ1'] = mw.ustring.sub(lemma,1,-2)  			--σπά
    if proth == '' then
    	args['θ1β'] = removeaccent(args['θ1']) 			--σπα
    else
    	args['θ1β'] = args['θ1']
    end
    args['θ2'] = proth .. 'έ' .. args['θ1β']			--έσπα
    args['θ4'] = args['θαορ'] or args['θ1'] .. "σ"		--σπάσ
    args['θ4'] = proth .. args['θ4']
    args['θ4α'] = args['θ4']
    args['θ3'] = 'έ' .. removeaccent(args['θ4'])		--έσπασ
    args['θ3'] = proth .. args['θ3']
    local xmtx = args['χμτχ'] or 'σμ'
    if args['μτχ'] == nil then args['μτχ'] = args['θ1β'] .. xmtx .. "ένο" end
    if args['πρ1'] == nil then args['πρ1'] = args['θ1'] .. "γε" end
    if args['πρ2'] == nil then args['πρ2'] = args['θ1'] .. "γετε" end
    if args['πρ3'] == nil then args['πρ3'] = args['θ4'] .. "ε" end
    if args['πρ4'] == nil then args['πρ4'] = args['θ4'] .. pr4 .. "τε" end
    args['ενεστ'] = 'άω-γα'; args['συνοπτ'] = 'α'
    return frame:preprocess(fulltable_new1(args))
end

-- Για ενεργητικά χωρίς συνοπτικούς χρόνους
_module.ksero = function(frame)
    local args = frame:getParent().args
    local arg2 = frame.args
    local lemma = ""
    if args['λήμμα'] ~= nil and args['λήμμα'] ~= "" then
        lemma = args['λήμμα']
    else
        PAGENAME = mw.title.getCurrentTitle().text
        lemma = PAGENAME:match( "^%s*(.-)%s*$" )
    end
    args['θ1'] = args[1] or arg2[1] or mw.ustring.sub(lemma,1,-2)
    args['θ1α'] = args[3] or arg2[3] or args['θ1']
    args['θ2'] = args[2] or arg2[2] or removeaccent(args['θ1'])
    if args['πρ1'] == nil then args['πρ1'] = args['θ1'] .. "ε" end
    if args['πρ2'] == nil then args['πρ2'] = args['θ1'] .. "ετε" end
    local output = "{|" .. style1 .. "\n" .. enestotas['ω'](args) .. "\n|}"
    return frame:preprocess(output)   
end

--Ρήματα της 2ης συζυγίας χωρίς συνοπτικούς χρόνους
_module.agonio = function(frame)
    local args = frame:getParent().args
    arg2 = frame.args
    local enest = args['ενεστ'] or arg2['ενεστ'] or 'ώ-άς'
    local lemma = ""
    if args['λήμμα'] ~= nil and args['λήμμα'] ~= "" then
        lemma = args['λήμμα']
    else
        PAGENAME = mw.title.getCurrentTitle().text
        lemma = PAGENAME:match( "^%s*(.-)%s*$" )
    end
    args['θ1'] = mw.ustring.sub(lemma,1,-2)
    args['θ2'] = neostonos(args['θ1'])
    --if args['πρ1'] == nil then args['πρ1'] = args['θ2'] .. "α" end
    --if args['πρ2'] == nil then args['πρ2'] = args['θ1'] .. "άτε" end
    local output = "{|" .. style1 .. "\n" .. enestotas[enest](args) .. "\n|}"
    return frame:preprocess(output)   
end

-- Για τα πρότυπα που δεν χρειάζονται τα θέματα ως παραμέτρους
_module.nomizo = function(frame)
    local args = frame:getParent().args
    local arg2 = frame.args
    local lemma = ""
    if args['λήμμα'] ~= nil and args['λήμμα'] ~= "" then
        lemma = args['λήμμα']
    else
        PAGENAME = mw.title.getCurrentTitle().text
        --αφαίρεση κενών στην αρχή και στο τέλος
        lemma = PAGENAME:match( "^%s*(.-)%s*$" )
    end
    local xar = tonumber(args['χαρ']) or tonumber(arg2['χαρ']) or 1
    local sigma = args['σ'] or arg2['σ'] or 'σ'
    local xmtx = args['χμτχ'] or arg2['χμτχ'] or 'σμ'
    local pr4 =  args['pr4'] or arg2['pr4'] or ''        -- μπορεί να πάρει την τιμή 'έ'
    args['θ1'] = mw.ustring.sub(lemma,1,-2)                     --νομίζ
    args['θ1α'] = args['θ1']
    args['θ2'] = _module.neostonos2(args['θ1'], args['συνίζ'])  --νόμιζ
    local stem2 = mw.ustring.sub(lemma,1,-xar-2)                --νομί
    local anelkuw = args['υ'] or ''
    if anelkuw ~= '' then stem2 = mw.ustring.sub(lemma,1,-xar-1)  end
    args['θ4'] = stem2 .. sigma                                 --νομίσ
    args['θ4α'] = args['θ4']
    args['θ3'] = _module.neostonos2(args['θ4'], args['συνίζ'])  --νόμισ
    if args['πρ1'] == nil then args['πρ1'] = args['θ2'] .. "ε" end
    if args['πρ2'] == nil then args['πρ2'] = args['θ1'] .. "ετε" end
    if args['πρ3'] == nil then args['πρ3'] = args['θ3'] .. "ε" end
    if args['πρ4'] == nil then args['πρ4'] = args['θ4'] .. pr4 .. "τε" end
    if args['μτχ'] == nil then args['μτχ'] = removeaccent(stem2) .. xmtx .. "ένο" end
    args['ενεστ'] = 'ω'; args['συνοπτ'] = 'α'
    return frame:preprocess(fulltable_new1(args))
end

_module.sozo = function(frame)
    local args = frame:getParent().args
    local arg2 = frame.args
    local lemma = ""
    if args['λήμμα'] ~= nil and args['λήμμα'] ~= "" then
        lemma = args['λήμμα']
    else
        PAGENAME = mw.title.getCurrentTitle().text
        --αφαίρεση κενών στην αρχή και στο τέλος
        lemma = PAGENAME:match( "^%s*(.-)%s*$" )
    end
    local xar = tonumber(args['χαρ']) or tonumber(arg2['χαρ']) or 1
    local sigma = args['σ'] or arg2['σ'] or "σ"
    local xmtx = args['χμτχ'] or arg2['χμτχ'] or "σμ"
    local pr4 =  args['pr4'] or arg2['pr4'] or ''
    args['θ1'] = mw.ustring.sub(lemma,1,-2)                 -- σώζ
    args['θ1α'] = args['θ1']
    args['θ2'] = "έ" .. removeaccent(args['θ1'])            -- έσωσ
    local stem2 = mw.ustring.sub(lemma,1,-xar-2)            -- σώ
    args['θ4'] = stem2 .. sigma                             -- σώσ
    args['θ4α'] = args['θ4']
    local stem3 = removeaccent(stem2)                       -- σωσ
    args['θ3'] = "έ" .. removeaccent(args['θ4'])            -- έσωσ
    if args['πρ1'] == nil then args['πρ1'] = args['θ1'] .. "ε" end
    if args['πρ2'] == nil then args['πρ2'] = args['θ1'] .. "ετε" end
    if args['πρ3'] == nil then args['πρ3'] = args['θ4'] .. "ε" end
    if args['πρ4'] == nil then args['πρ4'] = args['θ4'] .. pr4 .. "τε" end
    if args['μτχ'] == nil then 
        args['μτχ'] = stem3 .. xmtx .. "ένο"
     else
        args['μτχ'] = mw.ustring.sub(args['μτχ'],1,-2)
    end
    args['ενεστ'] = 'ω'; args['συνοπτ'] = 'α'
    return frame:preprocess(fulltable_new1(args))
end

_module.euw1 = function(frame)
    local args = frame:getParent().args
    local arg2 = frame.args
    local lemma = ""
    if args['λήμμα'] ~= nil and args['λήμμα'] ~= "" then
        lemma = args['λήμμα']
    else
        PAGENAME = mw.title.getCurrentTitle().text
        --αφαίρεση κενών στην αρχή και στο τέλος
        lemma = PAGENAME:match( "^%s*(.-)%s*$" )
    end
    sigma = args['σ'] or arg2['σ'] or "ψ"
    xmtx = args['χμτχ'] or arg2['χμτχ'] or "μ"
    args['θ1'] = mw.ustring.sub(lemma,1,-2)                        --παντρεύ
    args['θ2'] = _module.neostonos2(args['θ1'], nil)               --πάντρευ
    args['θ1α'] = args['θ1']
    if sigma == "ψ" then stem2 = mw.ustring.sub(lemma,1,-4) .. 'έ' --παντρέ
    else stem2 = args['θ1'] end
    args['θ4'] = stem2 .. sigma                                    --παντρέψ
    args['θ4α'] = args['θ4']
    if args['θ3'] == nil then args['θ3'] = _module.neostonos2(args['θ4'], nil) end   --πάντρεψ
    if sigma == "ψ" then stem3 = mw.ustring.sub(lemma,1,-3)                          --παντρε
    else stem3 = removeaccent(args['θ1']) end                                        --παντρευ
    if args['πρ1'] == nil then args['πρ1'] = args['θ2'] .. "ε" end
    if args['πρ2'] == nil then args['πρ2'] = args['θ1'] .. "ετε" end
    if args['πρ3'] == nil then args['πρ3'] = args['θ3'] .. "ε" end
    if args['πρ4'] == nil then args['πρ4'] = args['θ4'] .. "τε" end
    args['μτχ'] = stem3 .. xmtx .. "ένο"
    args['ενεστ'] = 'ω'; args['συνοπτ'] = 'α'
    return frame:preprocess(fulltable_new1(args))
end

-- μπαίνω, βγαίνω, πίνω, βλέπω, λέω
_module.mpaino = function(frame)
    local args = frame:getParent().args
    local arg2 = frame.args
    local proth = args['προθ'] or ''
    local lemma = ""
    if args['λήμμα'] ~= nil and args['λήμμα'] ~= "" then
        lemma = args['λήμμα']
    else
        PAGENAME = mw.title.getCurrentTitle().text
        lemma = PAGENAME:match( "^%s*(.-)%s*$" )
        lemma = mw.ustring.sub(lemma,mw.ustring.len(proth)+1,-1)
    end
    local xar = tonumber(args['χαρ']) or tonumber(arg2['χαρ']) or 3
    local xmtx = args['χμτχ'] or arg2['χμτχ'] or "σμ"
    local st1 = mw.ustring.sub(lemma,1,-2)
    args['θ1'] = proth .. st1                -- (ξανα)μπαίν
    args['θ1α'] = args['θ1']
    args['θ2'] = proth .. "έ" .. removeaccent(st1)            -- (ξανα)έμπαιν
    local st2 = args['θμελλ'] or mw.ustring.sub(lemma,1,-xar-2)    -- μπ
    args['θ4'] = proth .. st2                           -- ξαναμπ
    args['θ3'] = args['θαορ'] or st2 .. 'ήκ'              -- μπήκ
    args['θ3'] = proth .. args['θ3']
    if args['πρ1'] == nil then args['πρ1'] = args['θ1'] .. 'ε' end
    if args['πρ2'] == nil then args['πρ2'] = args['θ1'] .. 'ετε' end
    if args['μτχ'] == nil then 
        args['μτχ'] = args['θ4'] .. 'α' .. xmtx .. 'ένο'
     else
        args['μτχ'] = mw.ustring.sub(args['μτχ'],1,-2)
    end
    if args['ενεστ'] == nil then args['ενεστ'] = 'ω' end
    if args['προθ'] == nil then
        args['συνοπτ'] = 'ήκα-ω'
    else
        args['συνοπτ'] = 'ήκα-ώ'
        args['ei'] = 'εί'
    end
    return frame:preprocess(fulltable_new1(args))
end

-- 2η συζυγία, 1η τάξη
_module.agapo = function(frame)
    local args = frame:getParent().args
    local arg2 = frame.args
    local lemma = ""
    if args['λήμμα'] ~= nil and args['λήμμα'] ~= "" then
        lemma = args['λήμμα']
    else
        PAGENAME = mw.title.getCurrentTitle().text
        lemma = PAGENAME:match( "^%s*(.-)%s*$" )
    end
    local fa = args['φαορ'] or arg2['φαορ'] or "η"    -- μπορεί να είναι «ε» ή «η»
    local sa = args['σ'] or arg2['σ'] or "σ"
    local xmtx = args['χμτχ'] or arg2['χμτχ'] or "μ"
    local orio = -2
    if mw.ustring.sub(lemma,-2,-1) == 'άω' then orio = -3 end
    args['θ1'] = mw.ustring.sub(lemma, 1, orio) --αγαπ
    args['θ2'] = neostonos(args['θ1'])       --αγάπ
    args['θ3'] = args['θαορ'] or args['θ2'] .. fa .. sa   --αγάπησ
    args['θ4'] = neostonos(removeaccent(args['θ3']))      --αγαπήσ
    args['θ4α'] = args['θ4']
    if args['πρ1'] == nil then args['πρ1'] = args['θ2'] .. "α - " .. args['θ2'] .. "αγε" end
    if args['πρ3'] == nil then args['πρ3'] = args['θ2'] .. "α - " .. args['θ3'] .. "ε" end
    if args['πρ4'] == nil then args['πρ4'] = args['θ4'] .. "τε" end
    args['μτχ'] = args['θ1'] .. fa .. xmtx .. "ένο"
    if args['ενεστ'] == nil then args['ενεστ'] = arg2['ενεστ'] or 'άω_ώ' end
    if args['παρατΒ'] == '1' and args['ενεστ'] == 'άω_ώ' then args['ενεστ'] = 'άω_ώ3' end -- Ρήματα με δεύτερους τύπος παρατατικού πχ αγαπαγα
    if args['παρατΒ'] == '1' and args['ενεστ'] == 'άω-ώ2' then args['ενεστ'] = 'άω_ώ4' end -- Ρήματα με δεύτερους τύπος παρατατικού πχ ζήταγα
    args['συνοπτ'] = 'α'
    return frame:preprocess(fulltable_new1(args))
end

-- 2η συζυγία, 2η τάξη
_module.theoro = function(frame)
    local args = frame:getParent().args
    local arg2 = frame.args
    local lemma = ""
    if args['λήμμα'] ~= nil and args['λήμμα'] ~= "" then
        lemma = args['λήμμα']
    else
        PAGENAME = mw.title.getCurrentTitle().text
        --αφαίρεση κενών στην αρχή και στο τέλος
        lemma = PAGENAME:match( "^%s*(.-)%s*$" )
    end
    local fa = args['φαορ'] or arg2['φαορ'] or "η"    -- μπορεί να είναι «ε» ή «η»
    local sa = args['σ'] or arg2['σ'] or "σ"
    local xmtx = args['χμτχ'] or arg2['χμτχ'] or "μ"
    args['θ1'] = mw.ustring.sub(lemma,1,-2) --θεωρ
    args['θ2'] = neostonos(args['θ1'])       --θεώρ
    args['θ3'] = args['θ2'] .. fa .. sa            --θεώρησ
    args['θ4'] = neostonos(removeaccent(args['θ3']))      --θεωρήσ
    args['θ4α'] = args['θ4']
    if args['πρ3'] == nil then args['πρ3'] = args['θ3'] .. "ε" end
    if args['πρ4'] == nil then args['πρ4'] = args['θ4'] .. "τε" end
    args['μτχ'] = args['θ1'] .. fa .. xmtx .. "ένο"
    args['ενεστ'] = 'ώ'; args['συνοπτ'] = 'α'
    return frame:preprocess(fulltable_new1(args))
end


-- Για παθητικά χωρίς συνοπτικούς χρόνους
_module.anamenomai = function(frame)
    local args = frame:getParent().args
    local arg2 = frame.args
    local enest = args['ενεστ'] or 'ομαι'
    local lemma = ""
    if args['λήμμα'] ~= nil and args['λήμμα'] ~= "" then
        lemma = args['λήμμα']
    else
        PAGENAME = mw.title.getCurrentTitle().text
        lemma = PAGENAME:match( "^%s*(.-)%s*$" )
    end
    args['θ1'] = args[1] or arg2[1] or mw.ustring.sub(lemma,1,-5)
    args['θ2'] = args[2] or arg2[2] or removeaccent(args['θ1'])
    if args['πρ1'] == nil then args['πρ1'] = args['θ1'] .. "ου" end
    if args['πρ2'] == nil then args['πρ2'] = args['θ1'] .. "εστε" end
    local output = "{|" .. style1 .. "\n" .. enestotas[enest](args) .. "\n|}"
    return frame:preprocess(output)   
end

-- Παθητικά Α΄ συζυγίας

-- Για το πρότυπο "δένομαι" που χρειάζεται τα θέματα ως παραμέτρους
_module.denomai = function(frame)
    local args = frame:getParent().args
    local lemma = ""
    if args['λήμμα'] ~= nil and args['λήμμα'] ~= "" then
        lemma = args['λήμμα']
    else
        PAGENAME = mw.title.getCurrentTitle().text
        lemma = PAGENAME:match( "^%s*(.-)%s*$" )
    end
    args['ενεστ'] = 'ομαι'; args['συνοπτ'] = 'ηκα-ώ'
    args['θ1'] = args[1] or mw.ustring.sub(lemma,1,-5)
    args['θ2'] = args[2]
    args['θ3'] = args[3]
    args['θ4'] = args['4']
    if (args[6] == nil or args[6] == '') and args['πρ3'] == nil then args['πρ3'] = '' end
    if args[5] ~= nil and args[5] ~= "" then
        args['μτχ'] = args[5] .. "ένο"
    else
        args['μτχ'] = nil
    end
    if args['πρ1'] == nil then args['πρ1'] = args['θ1'] .. "ου" end
    if args['πρ2'] == nil then args['πρ2'] = args['θ1'] .. "εστε" end
    if args['πρ3'] == nil then args['πρ3'] = args[6] .. "ου" end
    if args['πρ4'] == nil then args['πρ4'] = args['θ4'] .. "είτε" end
    return frame:preprocess(fulltable_new2p(args))
end

_module.omai1 = function(frame)
    local args = frame:getParent().args
    local arg2 = frame.args
    local lemma = ""
    if args['λήμμα'] ~= nil and args['λήμμα'] ~= "" then
        lemma = args['λήμμα']
    else
        PAGENAME = mw.title.getCurrentTitle().text
        --αφαίρεση κενών στην αρχή και στο τέλος
        lemma = PAGENAME:match( "^%s*(.-)%s*$" )
    end
    args['ενεστ'] = 'ομαι'; args['συνοπτ'] = 'ηκα-ώ'
    local theta = args['χαορ'] or arg2['χαορ'] or 'στ'            -- μπορεί να είναι θ, χτ, φτ
    local sigma = args['σ'] or arg2['σ'] or 'σ'                   -- μπορεί να είναι σ, ξ, ψ
    local xmtx = args['χμτχ'] or arg2['χμτχ'] or 'σμ'             -- μπορεί να είναι μ, σμ, γμ, μμ ή - όταν δεν έχει μετοχή
    local xar = tonumber(args['χαρ']) or tonumber(arg2['χαρ']) or 1        --στο ρίχνομαι πρέπει ο χρήστης να μας δώσει χαρ=2
    local orio = -5
    if mw.ustring.sub(lemma,-4,-1) ~= 'ομαι' then orio = -2 end
    
    args['θ1'] = mw.ustring.sub(lemma,1,orio)        --ψηφίζ-ομαι
    args['θ2'] = removeaccent(args['θ1'])            --ψηφιζ-όμουν
    local st0 = mw.ustring.sub(args['θ1'],1,-xar-1)  --ψηφί
    args['θ3'] = st0 .. theta                        --ψηφίστ-ηκα
    args['θ4'] = removeaccent(args['θ3'])            --ψηφιστ-ώ
    args['θ5'] = st0 .. sigma                        --ψηφίσ-ου
    if args['πρ1'] == nil then args['πρ1'] = "(" .. args['θ1'] .. "ου)" end
    if args['πρ2'] == nil then args['πρ2'] = "(" .. args['θ1'] .. "εστε)" end
    if args['πρ3'] == nil then args['πρ3'] = args['θ5'] .. "ου" end
    if args['πρ4'] == nil then args['πρ4'] = args['θ4'] .. "είτε" end
    if xmtx == '-' then args['μτχ'] = '-' end
    if args['μτχ'] == nil then
        args['μτχ'] = removeaccent(st0) .. xmtx .. 'ένο'    --ψηφι..σμ..ένο(ς)
    else
        args['μτχ'] = mw.ustring.sub(args['μτχ'],1,-2)
    end
    
    return frame:preprocess(fulltable_new2p(args))
end

_module.pantreuomai = function(frame)
    local args = frame:getParent().args
    local arg2 = frame.args
    args['ενεστ'] = 'ομαι'; args['συνοπτ'] = 'ηκα-ώ'
    local lemma = ""
    if args['λήμμα'] ~= nil and args['λήμμα'] ~= "" then
        lemma = args['λήμμα']
    else
        PAGENAME = mw.title.getCurrentTitle().text
        --αφαίρεση κενών στην αρχή και στο τέλος
        lemma = PAGENAME:match( "^%s*(.-)%s*$" )
    end
    local theta = args['χαορ'] or arg2['χαορ'] or 'τ'            -- μπορεί να είναι θ, χτ, φτ
    local sigma = args['σ'] or arg2['σ'] or 'ψ'
    local xmtx = args['χμτχ'] or arg2['χμτχ'] or 'μ'             -- μπορεί να είναι μ, υμ, γμ, μμ
    local orio = -5
    if mw.ustring.sub(lemma,-4,-1) ~= 'ομαι' then orio = -2 end
    args['θ1'] = mw.ustring.sub(lemma,1,orio)       --παντρεύ
    args['θ2'] = removeaccent(args['θ1'])           --παντρευ-όμουν
    local st0 = mw.ustring.sub(args['θ1'],1,-2)     --παντρε
    local st1 = neostonos(st0)                      --παντρέ
    if sigma == "σ" then st1 = args['θ1'] end       --προστατεύ
    args['θ3'] = args['θ1'] .. theta                --παντρεύτ-ηκα
    args['θ4'] = removeaccent(args['θ3'])           --παντρευτ-ώ   
    args['θ5'] = st1 .. sigma                       --παντρέψ-ου
    if args['πρ1'] == nil then args['πρ1'] = "(" .. args['θ1'] .. "ου)" end
    if args['πρ2'] == nil then args['πρ2'] = "(" .. args['θ1'] .. "εστε)" end
    if args['πρ3'] == nil then args['πρ3'] = args['θ5'] .. "ου" end
    if args['πρ4'] == nil then args['πρ4'] = args['θ4'] .. "είτε" end
    -- need |μτχ=συνδεδεμένο στο [[συνδέω]]. Ελέγχω και [[σείομαι]] (με μτχ=-) και [[απολύομαι]] κανονικό
    if args['μτχ'] ~= nil and args['μτχ'] == args['μτχ'] and args['μτχ'] ~= "-" then args['μτχ'] = args['μτχ'] else
    	if args['μτχ'] == nil then 
        	if sigma == "σ" then
        	    args['μτχ'] = args['θ2'] .. xmtx .. 'ένο'
        	else
        	   args['μτχ'] = st0  .. xmtx .. 'ένο'
        	end
    	else
    	  args['μτχ'] = mw.ustring.sub(args['μτχ'],1.-2)
    	end
    end
    return frame:preprocess(fulltable_new2p(args))
end

--Παθητικά 2η συζυγία
_module.iemai = function(frame)
    local args = frame:getParent().args
    local arg2 = frame.args

    if args['ενεστ'] == nil then
    	args['ενεστ'] = arg2['ενεστ'] or 'ιέμαι'
    end
    args['συνοπτ'] = 'ηκα-ώ'
    local lemma = ""
    if args['λήμμα'] ~= nil and args['λήμμα'] ~= "" then
        lemma = args['λήμμα']
    else
        PAGENAME = mw.title.getCurrentTitle().text
        lemma = PAGENAME:match( "^%s*(.-)%s*$" )
    end
    local fa = args['φαορ'] or arg2['φαορ'] or 'ή'
    local theta = args['χαορ'] or arg2['χαορ'] or 'θ'            -- μπορεί να είναι ήθ, έστ ;;
    local sigma = args['σ'] or arg2['σ'] or 'σ'
    local xmtx = args['χμτχ'] or arg2['χμτχ'] or 'μ'             -- μπορεί να είναι μ, υμ, γμ, μμ
    local orio = -mw.ustring.len(args['ενεστ'])-1
    if mw.ustring.sub(lemma,-1,-1) == 'ώ' then orio = -2 end
    if mw.ustring.sub(lemma,-2,-1) == 'άω' then orio = -3 end
    args['θ1'] = mw.ustring.sub(lemma,1,orio)                   --αγαπ-ιέμαι
    local st0 =  args['θ1'] .. fa                               --αγαπή
    args['θ3'] = args['θαορ'] or st0 .. theta                   --αγαπήθ-ηκα
    args['θ4'] = removeaccent(args['θ3'])                       --αγαπηθ-ώ   
    args['θ5'] = st0 .. sigma                                   --αγαπήσ-ου
    args['πρ1'] = '';
    if args['πρ2'] == nil then
    	if  args['ενεστ'] == 'ιέμαι' then
    		args['πρ2'] = args['θ1'] .. 'ιέστε'  -- test αγαπιέμαι
    	elseif args['ενεστ'] == 'ούμαι' then
    		args['πρ2'] = args['θ1'] .. 'είστε'  -- test θεωρούμαι
    	elseif args['ενεστ'] == 'ώμαι' then
    		args['πρ2'] = args['θ1'] .. 'άσθε - ' .. args['θ1'] .. 'άστε' -- test εγγυώμαι
    	else --ιέμαι-ούμαι
    		args['πρ2'] = args['θ1'] .. 'είστε - ' .. args['θ1'] .. 'ιέστε' -- test ?
    	end
    end
    if args['πρ3'] == nil then args['πρ3'] = args['θ5'] .. "ου" end
    if args['πρ4'] == nil then args['πρ4'] = args['θ4'] .. "είτε" end
    if args['μτχ'] == nil then 
        args['μτχ'] = removeaccent(st0) .. xmtx .. 'ένο'
    else
        args['μτχ'] = mw.ustring.sub(args['μτχ'],1,-2)
    end
    return frame:preprocess(fulltable_new2p(args))
end

-- Για παθητικά 2ης συζυγίας χωρίς συνοπτικούς χρόνους
_module.dikaioumai = function(frame)
    local args = frame:getParent().args
    local arg2 = frame.args
    local enest = args['ενεστ'] or 'ούμαι2'
    local lemma = ""
    if args['λήμμα'] ~= nil and args['λήμμα'] ~= "" then
        lemma = args['λήμμα']
    else
        PAGENAME = mw.title.getCurrentTitle().text
        lemma = PAGENAME:match( "^%s*(.-)%s*$" )
    end
    args['θ1'] = args[1] or arg2[1] or mw.ustring.sub(lemma,1,-4)
    local output = "{|" .. style1 .. "\n" .. enestotas[enest](args) .. "\n|}"
    return frame:preprocess(output)   
end

-- για παράγωγα του "βαίνω" (ανεβαίνω, κατεβαίνω, με αόριστο δημοτικής)
_module.anevaino = function(frame)
    local args = frame:getParent().args
    local lemma = ""
    if args['λήμμα'] ~= nil and args['λήμμα'] ~= "" then
        lemma = args['λήμμα']
    else
        PAGENAME = mw.title.getCurrentTitle().text
        lemma = PAGENAME:match( "^%s*(.-)%s*$" )
    end
    local pr4 =  args['pr4'] or 'εί'
    if args['χαορ'] == nil then args['χαορ'] = 'ήκ' end
    args['θ1'] = args[1] or mw.ustring.sub(lemma,1,-2)
    args['θ2'] = args[2]
    if args['θ1α'] == nil then args['θ1α'] = args['θ1'] end
    args['θ4'] = args[3]
    args['θ3'] = args[4]
    local stem = removeaccent(args['θ4'])
    if stem == args['θ4'] then
    	args['ei'] = 'εί'
    	args['συνοπτ'] = 'ηκα-ώ'
    	args['θ4α'] = args['θ4'] .. args['χαορ']
    else
    	args['θ3'] = args['θ3'] .. removeaccent(args['χαορ'])
    	args['συνοπτ'] = 'α'
    	args['θ4α'] = stem .. args['χαορ']
    end
    if args[5] ~= nil and args[5] ~= "" then
        args['μτχ'] = args[5] .. "ένο"
        args['παρακΒ'] = true
    end
    if args['παρακΒ'] == "0" then args['παρακΒ'] = nil end
    if args['πρ1'] == nil then args['πρ1'] = args['θ2'] .. "ε" end
    if args['πρ2'] == nil then args['πρ2'] = args['θ1'] .. "ετε" end
    if args['πρ3'] == nil then args['πρ3'] = args[4] .. "α" end
    if args['πρ4'] == nil then args['πρ4'] = removeaccent(args['θ4']) .. pr4 .. "τε" end
    args['ενεστ'] = 'ω'
    return frame:preprocess(fulltable_new1(args))
end

-- για παράγωγα του "βαίνω" (ανεβαίνω, κατεβαίνω, με αόριστο καθαρεύουσας)
_module.provaino = function(frame)
    local args = frame:getParent().args
    local lemma = ""
    if args['λήμμα'] ~= nil and args['λήμμα'] ~= "" then
        lemma = args['λήμμα']
    else
        PAGENAME = mw.title.getCurrentTitle().text
        lemma = PAGENAME:match( "^%s*(.-)%s*$" )
    end
    local pr4 =  args['pr4'] or 'εί'
    args['θ1'] = args[1] or mw.ustring.sub(lemma,1,-2)
    args['θ2'] = args[2]
    args['θ1α'] = args['θ1']
    args['θ3'] = args[4]
    args['θ4'] = args[3]
    local stem = removeaccent(args['θ4'])
    if stem == args['θ4'] then
    	args['ei'] = 'εί'
    	args['συνοπτ'] = 'ην-ώ'
    	args['θ4α'] = args['θ4']
    else
    	args['συνοπτ'] = 'ην-ω'
    	args['θ4α'] = stem
    end
    if args[5] ~= nil and args[5] ~= "" then
        args['μτχ'] = args[5] .. "ένο"
        args['παρακΒ'] = true
    end
    if args['παρακΒ'] == "0" then args['παρακΒ'] = nil end
    if args['πρ1'] == nil then args['πρ1'] = args['θ2'] .. "ε" end
    if args['πρ2'] == nil then args['πρ2'] = args['θ1'] .. "ετε" end
    if args['πρ4'] == nil then args['πρ4'] = removeaccent(args['θ4']) .. pr4 .. "τε" end
    args['ενεστ'] = 'ω'
    return frame:preprocess(fulltable_new1(args))
end

return _module