20 #ifndef KALDI_FSTEXT_PRE_DETERMINIZE_H_ 21 #define KALDI_FSTEXT_PRE_DETERMINIZE_H_ 26 #include <fst/fstlib.h> 27 #include <fst/fst-decl.h> 44 template<
class Arc,
class Int>
47 std::vector<Int> *syms_out);
56 std::string prefix, std::vector<Label> *syms_out);
75 void AddSelfLoops(MutableFst<Arc> *
fst, std::vector<typename Arc::Label> &isyms,
76 std::vector<typename Arc::Label> &osyms);
83 int64
DeleteISymbols(MutableFst<Arc> *
fst, std::vector<typename Arc::Label> symsIn);
fst::StdArc::StateId StateId
void PreDeterminize(MutableFst< Arc > *fst, typename Arc::Label first_new_sym, std::vector< Int > *symsOut)
For an extended explanation of the framework of which grammar-fsts are a part, please see Support for...
void CreateNewSymbols(SymbolTable *input_sym_table, int nSym, std::string prefix, std::vector< Label > *symsOut)
void AddSelfLoops(MutableFst< Arc > *fst, std::vector< typename Arc::Label > &isyms, std::vector< typename Arc::Label > &osyms)
AddSelfLoops is a function you will probably want to use alongside PreDeterminize, to add self-loops to any FSTs that you compose on the left hand side of the one modified by PreDeterminize.
Arc::StateId CreateSuperFinal(MutableFst< Arc > *fst)
int64 DeleteISymbols(MutableFst< Arc > *fst, std::vector< typename Arc::Label > isyms)