-
Notifications
You must be signed in to change notification settings - Fork 0
Description
When running make all on Windows (via sh create_fst.sh all in OjibweMorph), the FST is not created because something goes wrong in compile_fst.xfst. The crucial output line is the last one below but some previous lines are included for context:
...
defined emptyFilter: 238 bytes. 1 state, 1 arc, Cyclic.
defined cleanUp: 340 bytes. 1 state, 4 arcs, Cyclic.
655.1 kB. 1543 states, 41867 arcs, Cyclic.
defined RulesNoCleanup: 655.1 kB. 1543 states, 41867 arcs, Cyclic.
655.5 kB. 1547 states, 41893 arcs, Cyclic.
defined Rules: 655.5 kB. 1547 states, 41893 arcs, Cyclic.
variable flag-is-epsilon = ON
1.2 MB. 40921 states, 75765 arcs, Cyclic.
1.2 MB. 40921 states, 75765 arcs, Cyclic.
5.0 MB. 159898 states, 326995 arcs, Cyclic.
variable flag-is-epsilon = OFF
defined Analyzer: 5.0 MB. 0 [sig] foma 6740 open_stackdumpfile: Dumping stack trace to foma.exe.stackdump
159898 states, 326995 arcs, Cyclic.
Here's a snippet of the problematic .xfst:
...
! Eliminate all flags which configure lexicon combinatorics. This is
! good practice because generation can get stuck in an infinite loop
! when there are flags. The FST will grow but its behavior remains the
! same.
eliminate flags
set flag-is-epsilon OFF
! Let's filter out empty strings because those are annoying when you
! run random-pairs. This can only be done after flag elimination.
define Analyzer ;
regex Analyzer .o. [ ?+ ] ;
The comments in compile_fst.xfst suggest that this define Analyzer command should only be run after eliminating flags, so I wonder if something is going wrong there. It is perhaps relevant that I had to make some changes (5e7e2f5) to get the previous command (set flag-is-epsilon OFF) to work on Windows, and I have no confirmation that the previous previous command (eliminate flags) is indeed working.
For now, you can get the FST to compile correctly on Windows if you delete the two lines about defining Analyzer, but that is maybe not a good long term solution.