aboutsummaryrefslogtreecommitdiff
path: root/src/extensions/far
diff options
context:
space:
mode:
Diffstat (limited to 'src/extensions/far')
-rw-r--r--src/extensions/far/Makefile.am7
-rw-r--r--src/extensions/far/Makefile.in32
-rw-r--r--src/extensions/far/farcompilestrings.cc34
-rw-r--r--src/extensions/far/farcreate.cc22
-rw-r--r--src/extensions/far/farequal.cc57
-rw-r--r--src/extensions/far/farextract.cc12
-rw-r--r--src/extensions/far/farinfo.cc13
-rw-r--r--src/extensions/far/farprintstrings.cc21
-rw-r--r--src/extensions/far/farscript.cc28
-rw-r--r--src/extensions/far/main.cc18
-rw-r--r--src/extensions/far/strings.cc (renamed from src/extensions/far/compile-strings.cc)4
11 files changed, 168 insertions, 80 deletions
diff --git a/src/extensions/far/Makefile.am b/src/extensions/far/Makefile.am
index 61f7cc8..a7c2fff 100644
--- a/src/extensions/far/Makefile.am
+++ b/src/extensions/far/Makefile.am
@@ -12,12 +12,13 @@ libfstfar_la_SOURCES = sttable.cc stlist.cc
libfstfar_la_LDFLAGS = -version-info 0:0:0
if HAVE_SCRIPT
-libfstfarscript_la_SOURCES = farscript.cc compile-strings.cc main.cc
+libfstfarscript_la_SOURCES = farscript.cc strings.cc main.cc
libfstfarscript_la_LDFLAGS = -version-info 0:0:0
endif
if HAVE_BIN
-bin_PROGRAMS = farcompilestrings farcreate farextract farinfo farprintstrings
+bin_PROGRAMS = farcompilestrings farcreate farequal farextract farinfo \
+ farprintstrings
LDADD = libfstfarscript.la libfstfar.la ../../script/libfstscript.la \
../../lib/libfst.la -lm -ldl
@@ -26,6 +27,8 @@ farcompilestrings_SOURCES = farcompilestrings.cc
farcreate_SOURCES = farcreate.cc
+farequal_SOURCES = farequal.cc
+
farextract_SOURCES = farextract.cc
farinfo_SOURCES = farinfo.cc
diff --git a/src/extensions/far/Makefile.in b/src/extensions/far/Makefile.in
index 8e05cab..0635556 100644
--- a/src/extensions/far/Makefile.in
+++ b/src/extensions/far/Makefile.in
@@ -36,8 +36,9 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
@HAVE_BIN_TRUE@bin_PROGRAMS = farcompilestrings$(EXEEXT) \
-@HAVE_BIN_TRUE@ farcreate$(EXEEXT) farextract$(EXEEXT) \
-@HAVE_BIN_TRUE@ farinfo$(EXEEXT) farprintstrings$(EXEEXT)
+@HAVE_BIN_TRUE@ farcreate$(EXEEXT) farequal$(EXEEXT) \
+@HAVE_BIN_TRUE@ farextract$(EXEEXT) farinfo$(EXEEXT) \
+@HAVE_BIN_TRUE@ farprintstrings$(EXEEXT)
subdir = src/extensions/far
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -84,10 +85,9 @@ libfstfar_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
@HAVE_SCRIPT_FALSE@am_libfstfar_la_rpath = -rpath $(libfstdir)
@HAVE_SCRIPT_TRUE@am_libfstfar_la_rpath = -rpath $(libfstdir)
libfstfarscript_la_LIBADD =
-am__libfstfarscript_la_SOURCES_DIST = farscript.cc compile-strings.cc \
- main.cc
+am__libfstfarscript_la_SOURCES_DIST = farscript.cc strings.cc main.cc
@HAVE_SCRIPT_TRUE@am_libfstfarscript_la_OBJECTS = farscript.lo \
-@HAVE_SCRIPT_TRUE@ compile-strings.lo main.lo
+@HAVE_SCRIPT_TRUE@ strings.lo main.lo
libfstfarscript_la_OBJECTS = $(am_libfstfarscript_la_OBJECTS)
libfstfarscript_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
@@ -109,6 +109,13 @@ farcreate_LDADD = $(LDADD)
@HAVE_BIN_TRUE@farcreate_DEPENDENCIES = libfstfarscript.la \
@HAVE_BIN_TRUE@ libfstfar.la ../../script/libfstscript.la \
@HAVE_BIN_TRUE@ ../../lib/libfst.la
+am__farequal_SOURCES_DIST = farequal.cc
+@HAVE_BIN_TRUE@am_farequal_OBJECTS = farequal.$(OBJEXT)
+farequal_OBJECTS = $(am_farequal_OBJECTS)
+farequal_LDADD = $(LDADD)
+@HAVE_BIN_TRUE@farequal_DEPENDENCIES = libfstfarscript.la libfstfar.la \
+@HAVE_BIN_TRUE@ ../../script/libfstscript.la \
+@HAVE_BIN_TRUE@ ../../lib/libfst.la
am__farextract_SOURCES_DIST = farextract.cc
@HAVE_BIN_TRUE@am_farextract_OBJECTS = farextract.$(OBJEXT)
farextract_OBJECTS = $(am_farextract_OBJECTS)
@@ -145,13 +152,13 @@ CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
$(LDFLAGS) -o $@
SOURCES = $(libfstfar_la_SOURCES) $(libfstfarscript_la_SOURCES) \
$(farcompilestrings_SOURCES) $(farcreate_SOURCES) \
- $(farextract_SOURCES) $(farinfo_SOURCES) \
+ $(farequal_SOURCES) $(farextract_SOURCES) $(farinfo_SOURCES) \
$(farprintstrings_SOURCES)
DIST_SOURCES = $(libfstfar_la_SOURCES) \
$(am__libfstfarscript_la_SOURCES_DIST) \
$(am__farcompilestrings_SOURCES_DIST) \
- $(am__farcreate_SOURCES_DIST) $(am__farextract_SOURCES_DIST) \
- $(am__farinfo_SOURCES_DIST) \
+ $(am__farcreate_SOURCES_DIST) $(am__farequal_SOURCES_DIST) \
+ $(am__farextract_SOURCES_DIST) $(am__farinfo_SOURCES_DIST) \
$(am__farprintstrings_SOURCES_DIST)
ETAGS = etags
CTAGS = ctags
@@ -283,13 +290,14 @@ AM_CPPFLAGS = -I$(srcdir)/../../include $(ICU_CPPFLAGS)
@HAVE_SCRIPT_TRUE@libfst_LTLIBRARIES = libfstfarscript.la libfstfar.la
libfstfar_la_SOURCES = sttable.cc stlist.cc
libfstfar_la_LDFLAGS = -version-info 0:0:0
-@HAVE_SCRIPT_TRUE@libfstfarscript_la_SOURCES = farscript.cc compile-strings.cc main.cc
+@HAVE_SCRIPT_TRUE@libfstfarscript_la_SOURCES = farscript.cc strings.cc main.cc
@HAVE_SCRIPT_TRUE@libfstfarscript_la_LDFLAGS = -version-info 0:0:0
@HAVE_BIN_TRUE@LDADD = libfstfarscript.la libfstfar.la ../../script/libfstscript.la \
@HAVE_BIN_TRUE@ ../../lib/libfst.la -lm -ldl
@HAVE_BIN_TRUE@farcompilestrings_SOURCES = farcompilestrings.cc
@HAVE_BIN_TRUE@farcreate_SOURCES = farcreate.cc
+@HAVE_BIN_TRUE@farequal_SOURCES = farequal.cc
@HAVE_BIN_TRUE@farextract_SOURCES = farextract.cc
@HAVE_BIN_TRUE@farinfo_SOURCES = farinfo.cc
@HAVE_BIN_TRUE@farprintstrings_SOURCES = farprintstrings.cc
@@ -411,6 +419,9 @@ farcompilestrings$(EXEEXT): $(farcompilestrings_OBJECTS) $(farcompilestrings_DEP
farcreate$(EXEEXT): $(farcreate_OBJECTS) $(farcreate_DEPENDENCIES)
@rm -f farcreate$(EXEEXT)
$(CXXLINK) $(farcreate_OBJECTS) $(farcreate_LDADD) $(LIBS)
+farequal$(EXEEXT): $(farequal_OBJECTS) $(farequal_DEPENDENCIES)
+ @rm -f farequal$(EXEEXT)
+ $(CXXLINK) $(farequal_OBJECTS) $(farequal_LDADD) $(LIBS)
farextract$(EXEEXT): $(farextract_OBJECTS) $(farextract_DEPENDENCIES)
@rm -f farextract$(EXEEXT)
$(CXXLINK) $(farextract_OBJECTS) $(farextract_LDADD) $(LIBS)
@@ -427,15 +438,16 @@ mostlyclean-compile:
distclean-compile:
-rm -f *.tab.c
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/compile-strings.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/farcompilestrings.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/farcreate.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/farequal.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/farextract.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/farinfo.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/farprintstrings.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/farscript.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stlist.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strings.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sttable.Plo@am__quote@
.cc.o:
diff --git a/src/extensions/far/farcompilestrings.cc b/src/extensions/far/farcompilestrings.cc
index 0c9b352..765b908 100644
--- a/src/extensions/far/farcompilestrings.cc
+++ b/src/extensions/far/farcompilestrings.cc
@@ -25,12 +25,15 @@
#include <fst/extensions/far/main.h>
#include <iostream>
#include <fstream>
+#include <sstream>
DEFINE_string(key_prefix, "", "Prefix to append to keys");
DEFINE_string(key_suffix, "", "Suffix to append to keys");
DEFINE_int32(generate_keys, 0,
"Generate N digit numeric keys (def: use file basenames)");
-DEFINE_string(far_type, "default", "FAR file format type: one of: ");
+DEFINE_string(far_type, "default",
+ "FAR file format type: one of: \"default\", \"fst\""
+ "\"stlist\", \"sttable\"");
DEFINE_bool(allow_negative_labels, false,
"Allow negative labels (not recommended; may cause conflicts)");
DEFINE_string(arc_type, "standard", "Output arc type");
@@ -43,7 +46,11 @@ DEFINE_string(symbols, "", "Label symbol table");
DEFINE_string(unknown_symbol, "", "");
DEFINE_bool(file_list_input, false,
"Each input files contains a list of files to be processed");
-
+DEFINE_bool(keep_symbols, false,
+ "Store symbol table in Far file");
+DEFINE_bool(initial_symbols, true,
+ "When keep_symbols==true, stores symbol table only for the first"
+ " Fst in archive.");
int main(int argc, char **argv) {
namespace s = fst::script;
@@ -51,23 +58,19 @@ int main(int argc, char **argv) {
string usage = "Compiles a set of strings as FSTs and stores them in";
usage += " a finite-state archive.\n\n Usage:";
usage += argv[0];
- usage += " in1.txt [in2.txt ...] out.far\n";
+ usage += " [in1.txt [[in2.txt ...] out.far]]\n";
std::set_new_handler(FailedNewHandler);
- SetFlags(usage.c_str(), &argc, &argv, true);
-
- if (argc < 3) {
- ShowUsage();
- return 1;
- }
-
- vector<string> in_fnames(argc - 2);
+ SET_FLAGS(usage.c_str(), &argc, &argv, true);
- for (unsigned i = 1; i < argc - 1; ++i) {
- in_fnames[i - 1] = argv[i];
- }
+ vector<string> in_fnames;
+ for (unsigned i = 1; i < argc - 1; ++i)
+ in_fnames.push_back(strcmp(argv[i], "") != 0 ? argv[i] : "");
+ if (in_fnames.empty())
+ in_fnames.push_back(argc == 2 && strcmp(argv[1], "-") != 0 ? argv[1] : "");
- string out_fname = argv[argc - 1];
+ string out_fname =
+ argc > 2 && strcmp(argv[argc - 1], "-") != 0 ? argv[argc - 1] : "";
fst::FarEntryType fet = fst::StringToFarEntryType(FLAGS_entry_type);
fst::FarTokenType ftt = fst::StringToFarTokenType(FLAGS_token_type);
@@ -76,6 +79,7 @@ int main(int argc, char **argv) {
s::FarCompileStrings(in_fnames, out_fname, FLAGS_arc_type, FLAGS_fst_type,
far_type, FLAGS_generate_keys, fet, ftt,
FLAGS_symbols, FLAGS_unknown_symbol,
+ FLAGS_keep_symbols, FLAGS_initial_symbols,
FLAGS_allow_negative_labels,
FLAGS_file_list_input, FLAGS_key_prefix,
FLAGS_key_suffix);
diff --git a/src/extensions/far/farcreate.cc b/src/extensions/far/farcreate.cc
index 009fc34..9ddbec3 100644
--- a/src/extensions/far/farcreate.cc
+++ b/src/extensions/far/farcreate.cc
@@ -29,7 +29,8 @@ DEFINE_string(key_suffix, "", "Suffix to append to keys");
DEFINE_int32(generate_keys, 0,
"Generate N digit numeric keys (def: use file basenames)");
DEFINE_string(far_type, "default",
- "FAR file format type: one of: \"default\", \"stlist\", \"sstable\", \"sttable\"");
+ "FAR file format type: one of: \"default\", "
+ "\"stlist\", \"sttable\"");
DEFINE_bool(file_list_input, false,
"Each input files contains a list of files to be processed");
@@ -38,21 +39,20 @@ int main(int argc, char **argv) {
string usage = "Creates a finite-state archive from input FSTs.\n\n Usage:";
usage += argv[0];
- usage += " in1.fst [in2.fst ...] out.far\n";
+ usage += " [in1.fst [[in2.fst ...] out.far]]\n";
std::set_new_handler(FailedNewHandler);
- SetFlags(usage.c_str(), &argc, &argv, true);
-
- if (argc < 3) {
- ShowUsage();
- return 1;
- }
+ SET_FLAGS(usage.c_str(), &argc, &argv, true);
vector<string> in_fnames;
- for (int i = 1; i < argc - 1; ++i)
- in_fnames.push_back(argv[i]);
+ for (unsigned i = 1; i < argc - 1; ++i)
+ in_fnames.push_back(strcmp(argv[i], "") != 0 ? argv[i] : "");
+ if (in_fnames.empty())
+ in_fnames.push_back(argc == 2 && strcmp(argv[1], "-") != 0 ? argv[1] : "");
+
+ string out_fname =
+ argc > 2 && strcmp(argv[argc - 1], "-") != 0 ? argv[argc - 1] : "";
- string out_fname = argv[argc - 1];
string arc_type = fst::LoadArcTypeFromFst(in_fnames[0]);
fst::FarType far_type = fst::FarTypeFromString(FLAGS_far_type);
diff --git a/src/extensions/far/farequal.cc b/src/extensions/far/farequal.cc
new file mode 100644
index 0000000..94e607c
--- /dev/null
+++ b/src/extensions/far/farequal.cc
@@ -0,0 +1,57 @@
+// farequal.cc
+
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// Copyright 2005-2010 Google, Inc.
+// Author: allauzen@google.com (Cyril Allauzen)
+//
+// \file
+// Tests if two Far files contains the same (key,fst) pairs.
+
+#include <fst/extensions/far/main.h>
+#include <fst/extensions/far/farscript.h>
+
+DEFINE_string(begin_key, "",
+ "First key to extract (def: first key in archive)");
+DEFINE_string(end_key, "",
+ "Last key to extract (def: last key in archive)");
+DEFINE_double(delta, fst::kDelta, "Comparison/quantization delta");
+
+int main(int argc, char **argv) {
+ namespace s = fst::script;
+
+ string usage = "Prints some basic information about the FSTs in an FST ";
+ usage += "archive.\n\n Usage:";
+ usage += argv[0];
+ usage += " in1.far in2.far\n";
+ usage += " Flags: begin_key end_key";
+
+ std::set_new_handler(FailedNewHandler);
+ SET_FLAGS(usage.c_str(), &argc, &argv, true);
+
+ if (argc != 3) {
+ ShowUsage();
+ return 1;
+ }
+
+ string filename1(argv[1]), filename2(argv[2]);
+
+ bool result = s::FarEqual(
+ filename1, filename2, fst::LoadArcTypeFromFar(filename1),
+ FLAGS_delta, FLAGS_begin_key, FLAGS_end_key);
+
+ if (!result)
+ VLOG(1) << "FARs are not equal.";
+
+ return result ? 0 : 2;
+}
diff --git a/src/extensions/far/farextract.cc b/src/extensions/far/farextract.cc
index 72b2d15..66b7840 100644
--- a/src/extensions/far/farextract.cc
+++ b/src/extensions/far/farextract.cc
@@ -38,19 +38,15 @@ int main(int argc, char **argv) {
string usage = "Extracts FSTs from a finite-state archive.\n\n Usage:";
usage += argv[0];
- usage += " in1.far [in2.far...]\n";
+ usage += " [in1.far in2.far...]\n";
std::set_new_handler(FailedNewHandler);
- SetFlags(usage.c_str(), &argc, &argv, true);
-
- if (argc < 2) {
- ShowUsage();
- return 1;
- }
+ SET_FLAGS(usage.c_str(), &argc, &argv, true);
vector<string> ifilenames;
for (int i = 1; i < argc; ++i)
- ifilenames.push_back(argv[i]);
+ ifilenames.push_back(strcmp(argv[i], "") != 0 ? argv[i] : "");
+ if (ifilenames.empty()) ifilenames.push_back("");
const string &arc_type = fst::LoadArcTypeFromFar(ifilenames[0]);
diff --git a/src/extensions/far/farinfo.cc b/src/extensions/far/farinfo.cc
index e8036a9..2665141 100644
--- a/src/extensions/far/farinfo.cc
+++ b/src/extensions/far/farinfo.cc
@@ -36,20 +36,17 @@ int main(int argc, char **argv) {
string usage = "Prints some basic information about the FSTs in an FST ";
usage += "archive.\n\n Usage:";
usage += argv[0];
- usage += " in1.far [in2.far...]\n";
+ usage += " [in1.far in2.far...]\n";
usage += " Flags: begin_key end_key list_fsts";
std::set_new_handler(FailedNewHandler);
- SetFlags(usage.c_str(), &argc, &argv, true);
-
- if (argc < 2) {
- ShowUsage();
- return 1;
- }
+ SET_FLAGS(usage.c_str(), &argc, &argv, true);
vector<string> filenames;
for (int i = 1; i < argc; ++i)
- filenames.push_back(argv[i]);
+ filenames.push_back(strcmp(argv[i], "") != 0 ? argv[i] : "");
+ if (filenames.empty())
+ filenames.push_back("");
s::FarInfo(filenames, fst::LoadArcTypeFromFar(filenames[0]),
FLAGS_begin_key, FLAGS_end_key, FLAGS_list_fsts);
diff --git a/src/extensions/far/farprintstrings.cc b/src/extensions/far/farprintstrings.cc
index ab7d52b..0204ab7 100644
--- a/src/extensions/far/farprintstrings.cc
+++ b/src/extensions/far/farprintstrings.cc
@@ -31,11 +31,14 @@ DEFINE_string(end_key, "",
"Last key to extract (def: last key in archive)");
// PrintStringsMain specific flag definitions.
DEFINE_bool(print_key, false, "Prefix each string by its key");
+DEFINE_bool(print_weight, false, "Suffix each string by its weight");
DEFINE_string(entry_type, "line", "Entry type: one of : "
"\"file\" (one FST per file), \"line\" (one FST per line)");
DEFINE_string(token_type, "symbol", "Token type: one of : "
"\"symbol\", \"byte\", \"utf8\"");
DEFINE_string(symbols, "", "Label symbol table");
+DEFINE_bool(initial_symbols, true,
+ "Uses symbol table from the first Fst in archive for all entries.");
int main(int argc, char **argv) {
@@ -43,27 +46,25 @@ int main(int argc, char **argv) {
string usage = "Print as string the string FSTs in an archive.\n\n Usage:";
usage += argv[0];
- usage += " in1.far [in2.far ...]\n";
+ usage += " [in1.far in2.far ...]\n";
std::set_new_handler(FailedNewHandler);
- SetFlags(usage.c_str(), &argc, &argv, true);
-
- if (argc < 2) {
- ShowUsage();
- return 1;
- }
+ SET_FLAGS(usage.c_str(), &argc, &argv, true);
vector<string> ifilenames;
for (int i = 1; i < argc; ++i)
- ifilenames.push_back(argv[i]);
+ ifilenames.push_back(strcmp(argv[i], "") != 0 ? argv[i] : "");
+ if (ifilenames.empty()) ifilenames.push_back("");
string arc_type = fst::LoadArcTypeFromFar(ifilenames[0]);
s::FarPrintStrings(ifilenames, arc_type,
fst::StringToFarEntryType(FLAGS_entry_type),
fst::StringToFarTokenType(FLAGS_token_type),
- FLAGS_begin_key, FLAGS_end_key, FLAGS_print_key,
- FLAGS_symbols, FLAGS_generate_filenames,
+ FLAGS_begin_key, FLAGS_end_key,
+ FLAGS_print_key, FLAGS_print_weight,
+ FLAGS_symbols, FLAGS_initial_symbols,
+ FLAGS_generate_filenames,
FLAGS_filename_prefix, FLAGS_filename_suffix);
return 0;
diff --git a/src/extensions/far/farscript.cc b/src/extensions/far/farscript.cc
index a04645d..bc4ad0e 100644
--- a/src/extensions/far/farscript.cc
+++ b/src/extensions/far/farscript.cc
@@ -34,14 +34,17 @@ void FarCompileStrings(const vector<string> &in_fnames,
FarTokenType tt,
const string &symbols_fname,
const string &unknown_symbol,
+ bool keep_symbols,
+ bool initial_symbols,
bool allow_negative_labels,
bool file_list_input,
const string &key_prefix,
const string &key_suffix) {
FarCompileStringsArgs args(in_fnames, out_fname, fst_type, far_type,
generate_keys, fet, tt, symbols_fname,
- unknown_symbol, allow_negative_labels,
- file_list_input, key_prefix, key_suffix);
+ unknown_symbol, keep_symbols, initial_symbols,
+ allow_negative_labels, file_list_input,
+ key_prefix, key_suffix);
Apply<Operation<FarCompileStringsArgs> >("FarCompileStrings", arc_type,
&args);
@@ -61,6 +64,16 @@ void FarCreate(const vector<string> &in_fnames,
Apply<Operation<FarCreateArgs> >("FarCreate", arc_type, &args);
}
+bool FarEqual(const string &filename1, const string &filename2,
+ const string &arc_type, float delta,
+ const string &begin_key, const string &end_key) {
+ FarEqualInnerArgs args(filename1, filename2, delta, begin_key, end_key);
+ FarEqualArgs args_with_retval(args);
+
+ Apply<Operation<FarEqualArgs> >("FarEqual", arc_type, &args_with_retval);
+ return args_with_retval.retval;
+}
+
void FarExtract(const vector<string> &ifilenames,
const string &arc_type,
int32 generate_filenames, const string &begin_key,
@@ -89,15 +102,16 @@ void FarPrintStrings(const vector<string> &ifilenames,
const string &begin_key,
const string &end_key,
const bool print_key,
+ const bool print_weight,
const string &symbols_fname,
+ const bool initial_symbols,
const int32 generate_filenames,
const string &filename_prefix,
const string &filename_suffix) {
- FarPrintStringsArgs args(ifilenames, entry_type, token_type, begin_key,
- end_key, print_key, symbols_fname,
- generate_filenames,
- filename_prefix,
- filename_suffix);
+ FarPrintStringsArgs args(ifilenames, entry_type, token_type,
+ begin_key, end_key, print_key, print_weight,
+ symbols_fname, initial_symbols, generate_filenames,
+ filename_prefix, filename_suffix);
Apply<Operation<FarPrintStringsArgs> >("FarPrintStrings", arc_type,
&args);
diff --git a/src/extensions/far/main.cc b/src/extensions/far/main.cc
index b01d639..855def6 100644
--- a/src/extensions/far/main.cc
+++ b/src/extensions/far/main.cc
@@ -26,6 +26,7 @@ using std::vector;
#include <iostream>
#include <fstream>
+#include <sstream>
#include <fst/extensions/far/main.h>
namespace fst {
@@ -33,7 +34,9 @@ namespace fst {
// Return the 'FarType' value corresponding to a far type name.
FarType FarTypeFromString(const string &str) {
FarType type = FAR_DEFAULT;
- if (str == "stlist")
+ if (str == "fst")
+ type = FAR_FST;
+ else if (str == "stlist")
type = FAR_STLIST;
else if (str == "sttable")
type = FAR_STTABLE;
@@ -46,6 +49,8 @@ FarType FarTypeFromString(const string &str) {
// Return the textual name corresponding to a 'FarType;.
string FarTypeToString(FarType type) {
switch (type) {
+ case FAR_FST:
+ return "fst";
case FAR_STLIST:
return "stlist";
case FAR_STTABLE:
@@ -85,19 +90,14 @@ FarTokenType StringToFarTokenType(const string &s) {
string LoadArcTypeFromFar(const string &far_fname) {
FarHeader hdr;
- if (far_fname.empty()) {
- LOG(ERROR) << "Reading FAR from standard in not supported";
- return "";
- }
-
if (!hdr.Read(far_fname)) {
- LOG(ERROR) << "Error reading FAR: " << far_fname;
+ FSTERROR() << "Error reading FAR: " << far_fname;
return "";
}
string atype = hdr.ArcType();
if (atype == "unknown") {
- LOG(ERROR) << "Empty FST archive: " << far_fname;
+ FSTERROR() << "Empty FST archive: " << far_fname;
return "";
}
@@ -108,7 +108,7 @@ string LoadArcTypeFromFst(const string &fst_fname) {
FstHeader hdr;
ifstream in(fst_fname.c_str(), ifstream::in | ifstream::binary);
if (!hdr.Read(in, fst_fname)) {
- LOG(ERROR) << "Error reading FST: " << fst_fname;
+ FSTERROR() << "Error reading FST: " << fst_fname;
return "";
}
diff --git a/src/extensions/far/compile-strings.cc b/src/extensions/far/strings.cc
index e8a99cc..c62a45b 100644
--- a/src/extensions/far/compile-strings.cc
+++ b/src/extensions/far/strings.cc
@@ -17,6 +17,10 @@
#include <fst/extensions/far/compile-strings.h>
#include <iostream>
#include <fstream>
+#include <sstream>
+
+DEFINE_string(far_field_separator, "\t",
+ "Set of characters used as a separator between printed fields");
namespace fst {