private ArgumentsSectionSyntax ScanArgumentsSection( ElementsCursor <SyntaxToken> cursor, List <SyntaxError> errors, CancellationToken cancellation, IReadOnlyList <string> commandName) { var arguments = new List <ArgumentSyntax>(); bool operandsOnly = false; int operandIndex = 0; while (HasMoreTokens(cursor) && !cancellation.IsCancellationRequested) { var token = cursor.Peek(); if (!operandsOnly && IsEndOfOptions(token, cursor.Peek(1))) { cursor.MoveNext(); var endOfOptions = new EndOfOptionsSyntax(token); arguments.Add(endOfOptions); operandsOnly = true; } else if (!operandsOnly && IsOptionName(token, cursor.Peek(1))) { var nameMarker = token; var name = cursor.Peek(1); cursor.MoveNext(2); if (IsStackedOption(nameMarker, name)) { ScanStackedOptions(cursor, errors, nameMarker, name, commandName, arguments); } else { var option = ScanOption(cursor, errors, nameMarker, name, commandName); arguments.Add(option); } } else { var operand = ScanOperand(cursor, errors, operandIndex); arguments.Add(operand); operandIndex++; } } cancellation.ThrowIfCancellationRequested(); if (arguments.Count == 0) { return(null); } return(new ArgumentsSectionSyntax(arguments)); }
public bool VisitEndOfOptions(EndOfOptionsSyntax endOfOptions, CommandLineHighlightingVisitorParams <TStyle> param) { AddSpans(param.Spans, endOfOptions.Token, CommandLineStyleName.EndOfOptions, param.Palette); return(false); }