from libcpp.vector cimport vector from libcpp.string cimport string from utils cimport * cdef extern from "decoder/trule.h": cdef cppclass AlignmentPoint: AlignmentPoint(int s, int t) AlignmentPoint Inverted() short s_ short t_ cdef cppclass TRule: vector[WordID] f_ vector[WordID] e_ vector[AlignmentPoint] a_ FastSparseVector[weight_t] scores_ WordID lhs_ int arity_ bint IsUnary() bint IsGoal() void ComputeArity() cdef extern from "decoder/grammar.h": cdef cppclass RuleBin: int GetNumRules() shared_ptr[TRule] GetIthRule(int i) int Arity() ctypedef RuleBin const_RuleBin "const RuleBin" cdef cppclass GrammarIter: const_RuleBin* GetRules() ctypedef GrammarIter const_GrammarIter "const GrammarIter" cdef cppclass Grammar: const_GrammarIter* GetRoot() string GetGrammarName() void SetGrammarName(string) cdef cppclass TextGrammar(Grammar): TextGrammar() void AddRule(shared_ptr[TRule]& rule) nogil