|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#include "LoaderFactory.h" |
|
|
|
#include "moses/Util.h" |
|
#include "moses/InputFileStream.h" |
|
#include "LoaderCompact.h" |
|
#include "LoaderHiero.h" |
|
#include "LoaderStandard.h" |
|
|
|
#include <sstream> |
|
#include <iostream> |
|
|
|
using namespace std; |
|
|
|
namespace Moses |
|
{ |
|
|
|
|
|
|
|
std::auto_ptr<RuleTableLoader> |
|
RuleTableLoaderFactory:: |
|
Create(const std::string &path) |
|
{ |
|
InputFileStream input(path); |
|
std::string line; |
|
|
|
if (std::getline(input, line)) { |
|
std::vector<std::string> tokens; |
|
Tokenize(tokens, line); |
|
if (tokens.size() == 1) { |
|
if (tokens[0] == "1") { |
|
return std::auto_ptr<RuleTableLoader>(new RuleTableLoaderCompact()); |
|
} |
|
std::cerr << "Unsupported compact rule table format: " << tokens[0]; |
|
return std::auto_ptr<RuleTableLoader>(); |
|
} else if (tokens[0] == "[X]" && tokens[1] == "|||") { |
|
return std::auto_ptr<RuleTableLoader>(new RuleTableLoaderHiero()); |
|
} |
|
|
|
return std::auto_ptr<RuleTableLoader>(new RuleTableLoaderStandard()); |
|
} else { |
|
|
|
return std::auto_ptr<RuleTableLoader>(new RuleTableLoaderStandard()); |
|
} |
|
} |
|
|
|
} |
|
|