public State(string lhs, RHS rhs, int i, int j) { this.lhs = lhs; this.rhs = rhs; this.i = i; this.j = j; }
public bool parseSentence(string[] s) { sentence = s; charts = new Chart[sentence.Length + 1]; for (int i = 0; i < charts.Length; i++) { charts[i] = new Chart(); } string[] start1 = { "@", "S" }; RHS startRHS = new RHS(start1); State start = new State("$", startRHS, 0, 0); charts[0].addState(start); for (int i = 0; i < charts.Length; i++) { for (int j = 0; j < charts[i].size(); j++) { State st = charts[i].getState(j); string next_term = st.getAfterDot(); if (st.isDotLast()) { completer(st); } else if (grammar.isPartOfSpeech(next_term)) { scanner(st); } else { predictor(st); } } } string[] fin = { "S", "@" }; RHS finRHS = new RHS(fin); State finish = new State("$", finRHS, 0, sentence.Length); for (int j = 0; j < charts[sentence.Length].size(); j++) { State state = charts[sentence.Length].getState(j); if (state.Equals(finish)) { return(true); } } return(false); }
public override bool Equals(object obj) { if (obj == null) { return(this == null); } RHS rhs = (RHS)obj; if (terms.Length != rhs.terms.Length) { return(false); } for (int i = 0; i < terms.Length; i++) { if (terms[i].CompareTo(rhs.terms[i]) != 0) { return(false); } } return(dot == rhs.dot); }