Beispiel #1
0
 public void Replace(
     string Pattern1, string Pattern2, DelimClassification DelimClassification)
 {
     Clear();
     Add(Pattern1, DelimClassification);
     Add(Pattern2, DelimClassification);
 }
Beispiel #2
0
 public ScannerNonWord()
 {
     mDelimClass  = DelimClassification.None;
     mValue       = null;
     mNextLookup  = null;
     mNonWordChar = '\0';
 }
Beispiel #3
0
        /// <summary>
        /// Add pattern to list of patterns.  Return zero based position of the added
        /// pattern in the pattern list.
        /// </summary>
        /// <param name="InPatternValue"></param>
        /// <returns></returns>
        public int Add(string PatternValue, DelimClassification DelimClassification)
        {
            ScanPattern sp = new ScanPattern(PatternValue, DelimClassification);

            AddToNextSameLeadCharChain(sp);
            base.Add(sp);

            // add to combo string. this string is used as a quick way to determine if
            // a new string being added is distinct or not.
            mAllStringCombo.Append(PatternValue + '\0');

            // force these two arrays to be rebuilt next time accessed thru their
            // property getters.
            mLeadChars         = null;
            mScanPatternsArray = null;
            mStringArray       = null;

            // signal "PatternsChanged" event.
            if (ScanPatternsChanged != null)
            {
                ScanPatternsChanged(this);
            }

            // mark the position of the pattern in the list of patterns.
            sp.ArrayPosition = base.Count - 1;

            return(sp.ArrayPosition);
        }
Beispiel #4
0
 public void Add(char[] InPatternChars, DelimClassification DelimClassification)
 {
     foreach (char patChar in InPatternChars)
     {
         Add(patChar.ToString( ), DelimClassification);
     }
 }
Beispiel #5
0
 public void AddDistinct(string[] InPatterns, DelimClassification DelimClassification)
 {
     foreach (string pat in InPatterns)
     {
         AddDistinct(pat, DelimClassification);
     }
 }
Beispiel #6
0
 public void Add(string[] InPatternStrings, DelimClassification DelimClassification)
 {
     foreach (string pat in InPatternStrings)
     {
         Add(pat, DelimClassification);
     }
 }
        public static MatchScanPattern FindPattern(
            this PatternScanResults Results, DelimClassification DelimClass)
        {
            MatchScanPattern found = null;

            if (Results == null)
            {
                found = null;
            }
            else if (Results.FoundPatterns != null)
            {
                found = Results.FoundPatterns.FindPattern(DelimClass);
            }
            else if ((Results.FoundPattern != null) &&
                     (Results.FoundPattern.MatchPattern.DelimClassification == DelimClass))
            {
                found = Results.FoundPattern;
            }
            else
            {
                found = null;
            }

            return(found);
        }
Beispiel #8
0
        /// <summary>
        /// Add pattern to list of patterns.  Return zero based position of the added
        /// pattern in the pattern list.
        /// </summary>
        /// <param name="InPatternValue"></param>
        /// <returns></returns>
        public int Replace(string PatternValue, DelimClassification DelimClassification)
        {
            Clear();
            int pos = Add(PatternValue, DelimClassification);

            return(pos);
        }
Beispiel #9
0
 public ScannerNonWord(DelimClassification InDelimClass, char InNonWordChar)
 {
     mDelimClass  = InDelimClass;
     mValue       = null;
     mNextLookup  = null;
     mNonWordChar = InNonWordChar;
 }
Beispiel #10
0
 public ScanPatterns(
     string Pattern1, string Pattern2, DelimClassification DelimClassification)
 {
     ConstructCommon();
     Add(Pattern1, DelimClassification);
     Add(Pattern2, DelimClassification);
 }
Beispiel #11
0
 public ScannerNonWord(DelimClassification InDelimClass, string InValue)
 {
     mDelimClass  = InDelimClass;
     mValue       = InValue;
     mNextLookup  = null;
     mNonWordChar = '\0';
 }
Beispiel #12
0
 public CursorMatchPattern(
     WordCompositeCode InCompositeCode, WhichEdge InEdge)
 {
     mCompositeCode = InCompositeCode;
     mEdge          = InEdge;
     mDelimClass    = DelimClassification.Any;
 }
Beispiel #13
0
 public ScanPatterns(
     string Pattern1, string Pattern2, DelimClassification DelimClassification)
     : this()
 {
     Add(Pattern1, DelimClassification);
     Add(Pattern2, DelimClassification);
 }
        public static bool FoundAtPosition(
            this PatternScanResults Results, DelimClassification DelimClass,
            int Pos)
        {
            bool rc = false;

//      MatchScanPattern found = null;
            if (Results == null)
            {
                rc = false;
            }
            else if (Results.Position != Pos)
            {
                rc = false;
            }
            else
            {
                var pat = Results.FindPattern(DelimClass);
                if (pat == null)
                {
                    rc = false;
                }
                else
                {
                    rc = true;
                }
            }
            return(rc);
        }
Beispiel #15
0
 public ScanNonWordResults(
     int InPosition, string InNonWordString, DelimClassification InDelimClass)
 {
     mPosition      = InPosition;
     mNonWordChar   = null;
     mNonWordString = InNonWordString;
     mDelimClass    = InDelimClass;
 }
Beispiel #16
0
 public ScanPatterns(string[] Patterns, DelimClassification DelimClassification)
     : this()
 {
     foreach (string pat in Patterns)
     {
         Add(pat, DelimClassification);
     }
 }
