summaryrefslogtreecommitdiff
path: root/src/grammar.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/grammar.h')
-rw-r--r--src/grammar.h83
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