summaryrefslogtreecommitdiff
path: root/gi/scfg/abc/old_agrammar.h
diff options
context:
space:
mode:
Diffstat (limited to 'gi/scfg/abc/old_agrammar.h')
-rw-r--r--gi/scfg/abc/old_agrammar.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/gi/scfg/abc/old_agrammar.h b/gi/scfg/abc/old_agrammar.h
new file mode 100644
index 00000000..d68c2548
--- /dev/null
+++ b/gi/scfg/abc/old_agrammar.h
@@ -0,0 +1,45 @@
+#ifndef _AGRAMMAR_H_
+#define _AGRAMMAR_H_
+
+#include "grammar.h"
+
+using namespace std;
+
+class aTGImpl;
+
+struct aTextGrammar : public Grammar {
+ aTextGrammar();
+ aTextGrammar(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;
+
+ void setMaxSplit(int max_split);
+
+ void printAllNonterminals() const;
+ void addNonterminal(WordID wordID);
+
+ void splitAllNonterminals();
+ void splitNonterminal(WordID wordID);
+
+ // inline map<WordID, vector<WordID> > & getSplitNonterminals(){return splitNonterminals_;}
+ // map<WordID, vector<WordID> > splitNonterminals_;
+ private:
+ int max_span_;
+ boost::shared_ptr<aTGImpl> pimpl_;
+ int max_split_;
+
+ map<WordID, int> nonterminals_; //list of nonterminals of the grammar if nonterminals_[WordID] > 0 the nonterminal WordID is found in the grammar
+
+
+
+};
+
+
+
+
+#endif