„Magyar igeragozás fomával” változatai közötti eltérés

Innen: Programozás Wiki
Ugrás a navigációhozUgrás a kereséshez
336. sor: 336. sor:
  
 
# Vowels
 
# Vowels
define Vowel [ a | á | e | é | i | í | o |ó | u | ú | ü | ű | ö | ő ];
+
define Vowel [ a | á | e | é | i | í | o |ó | u | ú | ü | ű | ö | ő | A | Á | E | É | I | Í | O |Ó | U | Ú | Ü | Ű | Ö | Ő ];
define BackVowel [ a | á | 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 FrontUnroundedVowel [ e | é | i | í | ü | ű ];
+
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 Front1UnroundedVowel [ e | é | i | í ];
+
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 FrontRoundedVowel [ ö | ő ];
+
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 Front1RoundedVowel [ ö | ő | ü | ű ];
+
define Consgat [ d | g | n | r | s | t | v ];
define FrontVowel [ e | é | i | í | ü | ű | ö | ő ];
+
define Consgat1 [ d | g | g y | k | n | p | r | s | t | t y | v ];
define PlosivCons [ b | d | g | h | p | t ];
+
define Conssz [ s | z | s z ];
define NonPlosivCons [ c | j | l | r | s | v | z ];
+
define Consjlnr [ j | l | n | r ];
define OppNonPlosivCons [ b | d | f | g | h | k | m | n | p | q | t | w | x | y ];
+
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 ];
  
# Consonant doubling: 1-letter consonant doubled before -ing/-ed (beg/begging)
 
define Etoee e -> é ||  _ "^"  ?*  [ "+" {cAbl} | "+" {cAcc} | "+" {cAde} | "+" {cAll} | "+" {cCau} | "+" {cDat} | "+" {cDel} | "+" {cEla} | "+" {cFac} | "+" {cIll} | "+" {cIne} | "+" {cIns} | "+" {cSub} | "+" {cSup} | "+" {cTer} | "+" {cFam} | "+" {cDis} | "+" {cEss} | "+" {cSoc}  | "+" {cPosss1}  | "+" {cPosss2}  | "+" {cPosss3}  | "+" {cPossp1}  | "+" {cPossp2}  | "+" {cPossp3} | "+" {cPosss1p} | "+" {cPosss2p} | "+" {cPosss3p} | "+" {cPossp1p} | "+" {cPossp2p} | "+" {cPossp3p} | "+" {cPlur} | "+" {cGen} | "+" {cGenpl}] ?* ; # \0: not zero kor & ként excluded
 
define Atoaa a -> á ||  _ "^"  ?*  [ "+" {cAbl} | "+" {cAcc} | "+" {cAde} | "+" {cAll} | "+" {cCau} | "+" {cDat} | "+" {cDel} | "+" {cEla} | "+" {cFac} | "+" {cIll} | "+" {cIne} | "+" {cIns} | "+" {cSub} | "+" {cSup} | "+" {cTer} | "+" {cFam} | "+" {cDis} | "+" {cEss} | "+" {cSoc}  | "+" {cPosss1}  | "+" {cPosss2}  | "+" {cPosss3}  | "+" {cPossp1}  | "+" {cPossp2}  | "+" {cPossp3} | "+" {cPosss1p} | "+" {cPosss2p} | "+" {cPosss3p} | "+" {cPossp1p} | "+" {cPossp2p} | "+" {cPossp3p} | "+" {cPlur} | "+" {cGen} | "+" {cGenpl}] ?* ; # \0: not zero kor & ként excluded
 
  
define HarmRuleO §oeoez1§ -> 0 // .#. \"^"+ Vowel %^ ?*  _  .o.
+
define Filter1 ~[ $[ %+Rep \[%+Imper]* %+Rep ] |  $[ %+Imper \[%+Rep]* %+Imper ] ];
                §oeoez1§ -> o // .#. \"^"+ BackVowel \Vowel+ "^" ?*  _ ,,
+
define HarmRuleAAA §AAA§ -> a // .#. \"^"* BackVowel \Vowel* "^" ?* _ ,,
                §oeoez1§ -> e // .#. \"^"+ FrontUnroundedVowel \Vowel+ "^" ?* _ ,,
