mhulden / foma

Automatically exported from code.google.com/p/foma

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

flookup reports file format error and file error

GoogleCodeExporter opened this issue · comments

What steps will reproduce the problem?
echo regék | flookup -x hun41.foma
File format error foma!
: Success
File error: hun41.foma


Hun41 lexc/foma look:
!!!hun41.lexc!!!

Multichar_Symbols +N +V +Nom +Pl

!Poss
+Posss1 +Posss2 +Posss3 +Possp1 +Possp2 +Possp3 
+Posss1p +Posss2p +Posss3p +Possp1p +Possp2p +Possp3p 

!Genitiv
+Gen 
+Genpl

!Cases
+Abl +Acc +Ade +All
+Cau +Dat +Del 
+Ela +Fac +For
+Ill +Ine +Ins 
+Sub +Sup +Ter       

!Special cases
+Dis +Ess +Fam +Soc +Tem

LEXICON Root
        Noun ; 

LEXICON Noun
!+N:kar   Plur;
!+N:kéz   Plur;
!+N:kör   Plur;
!+N:hajó  Plur;
rege      Poss;

LEXICON Poss
+Dis:^Lnként   #;
+Ess:^Zl       #;
+Soc:^NstZl    #;
+Tem:^kor      #;
+Posss1:^Bm       Plur;
+Posss2:^Bd       Plur;
+Posss3:^JC       Plur;
+Possp1:^Hnk      Plur;
+Possp2:^KtQk     Plur;
+Possp3:^JRk      Plur;
+Posss1p:^STim    Plur;
+Posss2p:^STid    Plur;
+Posss3p:^STi     Plur;
+Possp1p:^STink   Plur;
+Possp2p:^STitWk  Plur;
+Possp3p:^STik    Plur;
                  Plur;

LEXICON Plur
+Plur:^Ok      Fam;
               Fam;

LEXICON Fam
+Fam:^ék     Gen;
             Gen;

LEXICON Gen
+Gen:^é         Case;
+Genpl:^éi      Case;
                Case;

! H, K, unused
LEXICON Case
+Abl:^tUl      #;
+Acc:^Gt       #;
+Ade:^nDl      #;
+All:^hIz      #;
+Cau:^ért      #;
+Dat:^nFk      #;
+Del:^rUl      #;
+Ela:^bUl      #;
+Fac:^VD       #;
+For:^ként     #;
+Ill:^bF       #;
+Ine:^bFn      #;
+Ins:^VFl      #;
+Sub:^rF       #;
+Sup:^Pn       #;
+Ter:^ig;      #;

### hun4.foma ###

# Vowels
define Vowel [ a | á | e | é | i | í | o | ó | u | ú | ü | ű | ö | ő ];
define BackVowel [ a | á | o | ó | u | ú ];
define FrontUnroundedVowel [ e | é | i | í | ü | ű ];
define FrontRoundedVowel [ ö | ő ];
define FrontVowel [e | é | i | í | ü | ű | ö | ő ];

# E to é: if any ending e-> é
define Etoee e -> é || _ "^" [ \0 ] ;

# Cleanup: remove morpheme boundaries
define Cleanup "^" -> 0;

#define DelRule O -> 0 || Vowel %^ _ ;
define HarmRuleO O -> 0 // Vowel %^ _  .o.
                 O -> o // BackVowel \Vowel+  _ ,,
                 O -> e // FrontUnroundedVowel \Vowel+ _ ,,
                 O -> ö // FrontRoundedVowel \Vowel+  _ ;
define HarmRuleB B -> 0 // Vowel %^ _ .o.
                 B -> o // BackVowel \Vowel+  _ ,,
                 B -> e // FrontUnroundedVowel \Vowel+ _ ,,
                 B -> ö // FrontRoundedVowel \Vowel+  _ ;
define HarmRuleA A -> 0 // Vowel %^ _ .o.
                 A -> a // BackVowel \Vowel+  _ ,,
                 A -> e // FrontVowel \Vowel+ _ ;
define HarmRuleC C -> a // BackVowel \Vowel+  _ .#. .o.
                 C -> e // FrontVowel \Vowel+ _ .#. .o.
                 C -> á // BackVowel \Vowel+  _ .o.
                 C -> é // FrontVowel \Vowel+ _ ;
define HarmRuleJ J -> j ||  Vowel %^  _ .o.
                 J -> 0 //  \Vowel+ _ ;
define HarmRuleU U -> ó // BackVowel \Vowel+  _ ,,
                 U -> ő // FrontVowel \Vowel+ _ ;
define HarmRuleZ Z -> u // BackVowel \Vowel+  _ ,,
                 Z -> ü // FrontVowel \Vowel+ _ ;
define HarmRuleD D -> á // BackVowel \Vowel+  _ ,,
                 D -> é // FrontVowel \Vowel+ _ ;
define HarmRuleF F -> a // BackVowel \Vowel+  _ ,,
                 F -> e // FrontVowel \Vowel+ _ ;
