RegexParser.Transforms.BaseASTTransform.Transform C# (CSharp) 메소드

Transform() 공개 메소드

public Transform ( BasePattern pattern ) : BasePattern
pattern RegexParser.Patterns.BasePattern
리턴 RegexParser.Patterns.BasePattern
        public virtual BasePattern Transform(BasePattern pattern)
        {
            // The Identity transform

            switch (pattern.Type)
            {
                case PatternType.Group:
                    GroupPattern group = (GroupPattern)pattern;

                    BasePattern[] newChildren = group.Patterns
                                                     .Select(p => Transform(p))
                                                     .Where(IsNotEmpty)
                                                     .ToArray();

                    return CreateGroupOrSingleton(group.IsCapturing, newChildren);

                case PatternType.Quantifier:
                    QuantifierPattern quant = (QuantifierPattern)pattern;
                    BasePattern newChild = Transform(quant.ChildPattern);

                    if (IsNotEmpty(newChild))
                        return new QuantifierPattern(newChild, quant.MinOccurrences, quant.MaxOccurrences, quant.IsGreedy);
                    else
                        return GroupPattern.Empty;

                case PatternType.Alternation:
                    return new AlternationPattern(((AlternationPattern)pattern).Alternatives
                                                                               .Select(a => Transform(a)));

                default:
                    return pattern;
            }
        }

Usage Example

예제 #1
0
 private static BasePattern doTransform(BasePattern pattern, BaseASTTransform transform)
 {
     return transform.Transform(pattern);
 }