summaryrefslogtreecommitdiff
path: root/decoder
diff options
context:
space:
mode:
Diffstat (limited to 'decoder')
-rw-r--r--decoder/hg_io.cc20
-rw-r--r--decoder/hg_io.h1
2 files changed, 21 insertions, 0 deletions
diff --git a/decoder/hg_io.cc b/decoder/hg_io.cc
index 9f0f50fa..d416dbf6 100644
--- a/decoder/hg_io.cc
+++ b/decoder/hg_io.cc
@@ -401,6 +401,26 @@ string HypergraphIO::AsPLF(const Hypergraph& hg, bool include_global_parentheses
return os.str();
}
+string HypergraphIO::AsPLF(const Lattice& lat, bool include_global_parentheses) {
+ static bool first = true;
+ if (first) { InitEscapes(); first = false; }
+ if (lat.empty()) return "()";
+ ostringstream os;
+ if (include_global_parentheses) os << '(';
+ static const string EPS="*EPS*";
+ for (int i = 0; i < lat.size(); ++i) {
+ const vector<LatticeArc> arcs = lat[i];
+ os << '(';
+ for (int j = 0; j < arcs.size(); ++j) {
+ os << "('" << Escape(TD::Convert(arcs[j].label)) << "',"
+ << arcs[j].cost << ',' << arcs[j].dist2next << "),";
+ }
+ os << "),";
+ }
+ if (include_global_parentheses) os << ')';
+ return os.str();
+}
+
namespace PLF {
const string chars = "'\\";
diff --git a/decoder/hg_io.h b/decoder/hg_io.h
index 44817157..4e502a0c 100644
--- a/decoder/hg_io.h
+++ b/decoder/hg_io.h
@@ -30,6 +30,7 @@ struct HypergraphIO {
static void ReadFromPLF(const std::string& in, Hypergraph* out, int line = 0);
// return PLF string representation (undefined behavior on non-lattices)
static std::string AsPLF(const Hypergraph& hg, bool include_global_parentheses = true);
+ static std::string AsPLF(const Lattice& lat, bool include_global_parentheses = true);
static void PLFtoLattice(const std::string& plf, Lattice* pl);
static std::string Escape(const std::string& s); // PLF helper
};