public void AppendCanComeFromSet(char c, AASimilarity aaSimilarity) { SpecialFunctions.CheckCondition(char.IsUpper(c)); //!!!raise error string sCanComeFromSet = aaSimilarity.CanComeFromSet(c); sbCurrentDisjunct.AppendGroundSet(sCanComeFromSet); ++CoreLengthSoFar; }
private void SetLeftCoreRightRealizationAbstractionAndRegex() { Before = AASetSequence.GetInstance(); Core = AASetSequence.GetInstance(); After = AASetSequence.GetInstance(); StringBuilder sbCoreRealization = new StringBuilder(); StringBuilder sbFullRealization = new StringBuilder(); StringBuilder sbRegex = new StringBuilder(); CharEnumerator charEnumerator = FullAsString.GetEnumerator(); // Read 1st char bool bOK = charEnumerator.MoveNext(); char ch = char.MinValue; if (bOK) { ch = charEnumerator.Current; } // Read before part while (bOK) { if (!(ch == '.' || (char.IsLetter(ch) && !char.IsUpper(ch)))) { break; } AASet aaSet = Before.AppendGroundOrEdge(ch); sbRegex.Append(AASetSequence.ToRegexString(aaSet)); char fullRealizationChar = AASetSequence.ToFlankingRealizationChar(aaSet); sbFullRealization.Append(fullRealizationChar); bOK = charEnumerator.MoveNext(); if (bOK) { ch = charEnumerator.Current; } } // Read main part while (bOK) { if (ch == '.' || (char.IsLetter(ch) && !char.IsUpper(ch))) { break; } if (char.IsLetter(ch) && char.IsUpper(ch)) { AASet aaSet = Core.AppendGround(ch); char coreRealizationChar = AASetSequence.ToCoreRealizationChar(aaSet); Debug.Assert(ch == coreRealizationChar); //!!!real assert sbCoreRealization.Append(coreRealizationChar); sbFullRealization.Append(coreRealizationChar); sbRegex.Append(AASetSequence.ToRegexString(aaSet)); } else { SpecialFunctions.CheckCondition(ch == '['); //!!!raise error // Read [xyz] StringBuilder sbCharSet = new StringBuilder(); bOK = charEnumerator.MoveNext(); SpecialFunctions.CheckCondition(bOK); //!!!raise error ch = charEnumerator.Current; while (ch != ']') { sbCharSet.Append(ch); bOK = charEnumerator.MoveNext(); SpecialFunctions.CheckCondition(bOK); //!!!raise error ch = charEnumerator.Current; } SpecialFunctions.CheckCondition(sbCharSet.Length > 0); //!!!raies error AASet aaSet = Core.AppendGroundSet(sbCharSet.ToString()); char coreRealizationChar = AASetSequence.ToCoreRealizationChar(aaSet); sbCoreRealization.Append(coreRealizationChar); sbFullRealization.Append(coreRealizationChar); sbRegex.Append(AASetSequence.ToRegexString(aaSet)); } bOK = charEnumerator.MoveNext(); if (bOK) { ch = charEnumerator.Current; } } // Read after part while (bOK) { if (!(ch == '.' || (char.IsLetter(ch) && !char.IsUpper(ch)))) { break; } AASet aaSet = After.AppendGroundOrEdge(ch); sbRegex.Append(AASetSequence.ToRegexString(aaSet)); char fullRealizationChar = AASetSequence.ToFlankingRealizationChar(aaSet); sbFullRealization.Append(fullRealizationChar); bOK = charEnumerator.MoveNext(); if (bOK) { ch = charEnumerator.Current; } } FullAsAASetSequence = AASetSequence.Concatenate(Before, Core, After); CoreRealization = sbCoreRealization.ToString(); FullRealization = sbFullRealization.ToString(); RegexString = sbRegex.ToString(); }