When traversing an FST, we need to be able to handle multiple valid walks through the FST. So, when traversing it, we're going to need some sort of system that allows us to walk to an accepting state, save that output, and then continue traversal until all the possible walks have been made.
For example: index+PLURAL can go to indexes or indices, and we're going to need to output both.
This also has to handle infinite loops. Like say you have the simple FST a+. You can then generate a, or aa, or aaa, or 10 trillion as. We have to handle this. #4 should help with this.
When traversing an FST, we need to be able to handle multiple valid walks through the FST. So, when traversing it, we're going to need some sort of system that allows us to walk to an accepting state, save that output, and then continue traversal until all the possible walks have been made.
For example:
index+PLURAL
can go toindexes
orindices
, and we're going to need to output both.Edit: we'll want to do #4 first