Magyar igeragozás fomával

A Programozás Wiki wikiből

Foma két fájltípust használ: A lexc fájl tartalmazza a szavakat, a használt nyelvtani szimbólumokat és a ragok összetevésének listáját. A .foma fájl a szabályos kifejezések (regular expression) listája, ezek összeállítása nyelvtanná. A mellékelt példaprogram egyetlen egy ragot használ de megmutatja az elvet. Az elv az, hogy a lexc fájlban kézzel kell összeállítani a lehetséges toldalékok listáját. A magyar nyelvben, lerövidítve ezek:

  • ((Rep? | Imper? | Nrep? | Nimper? | Pot? ) (caseDef | caseIndef | ConjDef | ConjIndef | PastDef | PastIndef | CondDef | CondIndef))

ahol

NévMagyarázat
Rep, NrepIsmétlés, gat/get (irogat)
Imper, NimperParancsoló tat/tet/at/et (írat)
PotLehetséges hat/het (írhat)
caseDef/caseIndefJelen idő (írok, írom, ...)
conjDef/conjIndefKötőmód (írjak, írjam, írjon, ...)
PastDef/pastIndefMúlt (írtak, írtam ...)
condDef/condIndefFeltételes (írnék, irnám ...)

Lexc fájl:[szerkesztés]

!!!enhuige.lexc!!!

Multichar_Symbols  +Verb +Rep +Imper +Nrep +Pot +Case
                   +Inf +Pref+
     
§AA§ §AAA§ §igea§ §igeo§ §igeo2§ §igeu§ §igee§
§igejakik1§ §igejatokitek1§ §igeija1§ §igeaa§ §igetattet§
§felteo§ §eo§ §j§ §szorelol§ §tatt§ §aet§ §aen§ §oe2§ §ae2§
§sj§  §ess§
§AAmely§ §AAAmely§ §igeamely§ §igeomely§ §igeo2mely§ §igeumely§ §igeemely§
§igejakik1mely§ §igejatokitek1mely§ §igeija1mely§ §igeaamely§ §igetattetmely§
§felteomely§ §szorelolmely§

LEXICON Root
Verb ;
Prefkeresztul;
Prefkolcson;

LEXICON Prefkeresztul
+Pref+:keresztül   Verb;

LEXICON Prefkolcson
+Pref+:kölcsön   Verb;

LEXICON Verb
abál AddVerb;
abárol AddVerb;
abcúgol AddVerb;
ablakoz AddVerb;
abortál AddVerb;
alél AddVerbmely;


LEXICON AddVerb
+Verb:0     Rep;

LEXICON Rep
+Inf:^+cInf^ni  #;
+Rep:^+cRep^§felteo§g§AA§t  Imper;
                    Imper1;

LEXICON Imper
+Imper:^+cImp^t§AA§t  Nrep;
                      Nrep;
LEXICON Imper1
+Imper:^+cImp^§tatt§§AA§t  Nrep;
                      Nrep1;

LEXICON Nrep
+Rep:^+cNrep^g§AA§t  NImper;
                      NImper;

LEXICON Nrep1
+Rep:^+cNrep^§felteo§g§AA§t  NImper;
                      NImper1;

LEXICON NImper
+Imper:^+cImp^t§AA§t  Pot;
                      Pot;

LEXICON NImper1
+Imper:^+cImp^§tatt§§AA§t  Pot;
                      Pot1;

LEXICON Pot
+Pot:^+cPot^h§AAA§t  Case;
             Case;

LEXICON Pot1
+Pot:^+cPot^h§AAA§t  Case;
             Case; ! case1 if differs

LEXICON Case
+IndefSg1:^+cIndefSg1^§igeo§k    #;    ! ek/ok
+IndefSg2:^+cIndefSg2^§szorelol§ #;    ! esz, el/ol
+IndefSg3:^+cIndefSg3^           #;    !
+IndefPl1:^+cIndefPl1^§igeu§nk   #;    ! ünk/unk
+IndefPl2:^+cIndefPl2^t§igeo2§k  #;    ! tek/tok
+IndefPl3:^+cIndefPl3^n§igea§k   #;    ! nek/nak
+DefSg1:^+cDefSg1^§igeo§m        #;    ! em/om
+DefSg2:^+cDefSg2^§igee§d        #;    ! ed/od
+DefSg3:^+cDefSg3^§igeija1§       #;    ! i/sa
+DefPl1:^+cDefPl1^§j§§igeu§k      #;    ! jük/suk
+DefPl2:^+cDefPl2^§igejatokitek1§ #;    ! itek/sátok
+DefPl3:^+cDefPl3^§igejakik1§     #;    ! ik/sák
+ConjIndefSg1:^+cConjIndefSg1^§sj§§igea§k     #;
+ConjIndefSg2:^+cConjIndefSg2^§sj§§igeaa§l    #;
+ConjIndefSg2:^+cConjIndefSg2^§sj§           #;
+ConjIndefSg3:^+cConjIndefSg3^§sj§§igeo§n     #;
+ConjIndefPl1:^+cConjIndefPl1^§sj§§igeu§nk    #;
+ConjIndefPl2:^+cConjIndefPl2^§sj§§igea§t§igeo§k       #;
+ConjIndefPl3:^+cConjIndefPl3^§sj§§igea§n§igea§k      #;
+ConjDefSg1:^+cConjDefSg1^§sj§§igea§m         #;
+ConjDefSg2:^+cConjDefSg2^§sj§§igea§d         #;
+ConjDefSg2:^+cConjDefSg2^§sj§d              #;
+ConjDefSg3:^+cConjDefSg3^§sj§§igea§          #;
+ConjDefPl1:^+cConjDefPl1^§sj§§igeu§k         #;
+ConjDefPl2:^+cConjDefPl2^§sj§§igeaa§t§igeo§k     #;
+ConjDefPl3:^+cConjDefSg1^§sj§§igeaa§k            #;
+PastIndefSg1:^+cPIndefSg1^t§AA§m            #;    ! tem/tam
+PastIndefSg2:^+cPIndefSg2^t§igeaa§l         #;    ! tál/tél
+PastIndefSg3:^+cPIndefSg3^§igetattet§t      #;    ! t
+PastIndefPl1:^+cPIndefPl1^t§igeu§nk         #;    ! tünk/tunk
+PastIndefPl2:^+cPIndefPl2^t§igea§t§igeo2§k  #;    ! tetek/tatok
+PastIndefPl3:^+cPIndefPl3^t§igea§k          #;    ! tek/tak
+PastDefSg1:^+cPDefSg1^t§igea§m              #;    ! tem/tam
+PastDefSg2:^+cPDefSg2^t§igea§d              #;    ! tad/ted
+PastDefSg3:^+cPDefSg3^t§igea§               #;    ! ta/te
+PastDefPl1:^+cPDefPl1^t§igeu§k              #;    ! tuk/tük
+PastDefPl2:^+cPDefPl2^t§igeaa§t§igeo2§k     #;    ! tátok/tétek
+PastDefPl3:^+cPDefPl3^t§igeaa§k             #;    ! ták/ték
+CondIndefSg1:^+cCIndefSg1^nék               #;    ! nék
+CondIndefSg2:^+cCIndefSg2^n§igeaa§l         #;    ! nál/nél
+CondIndefSg3:^+cCIndefSg3^n§igea§           #;    ! na/ne
+CondIndefPl1:^+cCIndefPl1^n§igeaa§nk            #;    ! nánk/nénk
+CondIndefPl2:^+cCIndefPl2^n§igeaa§t§igeo§k      #;    ! nátok/nétek
+CondIndefPl3:^+cCIndefPl3^n§igeaa§n§igea§k      #;    ! nának/nének
+CondDefSg1:^+cCDefSg1^n§igeaa§m                 #;    ! nám/ném
+CondDefSg2:^+cCDefSg2^n§igeaa§d                 #;    ! nád/néd
+CondDefSg3:^+cCDefSg3^n§igeaa§                  #;    ! ná/né
+CondDefPl1:^+cCDefPl1^n§igeaa§nk                #;    ! nánk/nénk
+CondDefPl2:^+cCDefPl2^n§igeaa§t§igeo§k          #;    ! nátok/nétek
+CondDefPl3:^+cCDefPl3^n§igeaa§k                 #;    ! nák/nék


