private static List <Identifier> GetIdentifiers(Identifier cur, List <IdentifierPartTemplate> templates, DebuggerOperations debuggerOperations) { if (templates.Count == 0) { return(new List <Identifier> { cur }); } var head = templates.FirstOrDefault(); Debug.Assert(head != null, nameof(head) + " != null"); int begin = GetNumber(head.BeginTemplate ?? "", cur, debuggerOperations, $"Begin range of index {head.Name} in {cur.Name}"); int end = GetNumber(head.EndTemplate ?? "", cur, debuggerOperations, $"End range of {head.Name} index in {cur.Name}"); var res = new List <Identifier>(); for (int i = begin; i < end; i++) { var part = new IdentifierPart(head.Name, i); var partRes = GetIdentifiers(cur.AddIdentifierPart(part), templates.Skip(1).ToList(), debuggerOperations); res.AddRange(partRes); } return(res); }
public Identifier AddIdentifierPart(IdentifierPart part) { var list = new List <IdentifierPart>(IdentifierParts) { part }; return(new Identifier(Name, list)); }