private int isBrecket(int wordNomber, ISentence sent, LongOperationAttribut attr) { string word = sent.get_Word(wordNomber).WordStr; for (int i = 0; i < attr.attributSequence.Count; i++) { if (attr.attributSequence[i] is Brackets) { Brackets br = attr.attributSequence[i] as Brackets; if ((br.atribut1.word == word) || (br.atribut2.word == word)) { return(i); } for (int j = 0; j < br.unionsForAttr2.Count; j++) { if ((br.unionsForAttr2[j] as ElementaryAttribut).word == word) { return(i); } } } } return(-1); }
/// <summary> /// Добавление атрибута с предпроверкой добавлять ли его в последовательность атрибутов или же уточнять брэкет /// </summary> /// <param name="word"></param> /// <param name="notOperation"></param> /// <param name="operetionBefore"></param> /// <param name="wordNomber"></param> /// <param name="sent"></param> /// <param name="attr"></param> public void addElementaryAttribut(string word, string notOperation, IWord inWord, string operetionBefore, int saverWordNomber, ISentence sent, LongOperationAttribut attr) { int brNo = isBrecket(saverWordNomber, sent, attr); ElementaryAttribut attribut = new ElementaryAttribut(notOperation, word, inWord); if (brNo != -1) { //уточнить брэкет (attr.attributSequence[brNo] as Brackets).addUnionToAttr2(attribut, operetionBefore); } else { //просто добавляем новый элемент в последовательность attributSequence.Add(attribut); operators.Add(operetionBefore); parentEp.getString(); } }