LEXICON AddVerbmely
+Verb:0     Repmely;

LEXICON Repmely
+Inf:^+cInf^ni  #;
+Rep:^+cRep^§felteomely§g§AAmely§t  Impermely;
                    Imper1mely;

LEXICON Impermely
+Imper:^+cImp^t§AAmely§t  Nrepmely;
                      Nrepmely;
LEXICON Imper1mely
+Imper:^+cImp^§tatt§§AAmely§t  Nrepmely;
                      Nrep1mely;

LEXICON Nrepmely
+Rep:^+cNrep^g§AAmely§t  NImpermely;
                      NImpermely;

LEXICON Nrep1mely
+Rep:^+cNrep^§felteomely§g§AAmely§t  NImpermely;
                      NImper1mely;

LEXICON NImpermely
+Imper:^+cImp^t§AAmely§t  Potmely;
                      Potmely;

LEXICON NImper1mely
+Imper:^+cImp^§tatt§§AAmely§t  Potmely;
                      Potmely;

LEXICON Potmely
+Pot:^+cPot^h§AAAmely§t  Casemely;
             Casemely;

LEXICON Casemely
+IndefSg1:^+cIndefSg1^§igeomely§k    #;    ! ek/ok
+IndefSg2:^+cIndefSg2^§szorelolmely§         #;    ! esz, el/ol
+IndefSg3:^+cIndefSg3^           #;    !
+IndefPl1:^+cIndefPl1^§igeumely§nk   #;    ! ünk/unk
+IndefPl2:^+cIndefPl2^t§igeo2mely§k  #;    ! tek/tok
+IndefPl3:^+cIndefPl3^n§igeamely§k   #;    ! nek/nak
+DefSg1:^+cDefSg1^§igeomely§m        #;    ! em/om
+DefSg2:^+cDefSg2^§igeemely§d        #;    ! ed/od
+DefSg3:^+cDefSg3^§igeija1mely§       #;    ! i/sa
+DefPl1:^+cDefPl1^§j§§igeumely§k       #;    ! jük/suk
+DefPl2:^+cDefPl2^§igejatokitek1mely§ #;    ! itek/sátok
+DefPl3:^+cDefPl3^§igejakik1mely§     #;    ! ik/sák
+ConjIndefSg1:^+cConjIndefSg1^§sj§§igeamely§k     #;
+ConjIndefSg2:^+cConjIndefSg2^§sj§§igeaamely§l    #;
+ConjIndefSg2:^+cConjIndefSg2^§sj§           #;
+ConjIndefSg3:^+cConjIndefSg3^§sj§§igeomely§n     #;
+ConjIndefPl1:^+cConjIndefPl1^§sj§§igeumely§nk    #;
+ConjIndefPl2:^+cConjIndefPl2^§sj§§igeamely§t§igeomely§k       #;
+ConjIndefPl3:^+cConjIndefPl3^§sj§§igeamely§n§igeamely§k      #;
+ConjDefSg1:^+cConjDefSg1^§sj§§igeamely§m         #;
+ConjDefSg2:^+cConjDefSg2^§sj§§igeamely§d         #;
+ConjDefSg2:^+cConjDefSg2^§sj§d              #;
+ConjDefSg3:^+cConjDefSg3^§sj§§igeamely§          #;
+ConjDefPl1:^+cConjDefPl1^§sj§§igeumely§k         #;
+ConjDefPl2:^+cConjDefPl2^§sj§§igeaamely§t§igeomely§k     #;
+ConjDefPl3:^+cConjDefSg1^§sj§§igeaamely§k            #;
+PastIndefSg1:^+cPIndefSg1^t§AAmely§m            #;    ! tem/tam
+PastIndefSg2:^+cPIndefSg2^t§igeaamely§l         #;    ! tál/tél
+PastIndefSg3:^+cPIndefSg3^§igetattetmely§t      #;    ! t
+PastIndefPl1:^+cPIndefPl1^t§igeumely§nk         #;    ! tünk/tunk
+PastIndefPl2:^+cPIndefPl2^t§igeamely§t§igeo2mely§k  #;    ! tetek/tatok
+PastIndefPl3:^+cPIndefPl3^t§igeamely§k          #;    ! tek/tak
+PastDefSg1:^+cPDefSg1^t§igeamely§m              #;    ! tem/tam
+PastDefSg2:^+cPDefSg2^t§igeamely§d              #;    ! tad/ted
+PastDefSg3:^+cPDefSg3^t§igeamely§               #;    ! ta/te
+PastDefPl1:^+cPDefPl1^t§igeumely§k              #;    ! tuk/tük
+PastDefPl2:^+cPDefPl2^t§igeaamely§t§igeo2mely§k     #;    ! tátok/tétek
+PastDefPl3:^+cPDefPl3^t§igeaamely§k             #;    ! ták/ték
+CondIndefSg1:^+cCIndefSg1^nék               #;    ! nék
+CondIndefSg2:^+cCIndefSg2^n§igeaamely§l         #;    ! nál/nél
+CondIndefSg3:^+cCIndefSg3^n§igeamely§           #;    ! na/ne
+CondIndefPl1:^+cCIndefPl1^n§igeaamely§nk            #;    ! nánk/nénk
+CondIndefPl2:^+cCIndefPl2^n§igeaamely§t§igeomely§k      #;    ! nátok/nétek
+CondIndefPl3:^+cCIndefPl3^n§igeaamely§n§igeamely§k      #;    ! nának/nének
+CondDefSg1:^+cCDefSg1^n§igeaamely§m                 #;    ! nám/ném
+CondDefSg2:^+cCDefSg2^n§igeaamely§d                 #;    ! nád/néd
+CondDefSg3:^+cCDefSg3^n§igeaamely§                  #;    ! ná/né
+CondDefPl1:^+cCDefPl1^n§igeaamely§nk                #;    ! nánk/nénk
+CondDefPl2:^+cCDefPl2^n§igeaamely§t§igeomely§k          #;    ! nátok/nétek
+CondDefPl3:^+cCDefPl3^n§igeaamely§k                 #;    ! nák/nék


LEXICON AddVerb
+Verb:0     Rep;

LEXICON Rep
+Inf:^+cInf^ni  #;
+Rep:^+cRep^§felteo§g§AA§t  Imper;
                    Imper1;

LEXICON Imper
+Imper:^+cImp^t§AA§t  Nrep;
                      Nrep;
LEXICON Imper1
+Imper:^+cImp^§tatt§§AA§t  Nrep;
                      Nrep1;

LEXICON Nrep
+Rep:^+cNrep^g§AA§t  NImper;
                      NImper;

LEXICON Nrep1
+Rep:^+cNrep^§felteo§g§AA§t  NImper;
                      NImper1;

LEXICON NImper
+Imper:^+cImp^t§AA§t  Pot;
                      Pot;

LEXICON NImper1
+Imper:^+cImp^§tatt§§AA§t  Pot;
                      Pot1;

LEXICON Pot
+Pot:^+cPot^h§AAA§t  Case;
             Case;

LEXICON Pot1
+Pot:^+cPot^h§AAA§t  Case;
             Case; ! case1 if differs

