public static bool Accept(this ParserContext context, string expected, bool caseSensitive, out SourceLocation? errorLocation, out char? errorChar) {
     errorLocation = null;
     errorChar = null;
     using (context.StartTemporaryBuffer()) {
         for (int i = 0; i < expected.Length; i++) {
             if (CharsEqual(expected[i], context.CurrentCharacter, caseSensitive)) {
                 context.AcceptCurrent();
             }
             else {
                 errorLocation = context.CurrentLocation;
                 errorChar = context.CurrentCharacter;
                 context.RejectTemporaryBuffer();
                 return false;
             }
         }
         context.AcceptTemporaryBuffer();
     }
     return true;
 }
        public static void AcceptLine(this ParserContext context, bool includeNewLineSequence) {
            context.AcceptUntil('\r', '\n');
            if (!includeNewLineSequence) {
                return;
            }

            if (context.CurrentCharacter == '\r') {
                context.AcceptCurrent();
                if (context.CurrentCharacter == '\n') {
                    context.AcceptCurrent();
                }
            }
            else if (context.CurrentCharacter == '\n') {
                context.AcceptCurrent();
            }
        }
 public static void AcceptCharacters(this ParserContext context, int number) {
     for (int i = 0; i < number; i++) {
         context.AcceptCurrent();
     }
 }
 public static void AcceptNewLine(this ParserContext context) {
     if (context.CurrentCharacter == '\n') {
         context.AcceptCurrent();
     }
     else if (context.CurrentCharacter == '\r') {
         context.AcceptCurrent();
         if (context.CurrentCharacter == '\n') {
             context.AcceptCurrent();
         }
     }
 }
 public static string AcceptUntil(this ParserContext context, SourceLocation location) {
     var builder = new StringBuilder();
     while (context.CurrentLocation < location) {
         builder.Append(context.AcceptCurrent());
     }
     return builder.ToString();
 }