+
                  §AAA§ -> e // .#. \"^"* FrontVowel \Vowel* "^" ?* _ ;
                §oeoez1§ -> ö // .#. \"^"+ FrontRoundedVowel \Vowel+ "^" ?* _ ;
 
define HarmRuleC §AE1§ -> á // .#. \"^"+ BackVowel \Vowel* "^" ?* _ "^"  ?*  [ "+" {cAbl} | "+" {cAcc} | "+" {cAde} | "+" {cAll} | "+" {cCau} | "+" {cDat} | "+" {cDel} | "+" {cEla} | "+" {cFac} | "+" {cIll} | "+" {cIne} | "+" {cIns} | "+" {cSub} | "+" {cSup} | "+" {cTer} | "+" {cFam} | "+" {cDis} | "+" {cEss} | "+" {cSoc}  | "+" {cPosss1}  | "+" {cPosss2}  | "+" {cPosss3}  | "+" {cPossp1}  | "+" {cPossp2}  | "+" {cPossp3} | "+" {cPosss1p} | "+" {cPosss2p} | "+" {cPosss3p} | "+" {cPossp1p} | "+" {cPossp2p} | "+" {cPossp3p} | "+" {cPlur} | "+" {cGen} | "+" {cGenpl}] ?* .o.
 
                §AE1§ -> é // .#. \"^"+ FrontVowel \Vowel* "^" ?* _ "^"  ?*  [ "+" {cAbl} | "+" {cAcc} | "+" {cAde} | "+" {cAll} | "+" {cCau} | "+" {cDat} | "+" {cDel} | "+" {cEla} | "+" {cFac} | "+" {cIll} | "+" {cIne} | "+" {cIns} | "+" {cSub} | "+" {cSup} | "+" {cTer} | "+" {cFam} | "+" {cDis} | "+" {cEss} | "+" {cSoc}  | "+" {cPosss1}  | "+" {cPosss2}  | "+" {cPosss3}  | "+" {cPossp1}  | "+" {cPossp2}  | "+" {cPossp3} | "+" {cPosss1p} | "+" {cPosss2p} | "+" {cPosss3p} | "+" {cPossp1p} | "+" {cPossp2p} | "+" {cPossp3p} | "+" {cPlur} | "+" {cGen} | "+" {cGenpl}] ?* .o.
 
                §AE1§ -> a // .#. \"^"+ BackVowel \Vowel* "^" ?*  _ %^ [ 0 ] .o.
 
                §AE1§ -> e // .#. \"^"+ FrontVowel \Vowel* "^" ?* _ %^ [ 0 ] ;
 
define HarmRuleJ §J§ -> j || .#. \"^"+ Vowel %^ ?* _ .o.
 
                §J§ -> j || .#. \"^"+ OppNonPlosivCons %^ ?* _ .o.
 
                §J§ -> 0 // .#. \"^"+ PlosivCons "^" ?*  _ ;
 
define HarmRuleU §oooe§ -> ó // .#. \"^"+ BackVowel \Vowel* "^" ?* _ ,,
 
                §oooe§ -> ő // .#. \"^"+ FrontVowel \Vowel* "^" ?* _ ;
 
define HarmRuleZ §uue§ -> u // .#. \"^"+ BackVowel \Vowel* "^" ?* _ ,,
 
                §uue§ -> ü // .#. \"^"+ FrontVowel \Vowel* "^" ?* _ ;
 
define HarmRuleAAA §AAA§ -> á // .#. \"^"+ BackVowel \Vowel* "^" ?* _ ,,
 
                  §AAA§ -> é // .#. \"^"+ FrontVowel \Vowel* "^" ?* _ ;
 
define HarmRuleAA §AA§ -> a // .#. \"^"+ BackVowel \Vowel* "^" ?* _ ,,
 
                  §AA§ -> e // .#. \"^"+ FrontVowel \Vowel* "^" ?* _ ;
 
