diff options
Diffstat (limited to 'gi/scfg/abc/old_agrammar.h')
-rw-r--r-- | gi/scfg/abc/old_agrammar.h | 45 |
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 |