// See www.openfst.org for extensive documentation on this weighted // finite-state transducer library. // // Compose an MPDT and an FST. #ifndef FST_EXTENSIONS_MPDT_COMPOSE_H_ #define FST_EXTENSIONS_MPDT_COMPOSE_H_ #include #include #include #include namespace fst { template class MPdtParenFilter { public: using FST1 = typename Filter::FST1; using FST2 = typename Filter::FST2; using Arc = typename Filter::Arc; using Label = typename Arc::Label; using StateId = typename Arc::StateId; using Weight = typename Arc::Weight; using Matcher1 = typename Filter::Matcher1; using Matcher2 = typename Filter::Matcher2; using StackId = StateId; using ParenStack = internal::MPdtStack; using FilterState1 = typename Filter::FilterState; using FilterState2 = IntegerFilterState; using FilterState = PairFilterState; MPdtParenFilter(const FST1 &fst1, const FST2 &fst2, Matcher1 *matcher1 = nullptr, Matcher2 *matcher2 = nullptr, const std::vector> *parens = nullptr, const std::vector