LEXICON Case
+IndefSg1:^+cIndefSg1^§igeo§k    #;    ! ek/ok
+IndefSg2:^+cIndefSg2^§szorelol§ #;    ! esz, el/ol
+IndefSg3:^+cIndefSg3^           #;    !
+IndefPl1:^+cIndefPl1^§igeu§nk   #;    ! ünk/unk
+IndefPl2:^+cIndefPl2^t§igeo2§k  #;    ! tek/tok
+IndefPl3:^+cIndefPl3^n§igea§k   #;    ! nek/nak
+DefSg1:^+cDefSg1^§igeo§m        #;    ! em/om
+DefSg2:^+cDefSg2^§igee§d        #;    ! ed/od
+DefSg3:^+cDefSg3^§igeija1§       #;    ! i/sa
+DefPl1:^+cDefPl1^§j§§igeu§k      #;    ! jük/suk
+DefPl2:^+cDefPl2^§igejatokitek1§ #;    ! itek/sátok
+DefPl3:^+cDefPl3^§igejakik1§     #;    ! ik/sák
+ConjIndefSg1:^+cConjIndefSg1^§sj§§igea§k     #;
+ConjIndefSg2:^+cConjIndefSg2^§sj§§igeaa§l    #;
+ConjIndefSg2:^+cConjIndefSg2^§sj§           #;
+ConjIndefSg3:^+cConjIndefSg3^§sj§§igeo§n     #;
+ConjIndefPl1:^+cConjIndefPl1^§sj§§igeu§nk    #;
+ConjIndefPl2:^+cConjIndefPl2^§sj§§igea§t§igeo§k       #;
+ConjIndefPl3:^+cConjIndefPl3^§sj§§igea§n§igea§k      #;
+ConjDefSg1:^+cConjDefSg1^§sj§§igea§m         #;
+ConjDefSg2:^+cConjDefSg2^§sj§§igea§d         #;
+ConjDefSg2:^+cConjDefSg2^§sj§d              #;
+ConjDefSg3:^+cConjDefSg3^§sj§§igea§          #;
+ConjDefPl1:^+cConjDefPl1^§sj§§igeu§k         #;
+ConjDefPl2:^+cConjDefPl2^§sj§§igeaa§t§igeo§k     #;
+ConjDefPl3:^+cConjDefSg1^§sj§§igeaa§k            #;
+PastIndefSg1:^+cPIndefSg1^t§AA§m            #;    ! tem/tam
+PastIndefSg2:^+cPIndefSg2^t§igeaa§l         #;    ! tál/tél
+PastIndefSg3:^+cPIndefSg3^§igetattet§t      #;    ! t
+PastIndefPl1:^+cPIndefPl1^t§igeu§nk         #;    ! tünk/tunk
+PastIndefPl2:^+cPIndefPl2^t§igea§t§igeo2§k  #;    ! tetek/tatok
+PastIndefPl3:^+cPIndefPl3^t§igea§k          #;    ! tek/tak
+PastDefSg1:^+cPDefSg1^t§igea§m              #;    ! tem/tam
+PastDefSg2:^+cPDefSg2^t§igea§d              #;    ! tad/ted
+PastDefSg3:^+cPDefSg3^t§igea§               #;    ! ta/te
+PastDefPl1:^+cPDefPl1^t§igeu§k              #;    ! tuk/tük
+PastDefPl2:^+cPDefPl2^t§igeaa§t§igeo2§k     #;    ! tátok/tétek
+PastDefPl3:^+cPDefPl3^t§igeaa§k             #;    ! ták/ték
+CondIndefSg1:^+cCIndefSg1^nék               #;    ! nék
+CondIndefSg2:^+cCIndefSg2^n§igeaa§l         #;    ! nál/nél
+CondIndefSg3:^+cCIndefSg3^n§igea§           #;    ! na/ne
+CondIndefPl1:^+cCIndefPl1^n§igeaa§nk            #;    ! nánk/nénk
+CondIndefPl2:^+cCIndefPl2^n§igeaa§t§igeo§k      #;    ! nátok/nétek
+CondIndefPl3:^+cCIndefPl3^n§igeaa§n§igea§k      #;    ! nának/nének
+CondDefSg1:^+cCDefSg1^n§igeaa§m                 #;    ! nám/ném
+CondDefSg2:^+cCDefSg2^n§igeaa§d                 #;    ! nád/néd
+CondDefSg3:^+cCDefSg3^n§igeaa§                  #;    ! ná/né
+CondDefPl1:^+cCDefPl1^n§igeaa§nk                #;    ! nánk/nénk
+CondDefPl2:^+cCDefPl2^n§igeaa§t§igeo§k          #;    ! nátok/nétek
+CondDefPl3:^+cCDefPl3^n§igeaa§k                 #;    ! nák/nék

A <..> közé zárt rendszeres kifejezés (regular expression) minden szót engedélyez, amely egy magyar szóhoz hasonlóan néz ki, azaz legalább egy magánhangzó van benne, és sehol nincs háromnál több magánhangzó illetve négynél több mássalhangzó egymás mellett benne. Ez azért szükséges, mert a magyar nyelv a tárgyak viszonyát ragozással fejezi ki, és tetszőleges, azaz a szótárban nem szereplő szavak ragozása is szükséges, például idegen városok folyók, személyek neve, stb....

foma fájl:[szerkesztés]

### enhu2.foma ###

# Vowels
define Vowel [ a | á | e | é | i | í | o |ó | u | ú | ü | ű | ö | ő | A | Á | E | É | I | Í | O |Ó | U | Ú | Ü | Ű | Ö | Ő ];
define ConsNogln [ b | c | d | f | h | j | k | m | p | q | r | s | v | w | x | y | z | B | C | D | E | F | H | J | K | L | M | P | Q | R | S | V | W | X | Y | Z ];
define Cons [ b | c | č | ć | d | f | g | h | j | k | l | m | n | p | q | r | s | t | v | w | x | y | z | B | C | D | E | F | G | H | J | K | L | M | N | P | Q | R | S | T | V | W | X | Y | Z ];
define Consnosz [ b | c | č | ć | d | f | g | h | j | k | l | m | n | p | q | r | t | v | w | x | y | B | C | D | E | F | G | H | J | K | L | M | N | P | Q | R | T | V | W | X | Y ];
define Consnoszgm [ b | c | č | ć | d | f | h | j | k | l | n | p | q | r | t | v | w | x | y | B | C | D | E | F | H | J | K | L | N | P | Q | R | T | V | W | X | Y ];
define Consgat [ d | g | n | r | s | t | v ];
define Consgat1 [ d | g | g y | k | n | p | r | s | t | t y | v ];
define Conssz [ s | z | s z ];
define Consjlnr [ j | l | n | r ];
define Constnelkul [ b | d | f | g | k | p | v | Cons t ];
define yNoCons [ ConsNogln y | Vowel y | s z t y ];
define yNoConstny [ Cons y | Vowel y ];
define Vowelwithy [ Vowel | yNoCons ];
define Vowelwithytny [ Vowel | yNoConstny ];
define Vowel1 [ a | e | í | o | ü | ö | A | E | Í | O | Ü | Ö ]; # w/o  á, é, i, ó, ő, ű, u, ú
define Vowel1exc [ á | é | i | ó | ő | ű | u | ú | Á | É | I | Ó | Ő | Ű | U | Ú ];
define Vowel1withy [ Vowel1 | yNoCons ];
define BackVowel [ a | á | o | ó | u | ú | A | Á | O | Ó | U | Ú ];
define FrontUnroundedVowel [ e | é | i | í | ü | ű | E | É | I | Í | Ü | Ű ];
define Front1UnroundedVowel [ e | é | i | í | E | É | I | Í  ];
define FrontRoundedVowel [ ö | ő | Ö | Ő ];
define Front1RoundedVowel [ ö | ő | ü | ű | Ö | Ő | Ü | Ű ];
define FrontVowel [ e | é | i | í | ü | ű | ö | ő | E | É | I | Í | Ü | Ű | Ö | Ő ];
define PlosivCons [ b | d | g | h | j | p | t | B | D | G | H | J | P | T ];
define NonPlosivCons [ c | j | l | r | s | v | z | C | J | L | R | S | V | Z ];
define OppNonPlosivCons [ b | d | f | g | h | k | m | n | p | q | t | w | x | y | B | D | F | G | H | K | M | N | P | Q | T | W | X | Y ];


