aboutsummaryrefslogtreecommitdiff
path: root/src/extensions/pdt/pdtcompose.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/extensions/pdt/pdtcompose.cc')
-rw-r--r--src/extensions/pdt/pdtcompose.cc20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/extensions/pdt/pdtcompose.cc b/src/extensions/pdt/pdtcompose.cc
index 0076e1d..b33862f 100644
--- a/src/extensions/pdt/pdtcompose.cc
+++ b/src/extensions/pdt/pdtcompose.cc
@@ -31,6 +31,9 @@ using std::pair; using std::make_pair;
DEFINE_string(pdt_parentheses, "", "PDT parenthesis label pairs.");
DEFINE_bool(left_pdt, true, "1st arg is PDT (o.w. 2nd arg).");
DEFINE_bool(connect, true, "Trim output");
+DEFINE_string(compose_filter, "paren",
+ "Composition filter, one of: \"expand\", \"expand_paren\", "
+ "\"paren\"");
int main(int argc, char **argv) {
namespace s = fst::script;
@@ -70,7 +73,22 @@ int main(int argc, char **argv) {
fst::ReadLabelPairs(FLAGS_pdt_parentheses, &parens, false);
s::VectorFstClass ofst(ifst1->ArcType());
- fst::ComposeOptions copts(false);
+
+ fst::PdtComposeFilter compose_filter;
+
+ if (FLAGS_compose_filter == "expand") {
+ compose_filter = fst::EXPAND_FILTER;
+ } else if (FLAGS_compose_filter == "expand_paren") {
+ compose_filter = fst::EXPAND_PAREN_FILTER;
+ } else if (FLAGS_compose_filter == "paren") {
+ compose_filter = fst::PAREN_FILTER;
+ } else {
+ LOG(ERROR) << argv[0] << "Unknown compose filter type: "
+ << FLAGS_compose_filter;
+ return 1;
+ }
+
+ fst::PdtComposeOptions copts(false, compose_filter);
s::PdtCompose(*ifst1, *ifst2, parens, &ofst, copts, FLAGS_left_pdt);