define HarmRuleVV §VV§ -> v || Vowel %^  _ ,,
 
                  §VV§ -> b || b %^ _ ,,
 
                  §VV§ -> c || c %^ _ ,,
 
                  §VV§ -> d || d %^ _ ,,
 
                  §VV§ -> f || f %^ _ ,,
 
                  §VV§ -> g || g %^ _ ,,
 
                  §VV§ -> h || h %^ _ ,,
 
                  §VV§ -> j || j %^ _ ,,
 
                  §VV§ -> k || k %^ _ ,,
 
                  §VV§ -> l || l %^ _ ,,
 
                  §VV§ -> m || m %^ _ ,,
 
                  §VV§ -> n || n %^ _ ,,
 
                  §VV§ -> p || p %^ _ ,,
 
                  §VV§ -> q || q %^ _ ,,
 
                  §VV§ -> r || r %^ _ ,,
 
                  §VV§ -> s || s %^ _ ,,
 
                  §VV§ -> t || t %^ _ ,,
 
                  §VV§ -> v || v %^ _ ,,
 
                  §VV§ -> z || z %^ _ ;
 
define HarmRuleG §oeoez2§ -> 0 // Vowel %^ _  .o.
 
                §oeoez2§ -> a // .#. \"^"+ BackVowel \Vowel* "^" ?* [ \"^" ] ?* _ .o.
 
                §oeoez2§ -> o // .#. \"^"+ BackVowel \Vowel* "^" [ \"^" ]* _ ,,
 
                §oeoez2§ -> e // .#. \"^"+ FrontUnroundedVowel \Vowel* "^" ?* _ ,,
 
                §oeoez2§ -> ö // .#. \"^"+ FrontRoundedVowel \Vowel*  "^" ?* _ ;
 
define HarmRuleI §oeoe§ -> o // .#. \"^"+ BackVowel \Vowel* "^" ?* _ .o.
 
                §oeoe§ -> e //  Front1UnroundedVowel \Vowel* "^" [ \"^" & \Vowel ]+ _ .o.
 
                §oeoe§ -> ö //  Front1RoundedVowel \Vowel* "^" [ \"^" & \Vowel ]+ _ ;
 
define HarmRuleonen §oeoez§ -> 0 //  Vowel %^ _ .o.
 
                §oeoez§ -> o // .#. \"^"+ BackVowel \Vowel* "^" ?* _ .o.
 
                §oeoez§ -> e //  Front1UnroundedVowel \Vowel* "^" [ \"^" & \Vowel ]* _ .o.
 
                §oeoez§ -> ö //  Front1RoundedVowel \Vowel* "^" [ \"^" & \Vowel ]* _ ;
 
define HarmRuleL §ooez3§ -> 0 // .#. \"^"+ Vowel %^ ?* _  .o.
 
                §ooez3§ -> o // .#. \"^"+ BackVowel \Vowel+ "^" ?* _ ,,
 
                §ooez3§ -> e // .#. \"^"+ FrontUnroundedVowel \Vowel+ "^" ?* _ ,,
 
                §ooez3§ -> ö // .#. \"^"+ FrontRoundedVowel \Vowel+  "^" ?* _ ;
 
define HarmRuleN §EOA§ -> 0 // .#. \"^"+ Vowel %^  ?* _  .o.
 
                §EOA§ -> o // .#. \"^"+ BackVowel \Vowel* "^" ?* _ ,,
 
                §EOA§ -> e // .#. \"^"+ FrontUnroundedVowel \Vowel* "^" ?* _ ,,
 
                §EOA§ -> ö // .#. \"^"+ FrontRoundedVowel \Vowel* "^" ?* _ ;
 
define HarmRuleH §UUE§ -> 0 // .#. \"^"+ Vowel %^ ?* _  .o.
 
                §UUE§ -> u // .#. \"^"+ BackVowel \Vowel+  "^" ?* _ ,,
 
                §UUE§ -> ü // .#. \"^"+ FrontVowel \Vowel+ "^" ?* _ ;
 
define HarmRuleK §OEOE1§ -> 0 // .#. \"^"+ Vowel %^  ?* _  .o.
 
                §OEOE1§ -> o // .#. \"^"+ BackVowel \Vowel*  "^" ?* _ ,,
 
                §OEOE1§ -> e // .#. \"^"+ FrontUnroundedVowel \Vowel* "^" ?* _ ,,
 
                §OEOE1§ -> ö // .#. \"^"+ FrontRoundedVowel \Vowel*  "^" ?* _ ;
 