define Filter1 ~[ $[ %+Rep \[%+Imper]* %+Rep ] |  $[ %+Imper \[%+Rep]* %+Imper ] ];
define HarmRuleAAA §AAA§ -> a // .#. \"^"* BackVowel \Vowel* "^" ?* _ ,,
                   §AAA§ -> e // .#. \"^"* FrontVowel \Vowel* "^" ?* _ ;

define HarmRuleAA §AA§ -> a // .#. \"^"* BackVowel \Vowel* "^" ?* _ ,,
                  §AA§ -> e // .#. \"^"* FrontVowel \Vowel* "^" ?* _ ;
 
define HarmRuleIgeo §igeo§ -> e // .#. \"^"* FrontUnroundedVowel \Vowel* "^" ?* _    ,,
                    §igeo§ -> ö // .#. \"^"* FrontRoundedVowel \Vowel* "^" ?* _    ,,
                    §igeo§ -> o // .#. \"^"* BackVowel \Vowel* "^" ?* _     ;
define HarmRuleIgeoue §igeoue§ -> e // .#. \"^"* Front1UnroundedVowel \Vowel* "^" ?* _    ,,
                    §igeoue§ -> ö // .#. \"^"* Front1RoundedVowel \Vowel* "^" ?* _    ,,
                    §igeoue§ -> o // .#. \"^"* BackVowel \Vowel* "^" ?* _     ;
define HarmRuleIgeou §igeou§ -> e // .#. \"^"* Front1UnroundedVowel \Vowel* "^" ?* _    ,,
                    §igeou§ -> ö // .#. \"^"* Front1RoundedVowel \Vowel* "^" ?* _    ,,
                    §igeou§ -> o // .#. \"^"* BackVowel \Vowel* "^" ?* _     ;
define HarmRuleIgeoe §igeoe§ -> e // .#. \"^"* FrontUnroundedVowel \Vowel* "^" ?* _    ,,
                    §igeoe§ -> e // .#. \"^"* FrontRoundedVowel \Vowel* "^" ?* _    ,,
                    §igeoe§ -> o // .#. \"^"* BackVowel \Vowel* "^" ?* _     ;
define HarmRuleIgeo2 §igeo2§ -> e // .#. \"^"* FrontUnroundedVowel \Vowel* "^" ?* _   ?*  ,,
                    §igeo2§ -> ö // .#. \"^"* FrontRoundedVowel \Vowel* "^" ?* _    ,,
                    §igeo2§ -> o // .#. \"^"* BackVowel \Vowel* "^" ?* _    ;
define HarmRuleIgeo3 §igeo3§ -> e // .#. \"^"* Front1UnroundedVowel \Vowel* "^" ?* _    ,,
                    §igeo3§ -> ö // .#. \"^"* Front1RoundedVowel \Vowel* "^" ?* _    ,,
                    §igeo3§ -> o // .#. \"^"* BackVowel \Vowel* "^" ?* _     ;

define HarmRuleIgeu §igeu§ -> u // .#. \"^"* BackVowel \Vowel* "^" ?* _ ,,
                    §igeu§ -> ü // .#. \"^"* FrontVowel \Vowel* "^" ?* _ ;

define HarmRuleIgea §igea§ -> e // .#. \"^"* FrontVowel \Vowel* "^" ?* _   ?*  ,,
                    §igea§ -> a // .#. \"^"* BackVowel \Vowel* "^" ?* _  ?*  ;

define HarmRuleIgeaa §igeaa§ -> é // .#. \"^"* FrontVowel \Vowel* "^" ?* _   ?*  ,,
                    §igeaa§ -> á // .#. \"^"* BackVowel \Vowel* "^" ?* _  ?*  ;

define HarmRuleIgee §igee§ -> e // .#. \"^"* FrontUnroundedVowel \Vowel* "^" ?* _   ,,
                    §igee§ -> ö // .#. \"^"* FrontRoundedVowel \Vowel* "^" ?* _  ,,
                    §igee§ -> o // .#. \"^"* BackVowel \Vowel* "^" ?* _   ;
define HarmRuleIgeija1 §igeija1§ -> i // .#. \"^"* FrontVowel \Vowel* "^" ?* _   ,,
                     §igeija1§ -> %$ a // .#. \"^"* BackVowel Cons* [ s z ] %^ _   .o.
                     §igeija1§ -> %$ a // .#. \"^"* BackVowel Cons* [ z s ] %^ _   .o.
                     §igeija1§ -> j a // .#. \"^"* BackVowel \Vowel*  "^" ?* [ Consnosz ] %^ _   .o.
                     §igeija1§ -> s a // .#. \"^"* BackVowel \Vowel*  "^" ?* s %^ _   .o.
                     §igeija1§ -> z a // .#. \"^"* BackVowel \Vowel*  "^" ?* z %^  _   .o.
                     §igeija1§ -> j a // .#. \"^"* BackVowel Cons* [ Consnosz ]+ %^ _   .o.
                     §igeija1§ -> a // .#. \"^"* BackVowel Cons* [ s s | z z ] %^ _   .o.
                     §igeija1§ -> s a // .#. \"^"* BackVowel Cons* s %^ _   .o.
                     §igeija1§ -> z a // .#. \"^"* BackVowel Cons* z %^ _   .o.
                      z -> s  || s _ %^ %$ .o.
                     %$ -> z  || s s %^ _ .o.
                     s -> z  || z _ %^ %$ .o.
                     %$ -> s  || z z %^ _ ;
define HarmRuleIgejatokitek1 §igejatokitek1§ -> i t e k // .#. \"^"* FrontVowel \Vowel* "^" ?* _  ,,
                     §igejatokitek1§ -> %$ á t o k // .#. \"^"* BackVowel  [ s z ] %^ _   .o.
                     §igejatokitek1§ -> %$ á t o k // .#. \"^"* BackVowel [ z s ]  %^  _   .o.
                     §igejatokitek1§ -> á t o k // .#. \"^"* BackVowel  \Vowel*  "^" ?* [ s s | z z ] %^ _   .o.
                     §igejatokitek1§ -> s á t o k // .#. \"^"* BackVowel  \Vowel*  "^" ?* s %^ _   .o.
                     §igejatokitek1§ -> z á t o k // .#. \"^"* BackVowel  \Vowel*  "^" ?* z %^  _   .o.
                     §igejatokitek1§ -> j á t o k // .#. \"^"* BackVowel  \Vowel* "^" ?* Consnosz+ %^ _   .o.
                     §igejatokitek1§ -> á t o k // .#. \"^"* BackVowel   Cons* [ s s | z z ] %^ _   .o.
                     §igejatokitek1§ -> s á t o k // .#. \"^"* BackVowel   Cons* s %^ _   .o.
                     §igejatokitek1§ -> z á t o k // .#. \"^"* BackVowel   Cons* z %^  _   .o.
                     §igejatokitek1§ -> j á t o k // .#. \"^"* BackVowel   Cons* Consnosz+ %^ _   .o.
                     z -> s  || s _ %^ %$ .o.
                     %$ -> z  || s s %^ _ .o.
                     s -> z  || z _ %^ %$ .o.
                     %$ -> s  || z z %^ _ ;
define HarmRuleIgejakik1 §igejakik1§ -> i k // .#. \"^"* FrontVowel \Vowel* "^" ?* _   ,,
                     §igejakik1§ -> %$ á k // .#. \"^"* BackVowel [ s z ] %^ _    .o.
                     §igejakik1§ -> %$ á k // .#. \"^"* BackVowel [ z s ] %^ _    .o.
                     §igejakik1§ -> s á k // .#. \"^"* BackVowel  \Vowel*  "^" ?* s %^ _    .o.
                     §igejakik1§ -> z á k // .#. \"^"* BackVowel  \Vowel*  "^" ?* z %^ _    .o.
                     §igejakik1§ -> j á k // .#. \"^"* BackVowel \Vowel*  "^" ?* [ Consnosz ]+ %^  _    .o.
                     §igejakik1§ -> á k // .#. \"^"* BackVowel Cons* [ s s | z z ] %^ _    .o.
                     §igejakik1§ -> s á k // .#. \"^"* BackVowel Cons* s %^ _    .o.
                     §igejakik1§ -> z á k // .#. \"^"* BackVowel Cons* z  %^ _    .o.
                     §igejakik1§ -> j á k // .#. \"^"* BackVowel Cons* [ Consnosz ]+ %^  _    .o.
                     z -> s  || s _ %^ %$ .o.
                     %$ -> z  || s s %^ _ .o.
                     s -> z  || z _ %^ %$ .o.
                     %$ -> s  || z z %^ _ ;
