diff options
author | Chris Dyer <redpony@gmail.com> | 2009-12-14 20:35:11 -0500 |
---|---|---|
committer | Chris Dyer <redpony@gmail.com> | 2009-12-14 20:35:11 -0500 |
commit | 851e389dffdd6996ea32d70defb8906de80b9edc (patch) | |
tree | 8c68ee77205badc056b8ab5b332e67e3e98017df /src/grammar.h | |
parent | dc6930c00b4b276883280cff1ed6dcd9ddef03c7 (diff) |
few small fixes of alignment tools, add new orthographic similarity feature for word aligner, final naming of directories, libraries in cdec
Diffstat (limited to 'src/grammar.h')
-rw-r--r-- | src/grammar.h | 83 |
1 files changed, 0 insertions, 83 deletions
diff --git a/src/grammar.h b/src/grammar.h deleted file mode 100644 index 3471e3f1..00000000 --- a/src/grammar.h +++ /dev/null @@ -1,83 +0,0 @@ -#ifndef GRAMMAR_H_ -#define GRAMMAR_H_ - -#include <vector> -#include <map> -#include <set> -#include <boost/shared_ptr.hpp> - -#include "lattice.h" -#include "trule.h" - -struct RuleBin { - virtual ~RuleBin(); - virtual int GetNumRules() const = 0; - virtual TRulePtr GetIthRule(int i) const = 0; - virtual int Arity() const = 0; -}; - -struct GrammarIter { - virtual ~GrammarIter(); - virtual const RuleBin* GetRules() const = 0; - virtual const GrammarIter* Extend(int symbol) const = 0; -}; - -struct Grammar { - typedef std::map<WordID, std::vector<TRulePtr> > Cat2Rules; - static const std::vector<TRulePtr> NO_RULES; - - virtual ~Grammar(); - virtual const GrammarIter* GetRoot() const = 0; - virtual bool HasRuleForSpan(int i, int j, int distance) const; - - // cat is the category to be rewritten - inline const std::vector<TRulePtr>& GetAllUnaryRules() const { - return unaries_; - } - - // get all the unary rules that rewrite category cat - inline const std::vector<TRulePtr>& GetUnaryRulesForRHS(const WordID& cat) const { - Cat2Rules::const_iterator found = rhs2unaries_.find(cat); - if (found == rhs2unaries_.end()) - return NO_RULES; - else - return found->second; - } - - protected: - Cat2Rules rhs2unaries_; // these must be filled in by subclasses! - std::vector<TRulePtr> unaries_; -}; - -typedef boost::shared_ptr<Grammar> GrammarPtr; - -class TGImpl; -struct TextGrammar : public Grammar { - TextGrammar(); - TextGrammar(const std::string& file); - void SetMaxSpan(int m) { max_span_ = m; } - virtual const GrammarIter* GetRoot() const; - void AddRule(const TRulePtr& rule); - void ReadFromFile(const std::string& filename); - virtual bool HasRuleForSpan(int i, int j, int distance) const; - const std::vector<TRulePtr>& GetUnaryRules(const WordID& cat) const; - private: - int max_span_; - boost::shared_ptr<TGImpl> pimpl_; -}; - -struct GlueGrammar : public TextGrammar { - // read glue grammar from file - explicit GlueGrammar(const std::string& file); - GlueGrammar(const std::string& goal_nt, const std::string& default_nt); // "S", "X" - virtual bool HasRuleForSpan(int i, int j, int distance) const; -}; - -struct PassThroughGrammar : public TextGrammar { - PassThroughGrammar(const Lattice& input, const std::string& cat); - virtual bool HasRuleForSpan(int i, int j, int distance) const; - private: - std::vector<std::set<int> > has_rule_; // index by [i][j] -}; - -#endif |