define HarmRuleQ §OEOE§ -> o // .#. \"^"+ BackVowel \Vowel*  "^" ?* _ ,,
 
                §OEOE§ -> e // .#. \"^"+ FrontUnroundedVowel \Vowel* "^" ?* _ ,,
 
                §OEOE§ -> ö // .#. \"^"+ FrontRoundedVowel \Vowel*  "^" ?* _ ;
 
define HarmRuleR §UUE1§ -> u // .#. \"^"+ BackVowel \Vowel*  "^" ?* _ ,,
 
                §UUE1§ -> ü // .#. \"^"+ FrontVowel \Vowel* "^" ?* _ ;
 
define HarmRuleS §JP§ -> j || .#. \"^"+ \Vowel %^  ?* _ .o.
 
                §JP§ -> 0 // .#. \"^"+ Vowel+ %^ ?* _ ;
 
define HarmRuleT §AE§ -> 0 || .#. \"^"+ Vowel %^ ?* _ .o.
 
                §AE§ -> a // .#. \"^"+ BackVowel \Vowel+  "^" ?* _ ,,
 
                §AE§ -> e // .#. \"^"+ FrontVowel \Vowel+ "^" ?* _ ;
 
define HarmRuleW §OEOE2§ -> o // .#. \"^"+ BackVowel \Vowel*  "^" ?* _ ,,
 
                §OEOE2§ -> 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
 
# Cleanup: remove morpheme boundaries
 
define Cleanup      "^"        -> 0;
 
define Cleanup      "^"        -> 0;
define CleanupDis "^" "+" {cDis}  -> 0;
+
define CleanupEndings "^" "+" {cRep}  -> 0 ,,
define CleanupEss "^" "+" {cEss}  -> 0;
+
                      "^" "+" {cImp} -> 0 ,,
define CleanupSoc "^" "+" {cSoc}  -> 0;
+
                      "^" "+" {cInf}  -> 0 ,,
define CleanupTem "^" "+" {cTem}  -> 0;
+
                      "^" "+" {cNrep} -> 0 ,,
define CleanupPosss1 "^" "+" {cPosss1}  -> 0;
+
                      "^" "+" {cPot}  -> 0 ,,
define CleanupPosss2 "^" "+" {cPosss2}  -> 0;
+
                      "^" "+" {cIndefSg1} -> 0 ,,
define CleanupPosss3 "^" "+" {cPosss3}  -> 0;
+
                      "^" "+" {cIndefSg2}  -> 0 ,,
define CleanupPossp1 "^" "+" {cPossp1}  -> 0;
+
                      "^" "+" {cIndefSg3} -> 0 ,,
define CleanupPossp2 "^" "+" {cPossp2}  -> 0;
+
                      "^" "+" {cIndefPl1}  -> 0 ,,
define CleanupPossp3 "^" "+" {cPossp3}  -> 0;
+
                      "^" "+" {cIndefPl2}  -> 0 ,,
define CleanupPosss1p "^" "+" {cPosss1p}  -> 0;
+
                      "^" "+" {cIndefPl3} -> 0 ,,
define CleanupPosss2p "^" "+" {cPosss2p}  -> 0;
+
                      "^" "+" {cDefSg1}  -> 0 ,,
define CleanupPosss3p "^" "+" {cPosss3p}  -> 0;
+
                      "^" "+" {cDefSg2} -> 0 ,,
define CleanupPossp1p "^" "+" {cPossp1p}  -> 0;
+
                      "^" "+" {cDefSg3}  -> 0 ,,
define CleanupPossp2p "^" "+" {cPossp2p}  -> 0;
+
                      "^" "+" {cDefPl1} -> 0 ,,
define CleanupPossp3p "^" "+" {cPossp3p}  -> 0;
+
                      "^" "+" {cDefPl2}  -> 0 ,,
define CleanupPlur    "^" "+" {cPlur}  -> 0;
+
                      "^" "+" {cDefPl3} -> 0 ,,
define CleanupFam    "^" "+" {cFam}  -> 0;
+
                      "^" "+" {cPIndefSg1}  -> 0 ,,
