Пример #1
0
        private static AstGroupNode CreateGroup(IParseTree node, ORegexAstFactoryArgs <TValue> args)
        {
            var predicate = node.GetChild(0).GetText();
            var inner     = Create(node.GetChild(1), args);

            var children = new List <AstNodeBase>();

            if (inner is AstConcatNode)
            {
                children.AddRange(inner.GetChildren());
            }
            else
            {
                children.Add(inner);
            }

            QuantifierBase quantifier = null;

            if (CaptureQuantifier.IsCapture(predicate))
            {
                var cq = new CaptureQuantifier(predicate, args.CaptureGroupNames.Count);
                args.CaptureGroupNames.Add(cq.CaptureName);
                quantifier = cq;
            }
            else if (LookAheadQuantifier.IsLook(predicate))
            {
                quantifier = new LookAheadQuantifier(predicate);
            }
            return(new AstGroupNode(children, quantifier, new Range(node)));
        }
Пример #2
0
 public AstGroupNode(IEnumerable <AstNodeBase> values, QuantifierBase quantifier, Range range)
     : base(values, range)
 {
     Quantifier = quantifier;
 }