define HarmRuleIgetem §t1§ -> i k // .#. \"^"* FrontVowel \Vowel* "^" ?* _   ,,
                     §t1§ -> s á k // .#. \"^"* BackVowel  s  "^" ?* _    ,,
                     §t1§ -> j á k // .#. \"^"* BackVowel  \s* "^" ?* _    ;
#bocsát, lát, fut
define HarmRulesj    §sj§ -> 0 // d %^ _ d .o.
                     §sj§ -> s // [ ű | í | [ Cons %^ ] | Cons ] t %^ _ .o.
                     §sj§ -> s // [ Vowel s ] %^ _ .o.
                     §sj§ -> %! // [ \ű & \í & \[ Cons %^ ] & \Cons ] t %^ _  Cons  .o.
                     §sj§ -> %$ // [ \ű & \í & \[ Cons %^ ] & \Cons ] t %^ _ [ 0 | Vowel ] .o.
                     §sj§ -> 0 // [ \s & \d ] z %^ _ d .o.
                     §sj§ -> z // [ \s & \d ] z %^ _ \d* .o.
                     §sj§ -> %( // s z %^ _ .o.
                     §sj§ -> %) // d z %^ _ .o.
                     §sj§ -> j  // \t %^ _ .o.
                     t %^ %$ -> s s %^ .o.
                     t %^ %! ->  s %^ .o.
                     s z %^ %( -> s s z .o.
                     d z %^ %) -> d d z ;