define CleanupGen    "^" "+" {cGen}  -> 0;
+
                      "^" "+" {cPIndefSg2} -> 0 ,,
define CleanupGenpl  "^" "+" {cGenpl} -> 0;
+
                      "^" "+" {cPIndefSg3}  -> 0 ,,
define CleanupAbl    "^" "+" {cAbl}  -> 0;
+
                      "^" "+" {cPIndefPl1} -> 0 ,,
define CleanupAcc    "^" "+" {cAcc}  -> 0;
+
                      "^" "+" {cPIndefPl2}  -> 0 ,,
define CleanupAde    "^" "+" {cAde}  -> 0;
+
                      "^" "+" {cPIndefPl3} -> 0 ,,
define CleanupAll    "^" "+" {cAll}  -> 0;
+
                      "^" "+" {cPDefSg1}  -> 0 ,,
define CleanupCau    "^" "+" {cCau}  -> 0;
+
                      "^" "+" {cPDefSg2} -> 0 ,,
define CleanupDat    "^" "+" {cDat}  -> 0;
+
                      "^" "+" {cPDefSg3}  -> 0 ,,
define CleanupDel    "^" "+" {cDel}  -> 0;
+
                      "^" "+" {cPDefPl1} -> 0 ,,
define CleanupEla    "^" "+" {cEla}  -> 0;
+
                      "^" "+" {cPDefPl2}  -> 0 ,,
define CleanupFac    "^" "+" {cFac}  -> 0;
+
                      "^" "+" {cPDefPl3} -> 0 ,,
define CleanupFor    "^" "+" {cFor}  -> 0;
+
                      "^" "+" {cCIndefSg1}  -> 0 ,,
define CleanupIll    "^" "+" {cIll}  -> 0;
+
                      "^" "+" {cCIndefSg2} -> 0 ,,
define CleanupIne    "^" "+" {cIne}  -> 0;
+
                      "^" "+" {cCIndefSg3}  -> 0 ,,
define CleanupIns    "^" "+" {cIns}  -> 0;
+
                      "^" "+" {cCIndefPl1}  -> 0 ,,
define CleanupNom    "^" "+" {cNom}  -> 0;
+
                      "^" "+" {cCIndefPl2}  -> 0 ,,
define CleanupSub    "^" "+" {cSub}  -> 0;
+
                      "^" "+" {cCIndefPl3}  -> 0 ,,
define CleanupSup    "^" "+" {cSup}  -> 0;
+
                      "^" "+" {cCDefSg1} -> 0 ,,
define CleanupTer    "^" "+" {cTer}  -> 0;
+
                      "^" "+" {cCDefSg2}  -> 0 ,,
 
+
                      "^" "+" {cCDefSg3}  -> 0 ,,
