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))); }
public AstGroupNode(IEnumerable <AstNodeBase> values, QuantifierBase quantifier, Range range) : base(values, range) { Quantifier = quantifier; }