Example #1
0
        public void AppendCanComeFromSet(char c, AASimilarity aaSimilarity)
        {
            SpecialFunctions.CheckCondition(char.IsUpper(c));             //!!!raise error
            string sCanComeFromSet = aaSimilarity.CanComeFromSet(c);

            sbCurrentDisjunct.AppendGroundSet(sCanComeFromSet);
            ++CoreLengthSoFar;
        }
Example #2
0
        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();
        }