Beispiel #17
0
 public void Add(ScanPatterns InPatterns, DelimClassification InDelimClass)
 {
     foreach (ScanPattern pat in InPatterns)
     {
         base.Add(pat.PatternValue);
         mWip.Add(InDelimClass);
     }
 }
Beispiel #18
0
 public ScanPatterns(char[] Patterns, DelimClassification DelimClassification)
 {
     ConstructCommon();
     foreach (char pat in Patterns)
     {
         Add(pat.ToString( ), DelimClassification);
     }
 }
Beispiel #19
0
 public ScanPatterns(string[] Patterns, DelimClassification DelimClassification)
 {
     ConstructCommon();
     foreach (string pat in Patterns)
     {
         Add(pat, DelimClassification);
     }
 }
Beispiel #20
0
 public ScanPattern(string PatternValue, DelimClassification DelimClassification,
                    Nullable <DelimClassification> OverlapClassification)
     : this()
 {
     this.PatternValue          = PatternValue;
     this.DelimClassification   = DelimClassification;
     this.OverlapClassification = OverlapClassification;
 }
Beispiel #21
0
 public ScanPatterns(char[] Patterns, DelimClassification DelimClassification)
     : this()
 {
     foreach (char pat in Patterns)
     {
         Add(pat.ToString( ), DelimClassification);
     }
 }
        public static WordClassification?ToWordClassification(this DelimClassification Delim)
        {
            switch (Delim)
            {
            case DelimClassification.CloseBraced:
                return(WordClassification.CloseBraced);

            case DelimClassification.CommentToEnd:
                return(WordClassification.CommentToEnd);

            // dividers, whitespace, end of line - never considered a word.
            case DelimClassification.DividerSymbol:
                return(null);

            case DelimClassification.EmbeddedComment:
                return(WordClassification.EmbeddedComment);

            case DelimClassification.EndOfString:
                return(null);

            case DelimClassification.EndStmt:
                return(null);

            case DelimClassification.ExpressionSymbol:
                return(WordClassification.ExpressionSymbol);

            case DelimClassification.Assignment:
                return(WordClassification.Assignment);

            case DelimClassification.NewLine:
                return(null);

            case DelimClassification.OpenContentBraced:
                return(WordClassification.OpenContentBraced);

            case DelimClassification.OpenNamedBraced:
                return(WordClassification.OpenNamedBraced);

            case DelimClassification.PathSep:
                return(null);

            case DelimClassification.Quote:
                return(null);

            case DelimClassification.VirtualWhitespace:
                return(null);

            case DelimClassification.Whitespace:
                return(null);

            case DelimClassification.None:
                return(null);

            default:
                throw new ApplicationException(
                          "unexpected DelimClassification " + Delim.ToString());
            }
        }
Beispiel #23
0
        public void AddDistinct(ScanPattern Pattern, DelimClassification DelimClass)
        {
            int px = base.AddDistinct(Pattern.PatternValue);

            if (px != -1)
            {
                mWip.Add(DelimClass);
            }
        }
Beispiel #24
0
 public void AddDistinct(char[] InPatterns, DelimClassification InDelimClass)
 {
     foreach (char pat in InPatterns)
     {
         int px = base.AddDistinct(pat.ToString( ));
         if (px != -1)
         {
             mWip.Add(InDelimClass);
         }
     }
 }
Beispiel #25
0
 public void AddDistinct(ScanPatterns Patterns, DelimClassification DelimClass)
 {
     foreach (ScanPattern pat in Patterns)
     {
         int px = base.AddDistinct(pat.PatternValue);
         if (px != -1)
         {
             mWip.Add(DelimClass);
         }
     }
 }
Beispiel #26
0
 public ScanNonWordResults(int InPosition)
 {
     if (InPosition != -1)
     {
         throw new ApplicationException("only not found value, -1, allowed in this constructor");
     }
     mPosition      = InPosition;
     mNonWordChar   = null;
     mNonWordString = null;
     mDelimClass    = DelimClassification.None;
 }
Beispiel #27
0
        /// <summary>
        /// Add pattern to list of patterns.  Return zero based position of the added
        /// pattern in the pattern list.
        /// </summary>
        /// <param name="InPatternValue"></param>
        /// <returns></returns>
        public int Add(
            string PatternValue, DelimClassification DelimClassification,
            int Priority = 0)
        {
            ScanPattern sp = new ScanPattern(PatternValue, DelimClassification);

            sp.Priority = Priority;
            var rv = Add_Common(sp);

            return(rv);
        }
Beispiel #28
0
 // ------------------------- IsOpenBraced ----------------------------------
 public static bool IsOpenBraced(DelimClassification InDelimClass)
 {
     if ((InDelimClass == DelimClassification.OpenNamedBraced) ||
         (InDelimClass == DelimClassification.OpenContentBraced))
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
        /// <summary>
        /// test if the enum value is equal any of the compare to enum values.
        /// </summary>
        /// <param name="Position"></param>
        /// <param name="Values"></param>
        /// <returns></returns>
        public static bool EqualAny(this DelimClassification Delim, params DelimClassification[] Values)
        {
            bool rc = false;

            foreach (var vlu in Values)
            {
                if (vlu == Delim)
                {
                    rc = true;
                    break;
                }
            }
            return(rc);
        }
Beispiel #30
0
        public bool IsOpenBraced(ScanPattern InPattern)
        {
            DelimClassification dc = GetDelimClass(InPattern);

            if ((dc == DelimClassification.OpenContentBraced) ||
                (dc == DelimClassification.OpenNamedBraced))
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }