00001 #pragma once 00002 00003 #include <utility> 00004 #include <vector> 00005 00006 namespace Moses 00007 { 00008 namespace Syntax 00009 { 00010 namespace S2T 00011 { 00012 00013 /* Lattice in which a full path corresponds to the tail of a PHyperedge. 00014 * For an entry x[i][j][k][l] in a TailLattice x: 00015 * 00016 * i = offset from start of rule pattern 00017 * 00018 * j = index of gap + 1 (zero indicates a terminal, otherwise the index is 00019 * zero-based from the left of the rule pattern) 00020 * 00021 * k = arc width 00022 * 00023 * l = label index (zero for terminals, otherwise as in RuleTrieScope3::Node) 00024 */ 00025 typedef std::vector< 00026 std::vector< 00027 std::vector< 00028 std::vector<const PVertex *> > > > TailLattice; 00029 00030 } // namespace S2T 00031 } // namespace Syntax 00032 } // namespace Moses