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)