read lexc enhu2.lexc
+
                      "^" "+" {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 Lexicon
  
define Grammar Lexicon          .o.  
+
define Grammar Filter1              .o.
              Etoee            .o.  
+
                Lexicon              .o.              
              Atoaa            .o.
+
                CleanupEndings       .o.
              HarmRuleC        .o.
+
                HarmRuleAAA          .o.
              CleanupDis       .o.
+
                HarmRuleAA            .o.              
              CleanupEss        .o.
+
                HarmRuleIgeu          .o.
              CleanupSoc        .o.
+
                HarmRuleIgea          .o.
              CleanupTem        .o.
+
                HarmRuleIgee          .o.
              CleanupPosss1p    .o.
+
                HarmRuleIgeo          .o.  
              CleanupPosss2p    .o.
+
                HarmRuleIgeou        .o.
              CleanupPosss3p    .o.
+
                HarmRuleIgeoe        .o.
              CleanupPossp1p    .o.
+
                HarmRuleIgeo2        .o.
              CleanupPossp2p    .o.
+
                HarmRuleIgeaa        .o.
              CleanupPossp3p    .o.
+
                HarmRuleIgeija1        .o.
              CleanupPosss1    .o.
+
                HarmRuleIgejatokitek1  .o.
              CleanupPosss2    .o.
+
                HarmRuleIgejakik1      .o.
              CleanupPosss3    .o.
+
                HarmRuleIgetattet     .o.
              CleanupPossp1    .o.
+
                HarmRuleeo            .o.
              CleanupPossp2    .o.
+
                HarmRulefelteo       .o.
              CleanupPossp3     .o.
+
                HarmRulej            .o.
              CleanupPlur      .o.
+
                HarmRuletatt          .o.
              CleanupFam       .o.
+
                HarmRuleszorelol      .o.
              CleanupGenpl      .o.
+
                HarmRuleaen          .o.
              CleanupGen        .o.
+
                HarmRuleaet          .o.
              CleanupAbl        .o.
+
                HarmRuleoe2          .o.
              CleanupAcc        .o.
+
                HarmRuleae2          .o.
              CleanupAde        .o.
+
                HarmRulesj            .o.
              CleanupAll        .o.
+
                HarmRulesj1          .o.
              CleanupCau        .o.
+
                HarmRuleess          .o.
              CleanupDat        .o.
+
                HarmRuleAAAmely          .o.
              CleanupDel        .o.
+
                HarmRuleAAmely            .o.              
              CleanupEla        .o.
+
                HarmRuleIgeumely          .o.
              CleanupFac        .o.
+
                HarmRuleIgeamely          .o.
              CleanupFor        .o.
+
                HarmRuleIgeemely          .o.
              CleanupIll        .o.
+
                HarmRuleIgeomely          .o.  
              CleanupIne        .o.
+
                HarmRuleIgeo2mely         .o.
              CleanupIns        .o.
+
                HarmRuleIgeaamely         .o.
              CleanupNom        .o.
+
                HarmRuleIgeija1mely        .o.
              CleanupSub        .o.
+
                HarmRuleIgejatokitek1mely  .o.
              CleanupSup        .o.
+
                HarmRuleIgejakik1mely      .o.
              CleanupTer        .o.
+
                HarmRuleIgetattetmely    .o.
              HarmRuleO         .o.  
+
                HarmRuleeomely            .o.
              HarmRuleJ         .o.  
+
                HarmRulefelteomely       .o.
              HarmRuleZ        .o.  
+
                HarmRuleszorelolmely     .o.
              HarmRuleR        .o.  
+
                Cleanup;      
              HarmRuleL        .o.  
 
              HarmRuleN        .o.
 
              HarmRuleH        .o.
 
              HarmRuleK        .o.
 
              HarmRuleQ        .o.
 
              HarmRuleS        .o.
 
              HarmRuleT        .o.
 
              HarmRuleW        .o.
 
              HarmRuleG        .o.
 
              HarmRuleU        .o.  
 
              HarmRuleAAA      .o.  
 
              HarmRuleI        .o.
 
              HarmRuleVV       .o.  
 
              HarmRuleAA        .o.
 
              HarmRuleonen     .o.  
 
              Cleanup;
 
 
 
  
 
regex Grammar;
 
regex Grammar;
 
</source>
 
</source>
 +
 
==Több fájl (lexc/foma pár) összekapcsolása==
 
==Több fájl (lexc/foma pár) összekapcsolása==
 
Ha több fájlt akarunk összekapcsolni, akkor az egyes foma fájlok végén írjuk be:
 
Ha több fájlt akarunk összekapcsolni, akkor az egyes foma fájlok végén írjuk be:

A lap 2012. március 31., 21:34-kori változata

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:

  • ((plu? | poss? | fam?) gen? case) |tem|soc|dis|ess

ahol

NévMagyarázat
pluplural (házak)
famfam rag (ék)
gengenitiv (é, éi)
caseragok (ba,be, ban,ben, tól, től, stb...)
tem|soc|dis|essragok, melyeket csak közvetlenül a főnévhez kapcsolódva használunk, pl. estül
?Azt jelenti, hogy a rag hozzáfűzése opcionális, azaz nem kötelező

Lexc fájl:

!!!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


!ír
!írhat  potential
!irathat imper potential
!irat imper
!irattattat imper imper
!irjon command
!írhasson
!írogattathat rep imper pot
!íratgathat
!írogattatgat
!Irni
!írnék, írnál .. írnának cond conditional
! írjak írjon írj  command

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:

### 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

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:

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