Esempio n. 1
0
        public IEnumerable<int> GetPositions(int position, RegexBlock block)
        {
            var zeroOrOneBlock = block as ZeroOrOneBlock;
            if (zeroOrOneBlock != null)
                return GetPositionsFromZeroOrOneBlock(position, zeroOrOneBlock);

            var zeroOrMoreBlock = block as ZeroOrMoreBlock;
            if (zeroOrMoreBlock != null)
                return GetPositionsFromZeroOrMoreBlock(position, zeroOrMoreBlock);

            var oneOrMoreBlock = block as OneOrMoreBlock;
            if (oneOrMoreBlock != null)
                return GetPositionsFromOneOrMoreBlock(position, oneOrMoreBlock);

            var orGroupBlock = block as OrGroupBlock;
            if (orGroupBlock != null)
                return GetPositionsFromOrGroupBlock(position, orGroupBlock);

            var andGroupBlock = block as AndGroupBlock;
            if (andGroupBlock != null)
                return GetPositionsFromAndGroupBlock(position, andGroupBlock);

            var visitor = new CheckerRegexVisitor(position, _input, _groupValues);
            return visitor.GetPositions(block);
        }
Esempio n. 2
0
 /// <summary>
 /// Search for and process all object blocks in the file.
 /// </summary>
 /// <returns></returns>
 private IEnumerable <Block> ProcessBlocks()
 {
     // process found block strings
     foreach (Match match in RegexBlock.Matches(Text))
     {
         yield return(new Block(this,
                                TextIndex.Skip(match.Index).Take(match.Length).ToList(),
                                Text.LineFromPosition(match.Index), match.Value));
     }
 }
Esempio n. 3
0
 public IEnumerable<int> GetPositions(RegexBlock block)
 {
     var enumerable = Visit(block) as IEnumerable<int>;
     Contract.Assert(enumerable != null);
     return enumerable;
 }
 private void CheckVisitorResult(BuilderRegexVisitor visitor, RegexBlock block, IEnumerable<string> expectedLines)
 {
     visitor.Visit(block);
     var lines = visitor.Result;
     CollectionAssert.AreEquivalent(expectedLines.ToList(), lines.ToList());
 }
Esempio n. 5
0
 public void PushBlock(RegexBlock block)
 {
     _blocks.Push(block);
 }
Esempio n. 6
0
        protected object Visit(RegexBlock block)
        {
            var textBlock = block as TextBlock;
            if (textBlock != null)
            {
                return VisitTextBlock(textBlock);
            }

            var anyCharacterBlock = block as AnyCharacterBlock;
            if (anyCharacterBlock != null)
            {
                return VisitAnyCharacterBlock(anyCharacterBlock);
            }

            var inclusiveSetBlock = block as InclusiveSetBlock;
            if (inclusiveSetBlock != null)
            {
                return VisitInclusiveSetBlock(inclusiveSetBlock);
            }

            var exclusiveSetBlock = block as ExclusiveSetBlock;
            if (exclusiveSetBlock != null)
            {
                return VisitExclusiveSetBlock(exclusiveSetBlock);
            }

            var zeroOrOneBlock = block as ZeroOrOneBlock;
            if (zeroOrOneBlock != null)
            {
                return VisitZeroOrOneBlock(zeroOrOneBlock);
            }

            var zeroOrMoreBlock = block as ZeroOrMoreBlock;
            if (zeroOrMoreBlock != null)
            {
                return VisitZeroOrMoreBlock(zeroOrMoreBlock);
            }

            var oneOrMoreBlock = block as OneOrMoreBlock;
            if (oneOrMoreBlock != null)
            {
                return VisitOneOrMoreBlock(oneOrMoreBlock);
            }

            var orGroupBlock = block as OrGroupBlock;
            if (orGroupBlock != null)
            {
                return VisitOrGroupBlock(orGroupBlock);
            }

            var andGroupBlock = block as AndGroupBlock;
            if (andGroupBlock != null)
            {
                return VisitAndGroupBlock(andGroupBlock);
            }

            var backreferenceBlock = block as BackreferenceBlock;
            if (backreferenceBlock != null)
            {
                return VisitBackreferenceBlock(backreferenceBlock);
            }

            return block;
        }
Esempio n. 7
0
 public ZeroOrOneBlock(RegexBlock innerBlock)
     : base(innerBlock)
 {
 }
Esempio n. 8
0
 private IEnumerable<int> GetPositionsFromBlock(int position, RegexBlock block)
 {
     foreach (var nextPosition in GetPositions(position, block))
     {
         yield return nextPosition;
         foreach (var nestedNextPosition in GetPositionsFromBlock(nextPosition, block))
         {
             yield return nestedNextPosition;
         }
     }
 }
Esempio n. 9
0
 public QuantifierBlock(RegexBlock innerBlock)
 {
     InnerBlock = innerBlock;
 }
Esempio n. 10
0
 public OneOrMoreBlock(RegexBlock innerBlock)
     : base(innerBlock)
 {
 }
Esempio n. 11
0
 private static bool IsCharacterContainer(RegexBlock block)
 {
     return block is TextBlock || block is SetBlock;
 }
Esempio n. 12
0
        private static RegexBlock AddCharacter(RegexBlock container, char c)
        {
            var textBlock = container as TextBlock;
            if (textBlock != null)
            {
                return new TextBlock(textBlock.Text + c);
            }

            var inclusiveSetBlock = container as InclusiveSetBlock;
            if (inclusiveSetBlock != null)
            {
                return new InclusiveSetBlock(inclusiveSetBlock.Characters + c);
            }

            var exclusiveSetBlock = container as ExclusiveSetBlock;
            if (exclusiveSetBlock != null)
            {
                return new ExclusiveSetBlock(exclusiveSetBlock.Characters + c);
            }

            return null;
        }