define HarmRulesj1   §sj1§ -> %( // [ s z t ] %^ _ Cons .o.
                     §sj1§ -> %$ // [ s z t ] %^ _ [ \Cons | 0 ] .o.
                     §sj1§ -> j  // \[ s z t ] %^ _ .o.
                     s z t %^ %$ -> s s z %^ .o.
                     s z t %^ %( -> s z %^ ;
define HarmRulesj2   §sj2§ -> s // [ Cons t ] %^ _ .o.
                     §sj2§ -> j  // \[ Cons t ] %^ _ ;
#tát
define HarmRulesj3    §sj3§ -> 0 // d %^ _ d .o.
                     §sj3§ -> s // [ á | ű | í | [ Cons %^ ] | Cons ] t %^ _ .o.
                     §sj3§ -> %! // [ \á & \ű & \í & \[ Cons %^ ] & \Cons ] t %^ _  Cons  .o.
                     §sj3§ -> %$ // [ \á & \ű & \í & \[ Cons %^ ] & \Cons ] t %^ _ [ 0 | Vowel ] .o.
                     §sj3§ -> 0 // \s z %^ _ d .o.
                     §sj3§ -> z // \s z %^ _ \d* .o.
                     §sj3§ -> %( // s z %^ _ .o.
                     §sj3§ -> j  // \t %^ _ .o.
                     t %^ %$ -> s s %^ .o.
                     t %^ %! ->  s %^ .o.
                     s z %^ %( -> s s z ;
#fest
define HarmRulesj4    §sj4§ -> 0 // d %^ _ d .o.
                     §sj4§ -> %- // [ ű | í | [ Cons %^ ] | Cons ] t %^ _ d .o.
                     §sj4§ -> %+ // [ ű | í | [ Cons %^ ] | Cons ] t %^ _ [ \d |
0 ].o.
                     §sj4§ -> %! // [ \ű & \í & \[ Cons %^ ] & \Cons ] t %^ _
Cons  .o.
                     §sj4§ -> %$ // [ \ű & \í & \[ Cons %^ ] & \Cons ] t %^ _ [
0 | Vowel ] .o.
                     §sj4§ -> 0 // \s z %^ _ d .o.
                     §sj4§ -> z // \s z %^ _ \d* .o.
                     §sj4§ -> %( // s z %^ _ .o.
                     §sj4§ -> j  // \t %^ _ .o.
                     t %^ %$ -> s s %^ .o.
                     t %^ %+ ->  s %^ .o.
                     t %^ %- ->  0 %^ .o.
                     t %^ %! ->  s %^ .o.
                     s z %^ %( -> s s z ;
define HarmRuleess   §ess§ -> s //  [ t | s ] %^ _  .o.
                     §ess§ -> 0 //  [ \t & \s ] %^ _  ;
# j,l,n,r után t, többi után ett, ott, ött
define HarmRuleIgetattet §igetattet§ ->  0 // .#. \"^"* ?* Vowel [ n y ] "^" _ .o.
                     §igetattet§ ->  e t // .#. \"^"* Front1UnroundedVowel \Vowel* "^" ?* \Consjlnr %^ _   ,,
                     §igetattet§ ->  e t // .#. \"^"* Front1UnroundedVowel \Vowel* \Consjlnr "^" _   ,,
                     §igetattet§ ->  ö t // .#. \"^"* Front1RoundedVowel \Vowel* "^" ?* \Consjlnr %^ _   ,,
                     §igetattet§ ->  ö t // .#. \"^"* Front1RoundedVowel \Vowel* \Consjlnr "^" _   ,,
                     §igetattet§ ->  o t // .#. \"^"* BackVowel \Vowel* "^" ?* \Consjlnr %^ _   ,,
                     §igetattet§ ->  o t // .#. \"^"* BackVowel \Vowel* \Consjlnr "^" _   ,,
                     §igetattet§ ->  0 // .#. \"^"* ?* Consjlnr "^" _  ,,
                     §igetattet§ ->  0 // .#. \"^"* ?* Vowel "^" _  ;

define HarmRuleelol §igeelol§ -> o // .#. \"^"* BackVowel \Vowel* "^" ?* _ ,,
                  §igeelol§ -> e // .#. \"^"* FrontVowel \Vowel* "^" ?* _ ;
define HarmRuleszelol §szelol§ -> o l // .#. \"^"* BackVowel \Vowel* [ s | z ] "^"  _ ,,
                  §szelol§ -> e l // .#. \"^"* FrontVowel \Vowel* [ s | z ] "^" _ ,,
                  §szelol§ -> s z // .#. \"^"* "^" [ \"^"* "^"]* _ ;
define HarmRuleszelol2 §szelol2§ -> o l // .#. \"^"* BackVowel \Vowel* [ s | z ] "^"  _ ,,
                  §szelol2§ -> e l // .#. \"^"* FrontVowel \Vowel* [ s | z ] "^" _ ;
define HarmRuleae §ae§ -> a // .#. \"^"* BackVowel \Vowel*  "^" ?*  _ ,,
                  §ae§ -> e // .#. \"^"* FrontVowel \Vowel* "^" ?* _ ;
define HarmRuleeo §eo§ -> o // .#. \"^"* BackVowel \Vowel*  "^"  ?* _ ,,
                  §eo§ -> e // .#. \"^"* FrontVowel \Vowel* "^" ?* _ ;
define HarmRulefelteo §felteo§ -> o // .#. \"^"* [ á | ó | ú ] \Vowel* Consgat+ "^"  ?* _ ,,
                  §felteo§ -> e // .#. \"^"*  [ é | í ] \Vowel* Consgat+  "^" ?* _ ,,
                 §felteo§ -> ö // .#. \"^"*  [ ő | ű ] \Vowel* Consgat+ "^" ?* _ .o.
                 §felteo§ -> 0 // .#. \"^"* Vowel \Vowel* Consgat* "^" ?* _ ;
define HarmRulefelteo1 §felteo1§ -> o // .#. \"^"* [ a | á | o | ó | u | ú ] \Vowel* Consgat1+  "^"  ?* _ ,,
                  §felteo1§ -> e // .#. \"^"* [ e | é | i | í ] \Vowel* Consgat1+  "^" ?* _ ,,
                 §felteo1§ -> ö // .#. \"^"* [ ö | ő | ü | ű ] \Vowel* Consgat1+  "^" ?* _ .o.
                 §felteo1§ -> 0 // .#. \"^"* Vowel \Vowel* Consgat* "^" ?* _ ;
define HarmRulefelteo2 §felteo2§ -> o // .#. \"^"* [ á | ó | ú ] \Vowel* Consgat+  "^"  ?* _ ,,
                  §felteo2§ -> e // .#. \"^"* [ é ] \Vowel* Consgat+  "^" ?* _ ,,
                 §felteo2§ -> ö // .#. \"^"* [ ő | ű ] \Vowel* Consgat+  "^" ?* _ .o.
                 §felteo2§ -> 0 // .#. \"^"* Vowel \Vowel* Consgat* "^" ?* _ ;
define HarmRuleaen   §aen§ -> a // .#. \"^"* BackVowel \Vowel*  "^" ?*  _ ,,
                  §aen§ -> e // .#. \"^"* FrontVowel \Vowel* "^" ?* _ ;
define HarmRuleaet   §aet§ -> a // .#. \"^"* BackVowel \Vowel*  "^" ?*  _ ,,
                  §aet§ -> e // .#. \"^"* FrontVowel \Vowel* "^" ?* _ ;
define HarmRuleoe2   §oe2§ -> o // .#. \"^"* BackVowel \Vowel*  "^" ?*  _ ,,
                  §oe2§ -> e // .#. \"^"* FrontVowel \Vowel* "^" ?* _ ;
define HarmRuleae2   §ae2§ -> a // .#. \"^"* BackVowel \Vowel*  "^" ?*  _ ,,
                  §ae2§ -> e // .#. \"^"* FrontVowel \Vowel* "^" ?* _ ;
define HarmRuleAAAmely §AAAmely§ -> a // .#. \"^"* BackVowel \Vowel* "^" ?* _ ,,
                   §AAAmely§ -> a // .#. \"^"* FrontVowel \Vowel* "^" ?* _ ;

define HarmRuleAAmely §AAmely§ -> a // .#. \"^"* BackVowel \Vowel* "^" ?* _ ,,
                  §AAmely§ -> a // .#. \"^"* FrontVowel \Vowel* "^" ?* _ ;
 
define HarmRuleIgeomely §igeomely§ -> o // .#. \"^"* FrontUnroundedVowel \Vowel* "^" ?* _    ,,
                    §igeomely§ -> o // .#. \"^"* FrontRoundedVowel \Vowel* "^" ?* _    ,,
                    §igeomely§ -> o // .#. \"^"* BackVowel \Vowel* "^" ?* _     ;
define HarmRuleIgeo2mely §igeo2mely§ -> o // .#. \"^"* FrontUnroundedVowel \Vowel* "^" ?* _   ?*  ,,
                    §igeo2mely§ -> o // .#. \"^"* FrontRoundedVowel \Vowel* "^" ?* _    ,,
                    §igeo2mely§ -> o // .#. \"^"* BackVowel \Vowel* "^" ?* _    ;

define HarmRuleIgeumely §igeumely§ -> u // .#. \"^"* BackVowel \Vowel* "^" ?* _ ,,
                    §igeumely§ -> u // .#. \"^"* FrontVowel \Vowel* "^" ?* _ ;

define HarmRuleIgeamely §igeamely§ -> a // .#. \"^"* FrontVowel \Vowel* "^" ?* _   ?*  ,,
                    §igeamely§ -> a // .#. \"^"* BackVowel \Vowel* "^" ?* _  ?*  ;

define HarmRuleIgeaamely §igeaamely§ -> á // .#. \"^"* FrontVowel \Vowel* "^" ?* _   ?*  ,,
                    §igeaamely§ -> á // .#. \"^"* BackVowel \Vowel* "^" ?* _  ?*  ;

define HarmRuleIgeemely §igeemely§ -> o // .#. \"^"* FrontUnroundedVowel \Vowel* "^" ?* _   ,,
                    §igeemely§ -> o // .#. \"^"* FrontRoundedVowel \Vowel* "^" ?* _  ,,
                    §igeemely§ -> o // .#. \"^"* BackVowel \Vowel* "^" ?* _   ;
define HarmRuleIgeija1mely  §igeija1mely§ -> j a // Vowel Consnosz*  "^" _ .o.
                     §igeija1mely§ -> s a // Vowel s*  "^" _   .o.
                     §igeija1mely§ -> z a // Vowel z*  "^" _   ;
define HarmRuleIgejatokitek1mely #§igejatokitek1mely§ -> i t e k // .#. \"^"* FrontVowel \Vowel* "^" ?* _  ,,
                     §igejatokitek1mely§ -> %$ á t o k // .#. \"^"* Vowel  [ s z ] %^ _   .o.
                     §igejatokitek1mely§ -> %$ á t o k // .#. \"^"* Vowel [ z s ]  %^  _   .o.
                     §igejatokitek1mely§ -> s á t o k // .#. \"^"* Vowel  \Vowel*  "^" ?* s+ %^ _   .o.
                     §igejatokitek1mely§ -> á t o k // .#. \"^"* Vowel  \Vowel*  "^" ?* z z %^  _   .o.
                     §igejatokitek1mely§ -> z á t o k // .#. \"^"* Vowel  \Vowel*  "^" ?* z %^  _   .o.
                     §igejatokitek1mely§ -> j á t o k // .#. \"^"* Vowel  \Vowel* "^" ?* [ Consnosz+ | Vowel ] %^ _   .o.
                     §igejatokitek1mely§ -> s á t o k // .#. \"^"* Vowel   Cons* s+ %^ _   .o.
                     §igejatokitek1mely§ ->  á t o k // .#. \"^"* Vowel   Cons* z z %^  _   .o.
                     §igejatokitek1mely§ -> z á t o k // .#. \"^"* Vowel   Cons* z %^  _   .o.
                     §igejatokitek1mely§ -> j á t o k // .#. \"^"* Vowel   Cons* [ Consnosz+ | Vowel ] %^ _   .o.
                     z -> s  || s _ %^ %$ .o.
                     %$ -> z  || s s %^ _ .o.
                     s -> z  || z _ %^ %$ .o.
                     %$ -> s  || z z %^ _ ;

define HarmRuleIgejakik1mely #§igejakik1mely§ -> i k // .#. \"^"* FrontVowel \Vowel* "^" ?* _   ,,
                     §igejakik1mely§ -> %$ á k // .#. \"^"* Vowel [ s z ] %^ _    .o.
                     §igejakik1mely§ -> %$ á k // .#. \"^"* Vowel [ z s ] %^ _    .o.
                     §igejakik1mely§ -> s á k // .#. \"^"* Vowel  \Vowel*  "^" ?* s %^ _    .o.
                     §igejakik1mely§ -> z á k // .#. \"^"* Vowel  \Vowel*  "^" ?* z %^ _    .o.
                     §igejakik1mely§ -> j á k // .#. \"^"* Vowel \Vowel*  "^" ?* [ Consnosz | Vowel ]+ %^  _    .o.
                     §igejakik1mely§ -> s á k // .#. \"^"* Vowel Cons* s+ %^ _    .o.
                     §igejakik1mely§ -> á k // .#. \"^"* Vowel Cons* z z  %^ _    .o.
                     §igejakik1mely§ -> z á k // .#. \"^"* Vowel Cons* z  %^ _    .o.
                     §igejakik1mely§ -> j á k // .#. \"^"* Vowel Cons* [ Consnosz  | Vowel ]+ %^  _    .o.
                     z -> s  || s _ %^ %$ .o.
                     %$ -> z  || s s %^ _ .o.
                     s -> z  || z _ %^ %$ .o.
                     %$ -> s  || z z %^ _ ;

define HarmRuleIgetemmely #§t1mely§ -> i k // .#. \"^"* FrontVowel \Vowel* "^" ?* _   ,,
                     §t1mely§ -> s á k // .#. \"^"* Vowel  s  "^" ?* _    ,,
                     §t1mely§ -> j á k // .#. \"^"* Vowel  \s* "^" ?* _    ;
define HarmRuleoe2mely   §oe2mely§ -> o // .#. \"^"* BackVowel \Vowel*  "^" ?*  _ ,,
                  §oe2mely§ -> o // .#. \"^"* FrontVowel \Vowel* "^" ?* _ ;
define HarmRuleae2mely   §ae2mely§ -> a // .#. \"^"* BackVowel \Vowel*  "^" ?*  _ ,,
                  §ae2mely§ -> a // .#. \"^"* FrontVowel \Vowel* "^" ?* _ ;

# j,l,n,r után t, többi után ett, ott, ött
define HarmRuleIgetattetmely §igetattetmely§ ->  o t // .#. \"^"* Front1UnroundedVowel \Vowel* "^" ?* \Consjlnr %^ _   ,,
                     §igetattetmely§ ->  o t // .#. \"^"* Front1UnroundedVowel \Vowel* \Consjlnr "^" _   ,,
                     §igetattetmely§ ->  o t // .#. \"^"* Front1RoundedVowel \Vowel* "^" ?* \Consjlnr %^ _   ,,
                     §igetattetmely§ ->  o t // .#. \"^"* Front1RoundedVowel \Vowel* \Consjlnr "^" _   ,,
                     §igetattetmely§ ->  o t // .#. \"^"* BackVowel \Vowel* "^" ?* \Consjlnr %^ _   ,,
                     §igetattetmely§ ->  o t // .#. \"^"* BackVowel \Vowel* \Consjlnr "^" _   ,,
                     §igetattetmely§ ->  0 // .#. \"^"* ?* Consjlnr "^" _  ;

define HarmRuleIgetattet1mely §igetattet1mely§ ->  o t // .#. \"^"* FrontVowel \Vowel* z "^"  _   ,,
                     §igetattet1mely§ ->  o t // .#. \"^"* BackVowel \Vowel* z "^"  _    ,,
                     §igetattet1mely§ -> 0 // .#. \"^"* Vowel  \Vowel* "^" ?*   _    ;
define HarmRuleIgetattet2mely §igetattet2mely§ ->  o t // .#. \"^"* FrontVowel \Vowel* "^" ?*  "^" _   ,,
                     §igetattet2mely§ ->  o t // .#. \"^"* BackVowel \Vowel*  "^" ?* t "^" _    ,,
                     §igetattet2mely§ ->  o t // .#. \"^"* FrontVowel \Vowel* [ s | z | g  | m ] "^" _   ,,
                     §igetattet2mely§ ->  o t // .#. \"^"* BackVowel \Vowel* [ s | z | g  | m ] "^" _    ,,
                     §igetattet2mely§ -> t o t // .#. \"^"* FrontVowel \Vowel* "^" ?* \t "^" _   ,,
                     §igetattet2mely§ -> t o t // .#. \"^"* BackVowel  \Vowel*  "^" ?* \t "^" _    ,, 
                     §igetattet2mely§ -> 0 // .#. \"^"* Vowel  \Vowel* "^" ?* \t "^" _   .o.
                     §igetattet2mely§ -> 0 // .#. \"^"* Vowel  Consnoszgm* "^"   _    ;
define HarmRuleelolmely §igeelolmely§ -> o // .#. \"^"* BackVowel \Vowel* "^" ?* _ ,,
                  §igeelolmely§ -> o // .#. \"^"* FrontVowel \Vowel* "^" ?* _ ;
define HarmRuleszelolmely §szelolmely§ -> o l // .#. \"^"* BackVowel \Vowel* [ s | z ] "^"  _ ,,
                  §szelolmely§ -> o l // .#. \"^"* FrontVowel \Vowel* [ s | z ] "^" _ ,,
                  §szelolmely§ -> s z // .#. \"^"* "^" [ \"^"* "^"]* _ ;
define HarmRuleszelol2mely §szelol2mely§ -> o l // .#. \"^"* BackVowel \Vowel* [ s | z ] "^"  _ ,,
                  §szelol2mely§ -> o l // .#. \"^"* FrontVowel \Vowel* [ s | z ] "^" _ ;
define HarmRuleaemely §aemely§ -> a // .#. \"^"* BackVowel \Vowel* "^" ?*  _ ,,
                  §aemely§ -> a // .#. \"^"* FrontVowel \Vowel* "^" ?* _ ;
define HarmRuleeomely §eomely§ -> o // .#. \"^"* BackVowel \Vowel* "^" ?*  _ ,,
                  §eomely§ -> o // .#. \"^"* FrontVowel \Vowel* "^" ?* _ ;
define HarmRulefelteomely §felteomely§ -> o // .#. \"^"* [ á | ó | ú ] \Vowel* Consgat+  "^"  ?* _ ,,
                  §felteomely§ -> o // .#. \"^"* [ é | í ] \Vowel* Consgat+  "^" ?* _ ,,
                 §felteomely§ -> o // .#. \"^"* [ ő | ű ] \Vowel* Consgat+  "^" ?* _ .o.
                 §felteomely§ -> 0 // .#. \"^"* Vowel \Vowel* Consgat+ "^" ?* _ ,,
                §felteomely§ -> 0 // .#. \"^"* Vowel \Vowel* \Consgat* "^" ?* _ ;
define HarmRulefelteo1mely §felteo1mely§ -> o // .#. \"^"* [ a | á | o | ó | u | ú ] \Vowel* Consgat1+  "^"  ?* _ ,,
                  §felteo1mely§ -> o // .#. \"^"* [ e | é | i | í ] \Vowel* Consgat1+  "^" ?* _ ,,
                 §felteo1mely§ -> o // .#. \"^"* [ ö | ő | ü | ű ] \Vowel* Consgat1+  "^" ?* _ .o.
                 §felteo1mely§ -> 0 // .#. \"^"* Vowel \Vowel* Consgat* "^" ?* _ ;
define HarmRulefelteo2mely §felteo2mely§ -> o // .#. \"^"* [ á | ó | ú ] \Vowel* Consgat+  "^"  ?* _ ,,
                  §felteo2mely§ -> o // .#. \"^"* [ é ] \Vowel* Consgat+  "^" ?* _ ,,
                 §felteo2mely§ -> o // .#. \"^"* [ ő | ű ] \Vowel* Consgat+  "^" ?* _ .o.
                 §felteo2mely§ -> 0 // .#. \"^"* Vowel \Vowel* Consgat+ "^" ?* _ ,,
                §felteo2mely§ -> 0 // .#. \"^"* Vowel \Vowel* \Consgat* "^" ?* _ ;


define HarmRulej §j§-> %$ // .#. \"^"* s z "^" _ .o.
                 §j§-> %$ // .#. \"^"* z s "^" _ .o.
                 §j§ -> 0 // .#. \"^"* z z "^"  _ .o.
                 §j§ -> 0 // .#. \"^"* s s "^"  _ .o.
                 §j§ -> z // .#. \"^"* \s z "^"  _ .o.
                 §j§ -> s // .#. \"^"* \z s "^"  _ .o.
                 §j§ -> j // .#. \"^"* [ Consnosz | Vowel ] "^" _ .o.
                 §j§ -> z // .#. ?* \s z "^"  _ .o.
                 §j§ -> s // .#. ?* \z s "^"  _ .o.
                 §j§ -> j // .#. ?* [ Consnosz | Vowel ] "^" _ .o.
                 z -> s  || s _ %^ %$ .o.
                 %$ -> z  || s s %^ _ .o.
                 s -> z  || z _ %^ %$ .o.
                 %$ -> s  || z z %^ _ ;

define HarmRuleg §g§-> 0 // .#. \"^"* [ g g ] "^" _ .o.
                 §g§-> g //  ?*  _ ;

define HarmRuleszorelol §szorelol§ -> s z //  Vowel %^* Consnosz %^ _ ,,
                        §szorelol§ -> s z //  Vowel %^ _ ,,
                        §szorelol§ -> s z //  Vowel %^* [ n y | g y | t y | d d  ] %^ _ .o.
                        §szorelol§ -> a s z //  BackVowel %^* Cons+ %^* Consnosz %^ _ ,,
                        §szorelol§ -> e s z //  FrontVowel %^* Cons+ %^* Consnosz %^ _ ,,
                        §szorelol§ -> e l //  .#. \"^"* Front1UnroundedVowel \Vowel* Conssz+ %^  _ ,,
                        §szorelol§ -> ö l // .#. \"^"* Front1RoundedVowel \Vowel* Conssz+ %^ _ ,,
                        §szorelol§ -> o l // .#. \"^"* BackVowel \Vowel* Conssz+ %^ _ ;
#define HarmRuleszorelolmely §szorelolmely§ -> s z // .#. ?* %^ _ ;

define HarmRuleszorelolmely §szorelolmely§ -> s z // .#. ?* [ Consnosz | Vowel ] %^ _ ,,
                        §szorelolmely§ -> o l // .#. \"^"* Conssz+ %^ _ ;
define Constnelkul1 [ b | d | f | g | k | p | v ];
define HarmRuletatt §tatt§ -> 0 // .#. ?* [ Constnelkul1 ] %^ _ .o.
                    §tatt§ -> t // .#. ?* \[ Constnelkul1 ] %^ _ ;
 
# Cleanup: remove morpheme boundaries
define Cleanup      "^"        -> 0;
define CleanupEndings  "^" "+" {cRep}  -> 0 ,,
                       "^" "+" {cImp}  -> 0 ,,
                       "^" "+" {cInf}  -> 0 ,,
                       "^" "+" {cNrep}  -> 0 ,,
                       "^" "+" {cPot}  -> 0 ,,
                       "^" "+" {cIndefSg1}  -> 0 ,,
                       "^" "+" {cIndefSg2}  -> 0 ,,
                       "^" "+" {cIndefSg3}  -> 0 ,,
                       "^" "+" {cIndefPl1}  -> 0 ,,
                       "^" "+" {cIndefPl2}  -> 0 ,,
                       "^" "+" {cIndefPl3}  -> 0 ,,
                       "^" "+" {cDefSg1}  -> 0 ,,
                       "^" "+" {cDefSg2}  -> 0 ,,
                       "^" "+" {cDefSg3}  -> 0 ,,
                       "^" "+" {cDefPl1}  -> 0 ,,
                       "^" "+" {cDefPl2}  -> 0 ,,
                       "^" "+" {cDefPl3}  -> 0 ,,
                       "^" "+" {cPIndefSg1}  -> 0 ,,
                       "^" "+" {cPIndefSg2}  -> 0 ,,
                       "^" "+" {cPIndefSg3}  -> 0 ,,
                       "^" "+" {cPIndefPl1}  -> 0 ,,
                       "^" "+" {cPIndefPl2}  -> 0 ,,
                       "^" "+" {cPIndefPl3}  -> 0 ,,
                       "^" "+" {cPDefSg1}  -> 0 ,,
                       "^" "+" {cPDefSg2}  -> 0 ,,
                       "^" "+" {cPDefSg3}  -> 0 ,,
                       "^" "+" {cPDefPl1}  -> 0 ,,
                       "^" "+" {cPDefPl2}  -> 0 ,,
                       "^" "+" {cPDefPl3}  -> 0 ,,
                       "^" "+" {cCIndefSg1}  -> 0 ,,
                       "^" "+" {cCIndefSg2}  -> 0 ,,
                       "^" "+" {cCIndefSg3}  -> 0 ,,
                       "^" "+" {cCIndefPl1}  -> 0 ,,
                       "^" "+" {cCIndefPl2}  -> 0 ,,
                       "^" "+" {cCIndefPl3}  -> 0 ,,
                       "^" "+" {cCDefSg1}  -> 0 ,,
                       "^" "+" {cCDefSg2}  -> 0 ,,
                       "^" "+" {cCDefSg3}  -> 0 ,,
                       "^" "+" {cCDefPl1}  -> 0 ,,
                       "^" "+" {cCDefPl2}  -> 0 ,,
                       "^" "+" {cCDefPl3}  -> 0 ,,
                       "^" "+" {cConjIndefSg1}  -> 0 ,,
                       "^" "+" {cConjIndefSg2}  -> 0 ,,
                       "^" "+" {cConjIndefSg3}  -> 0 ,,
                       "^" "+" {cConjIndefPl1}  -> 0 ,,
                       "^" "+" {cConjIndefPl2}  -> 0 ,,
                       "^" "+" {cConjIndefPl3}  -> 0 ,,
                       "^" "+" {cConjDefSg1}  -> 0 ,,
                       "^" "+" {cConjDefSg2}  -> 0 ,,
                       "^" "+" {cConjDefSg3}  -> 0 ,,
                       "^" "+" {cConjDefPl1}  -> 0 ,,
                       "^" "+" {cConjDefPl2}  -> 0 ,,
                       "^" "+" {cConjDefPl3}  -> 0 ;
                     
echo ">>> read in enhuige <<<"
read lexc /home/en/program/foma/tktest/lexc/verb/enhuige.lexc
define Lexicon

define Grammar  Filter1               .o.
                Lexicon               .o.               
                CleanupEndings        .o.
                HarmRuleAAA           .o.
                HarmRuleAA            .o.               
                HarmRuleIgeu          .o.
                HarmRuleIgea          .o.
                HarmRuleIgee          .o.
                HarmRuleIgeo          .o. 
                HarmRuleIgeou         .o.
                HarmRuleIgeoe         .o.
                HarmRuleIgeo2         .o.
                HarmRuleIgeaa         .o.
                HarmRuleIgeija1        .o.
                HarmRuleIgejatokitek1  .o.
                HarmRuleIgejakik1      .o.
                HarmRuleIgetattet     .o.
                HarmRuleeo            .o.
                HarmRulefelteo        .o.
                HarmRulej             .o.
                HarmRuletatt          .o.
                HarmRuleszorelol      .o.
                HarmRuleaen           .o.
                HarmRuleaet           .o.
                HarmRuleoe2           .o.
                HarmRuleae2           .o.
                HarmRulesj            .o.
                HarmRulesj1           .o.
                HarmRuleess           .o.
                HarmRuleAAAmely           .o.
                HarmRuleAAmely            .o.               
                HarmRuleIgeumely          .o.
                HarmRuleIgeamely          .o.
                HarmRuleIgeemely          .o.
                HarmRuleIgeomely          .o. 
                HarmRuleIgeo2mely         .o.
                HarmRuleIgeaamely         .o.
                HarmRuleIgeija1mely        .o.
                HarmRuleIgejatokitek1mely  .o.
                HarmRuleIgejakik1mely      .o.
                HarmRuleIgetattetmely     .o.
                HarmRuleeomely            .o.
                HarmRulefelteomely        .o.
                HarmRuleszorelolmely      .o.
                Cleanup;        

regex Grammar;

Több fájl (lexc/foma pár) összekapcsolása[szerkesztés]

Ha több fájlt akarunk összekapcsolni, akkor az egyes foma fájlok végén írjuk be:

read regex Grammar2;
save stack filename.fst

Ez kiirja a transzduktort egy fájlba.

A transzduktor fájlok összefűzése az osszefuz.foma fájlban történik:

read regex @"huna1.fst" | @"huna2.fst" ;


Tesztelés:[szerkesztés]

foma -l osszefuz.foma

>lower-words
szó1
..
szón
>up
>szó1ragokkal
szó1+N+...
>szó2ragokkal
szó2+N+...
>ctrl-D
>down
>szó2+N+PL+Gen+...
szó2ragokkal
>szó1+N+PL+Gen+...
szó1ragokkal
> Ctrl-d