コード例 #1
0
ファイル: BaseMatcher.cs プロジェクト: foldrr/RegexParser
        protected BaseMatcher(string patternText, RegexOptionsEx options)
        {
            Options = options;

            Pattern = BasePattern.CreatePattern(patternText);
            Pattern = TransformAST(Pattern);
        }
コード例 #2
0
        public static void DisplayASTTransform(string patternText, AlgorithmType algorithmType, RegexOptions options)
        {
            BasePattern beforePattern = BasePattern.CreatePattern(patternText);
            BasePattern afterPattern  = doTransform(patternText, algorithmType, options);

            displayASTTransform(patternText, beforePattern, afterPattern);
        }
コード例 #3
0
        public static void DisplayASTTransform(string patternText, BaseASTTransform transform)
        {
            BasePattern beforePattern = BasePattern.CreatePattern(patternText);
            BasePattern afterPattern  = doTransform(beforePattern, transform);

            displayASTTransform(patternText, beforePattern, afterPattern);
        }
コード例 #4
0
ファイル: PatternTests.cs プロジェクト: foldrr/RegexParser
        public void CharEscapePattern_Empty()
        {
            BasePattern actual = BasePattern.CreatePattern("");

            BasePattern expected = new GroupPattern(true, new BasePattern[] { });

            Assert.AreEqual(expected, actual);
        }
コード例 #5
0
        public static void IsASTTransformCorrect(BasePattern expected, string patternText, AlgorithmType algorithmType, RegexOptions options)
        {
            BasePattern beforePattern = BasePattern.CreatePattern(patternText);
            BasePattern afterPattern  = doTransform(patternText, algorithmType, options);

            displayASTTransform(patternText, beforePattern, afterPattern);

            Assert.AreEqual(expected, afterPattern);
        }
コード例 #6
0
        public static void IsASTTransformCorrect(BasePattern expected, string patternText, BaseASTTransform transform)
        {
            BasePattern beforePattern = BasePattern.CreatePattern(patternText);
            BasePattern afterPattern  = doTransform(beforePattern, transform);

            displayASTTransform(patternText, beforePattern, afterPattern);

            Assert.AreEqual(expected, afterPattern);
        }
コード例 #7
0
ファイル: PatternTests.cs プロジェクト: foldrr/RegexParser
        public void CharEscapePattern_Short()
        {
            BasePattern actual = BasePattern.CreatePattern("abc");

            BasePattern expected = new GroupPattern(true, new BasePattern[] {
                new CharEscapePattern('a'),
                new CharEscapePattern('b'),
                new CharEscapePattern('c')
            });

            Assert.AreEqual(expected, actual);
        }
コード例 #8
0
        public void NegativeRanges()
        {
            BasePattern actual = BasePattern.CreatePattern("[A-Z][^x][^a-z][0-9]");

            BasePattern expected = new GroupPattern(true, new BasePattern[] {
                new CharGroupPattern(true, new[] { uppercase }),
                new CharGroupPattern(false, "x"),
                new CharGroupPattern(false, new[] { lowercase }),
                new CharGroupPattern(true, new[] { digits })
            });

            Assert.AreEqual(expected, actual);
        }
コード例 #9
0
        public void Doubled()
        {
            BasePattern actual = BasePattern.CreatePattern(@"((ab)+)+");

            BasePattern expected = new GroupPattern(true,
                                                    new QuantifierPattern(
                                                        new GroupPattern(true,
                                                                         new QuantifierPattern(
                                                                             new GroupPattern(true,
                                                                                              new CharEscapePattern('a'),
                                                                                              new CharEscapePattern('b')),
                                                                             1, null, true)),
                                                        1, null, true));

            Assert.AreEqual(expected, actual, "With parentheses");
        }
コード例 #10
0
        public void Quantifiers()
        {
            BasePattern actual = BasePattern.CreatePattern(@"\d*\s?\W+x*?\n??y+?");

            BasePattern expected = new GroupPattern(
                true,
                new BasePattern[]
            {
                new QuantifierPattern(CharGroupPattern.DigitChar, 0, null, true),
                new QuantifierPattern(CharGroupPattern.WhitespaceChar, 0, 1, true),
                new QuantifierPattern(CharGroupPattern.WordChar.Negated, 1, null, true),

                new QuantifierPattern(new CharEscapePattern('x'), 0, null, false),
                new QuantifierPattern(new CharEscapePattern('\n'), 0, 1, false),
                new QuantifierPattern(new CharEscapePattern('y'), 1, null, false)
            });

            Assert.AreEqual(expected, actual);
        }
コード例 #11
0
ファイル: PatternTests.cs プロジェクト: foldrr/RegexParser
        public void GroupPattern()
        {
            string pattern = "t(h(in))g";

            BasePattern actual = BasePattern.CreatePattern(pattern);

            BasePattern expected = new GroupPattern(true, new BasePattern[] {
                new CharEscapePattern('t'),
                new GroupPattern(true, new BasePattern[] {
                    new CharEscapePattern('h'),
                    new GroupPattern(true, new BasePattern[] {
                        new CharEscapePattern('i'),
                        new CharEscapePattern('n')
                    }),
                }),
                new CharEscapePattern('g')
            });

            Assert.AreEqual(expected, actual, pattern);
        }
コード例 #12
0
        public void CharSetsAndRanges()
        {
            BasePattern actual = BasePattern.CreatePattern("[A-Z]");

            BasePattern expected = new GroupPattern(true, new BasePattern[] { new CharGroupPattern(true, new[] { uppercase }) });

            Assert.AreEqual(expected, actual, "One Range");


            actual = BasePattern.CreatePattern("[.,;:?!A-Za-z][xya-zm-wA-M][msabcdm ;xyz]");

            expected = new GroupPattern(true, new BasePattern[] {
                new CharGroupPattern(true, ".,;:?!", new[] { uppercase, lowercase }),
                new CharGroupPattern(true, "xy", new[] { lowercase,
                                                         new CharRangePattern('m', 'w'),
                                                         new CharRangePattern('A', 'M') }),
                new CharGroupPattern(true, "msabcd ;xyz")
            });
            Assert.AreEqual(expected, actual);
        }
コード例 #13
0
        public void Ranges()
        {
            BasePattern actual   = BasePattern.CreatePattern("[A-Z]");
            BasePattern expected = new GroupPattern(true, new BasePattern[] { new CharGroupPattern(true, new[] { uppercase }) });

            Assert.AreEqual(expected, actual, "One Range");


            actual = BasePattern.CreatePattern("[A-Z][a-z][0-9][a-zA-Z][A-Za-z0-9][a-zm-wA-M]");

            expected = new GroupPattern(true, new BasePattern[] {
                new CharGroupPattern(true, new[] { uppercase }),
                new CharGroupPattern(true, new[] { lowercase }),
                new CharGroupPattern(true, new[] { digits }),
                new CharGroupPattern(true, new[] { lowercase, uppercase }),
                new CharGroupPattern(true, new[] { uppercase, lowercase, digits }),
                new CharGroupPattern(true, new[] { lowercase,
                                                   new CharRangePattern('m', 'w'),
                                                   new CharRangePattern('A', 'M') })
            });

            Assert.AreEqual(expected, actual, "Many Ranges");
        }