public static Token Parse(Token parent, Scope scope, PreprocessorToken insertToken) { var ret = new InsertToken(parent, scope); var scopeIndent = scope.Indent(); var tokens = new List<Token>(); tokens.Add(ret._startToken = new InsertBoundaryToken(ret, scope, insertToken.Span, true)); while (true) { var token = scope.File.ParseToken(parent, scopeIndent); if (token == null) break; if (token.GetType() == typeof(PreprocessorToken) && token.Text == "#endinsert") { tokens.Add(ret._endToken = new InsertBoundaryToken(ret, scope, token.Span, false)); break; } else tokens.Add(token); } ret._tokens = tokens.ToArray(); ret.Span = new Span(ret._tokens.First().Span.Start, ret._tokens.Last().Span.End); return ret; }
public InsertBoundaryToken(InsertToken parent, Scope scope, Span span, bool start) : base(parent, scope, span) { _start = start; }