define HarmRuleV V -> v || Vowel %^  _ ,,
                 V -> k || k %^ _ ,,
                 V -> m || m %^ _ ,,
                 V -> d || d %^ _ ,,
                 V -> r || r %^ _ ;
define HarmRuleG G -> 0 // Vowel %^ _  .o.
                 G -> o // BackVowel \Vowel+  _ ,,
                 G -> e // FrontUnroundedVowel \Vowel+ _ ,,
                 G -> ö // FrontRoundedVowel \Vowel+  _ ;
define HarmRuleI I -> o // BackVowel \Vowel+  _ ,,
                 I -> e // FrontUnroundedVowel \Vowel+ _ ,,
                 I -> ö // FrontRoundedVowel \Vowel+  _ ;
define HarmRuleP P -> 0 // Vowel %^ _  .o.
                 P -> o // BackVowel \Vowel+  _ ,,
                 P -> e // FrontUnroundedVowel \Vowel+ _ ,,
                 P -> ö // FrontRoundedVowel \Vowel+  _ ;
define HarmRuleL L -> 0 // Vowel %^ _  .o.
                 L -> o // BackVowel \Vowel+  _ ,,
                 L -> e // FrontUnroundedVowel \Vowel+ _ ,,
                 L -> ö // FrontRoundedVowel \Vowel+  _ ;
define HarmRuleN N -> 0 // Vowel %^ _  .o.
                 N -> o // BackVowel \Vowel+  _ ,,
                 N -> e // FrontUnroundedVowel \Vowel+ _ ,,
                 N -> ö // FrontRoundedVowel \Vowel+  _ ;
define HarmRuleH H -> 0 // Vowel %^ _  .o.
                 H -> u // BackVowel \Vowel+  _ ,,
                 H -> ü // FrontVowel \Vowel+ _ ;
define HarmRuleK K -> 0 // Vowel %^ _  .o.
                 K -> o // BackVowel \Vowel+  _ ,,
                 K -> e // FrontUnroundedVowel \Vowel+ _ ,,
                 K -> ö // FrontRoundedVowel \Vowel+  _ ;
define HarmRuleQ Q -> o // BackVowel \Vowel+  _ ,,
                 Q -> e // FrontUnroundedVowel \Vowel+ _ ,,
                 Q -> ö // FrontRoundedVowel \Vowel+  _ ;
define HarmRuleR R -> u // BackVowel \Vowel+  _ ,,
                 R -> ü // FrontVowel \Vowel+ _ ;
define HarmRuleS S -> j ||  Vowel %^  _ .o.
                 S -> 0 //  \Vowel+ _ ;
define HarmRuleT T -> a // BackVowel \Vowel+  _ ,,
                 T -> e // FrontVowel \Vowel+ _ ;
define HarmRuleW W -> o // BackVowel \Vowel+  _ ,,
                 W -> e // FrontVowel \Vowel+ _ ;

define Ablaut   é -> e || _ z "^" [ \0 ] ; 

read lexc hun41.lexc
define Lexicon

define Grammar Lexicon           .o.
               HarmRuleO         .o. 
               HarmRuleB         .o. 
               HarmRuleA         .o. 
               HarmRuleJ         .o. 
               HarmRuleU         .o. 
               HarmRuleC         .o. 
               HarmRuleZ         .o. 
               HarmRuleD         .o. 
               HarmRuleF         .o. 
               HarmRuleV         .o. 
               HarmRuleG         .o. 
               HarmRuleI         .o. 
               HarmRuleP         .o. 
               HarmRuleL         .o. 
               HarmRuleN         .o. 
               HarmRuleH         .o. 
               HarmRuleK         .o. 
               HarmRuleQ         .o. 
               HarmRuleR         .o. 
               HarmRuleS         .o. 
               HarmRuleT         .o. 
               HarmRuleW         .o. 
               Ablaut            .o. 
               Etoee             .o. 
               Cleanup;

regex Grammar;



Original issue reported on code.google.com by eleonor...@gmx.net on 1 Jan 2012 at 7:03

hun41.foma works perfectly well with foma.

Original comment by eleonor...@gmx.net on 1 Jan 2012 at 10:15

Are you sure hun41.foma is a binary file. That is, did you create it by having 
only one network on the stack in foma with the command "save stack"? Like so:

foma[1]: save stack hun41.foma

What's pasted looks like a lexc-file.

Original comment by mans.hul...@gmail.com on 2 Jan 2012 at 10:09

Thanks, that works.

en@en-desktop ~/program/foma/tktest $ echo regék | flookup hun41.fst
regék  rege+Plur+Nom
en@en-desktop ~/program/foma/tktest $ echo rege+Plur+Nom  | flookup -i 
hun41.fst 
rege+Plur+Nom   regék

It would be good, if this (save stack file.fst needed)  were mentioned in the 
flookup documentation. For me .foma is a txt file.

Original comment by eleonor...@gmx.net on 2 Jan 2012 at 6:49