@@ -459,6 +459,7 @@ private Token encapsulatedTokenLexer(Token tkn, int c) throws IOException {
459459 // assert c == delimiter;
460460 c = in .read ();
461461 while (!tkn .isReady ) {
462+ boolean skipRead = false ;
462463 if (c == strategy .getEncapsulator () || c == '\\' ) {
463464 // check lookahead
464465 if (in .lookAhead () == strategy .getEncapsulator ()) {
@@ -483,26 +484,26 @@ private Token encapsulatedTokenLexer(Token tkn, int c) throws IOException {
483484 } else {
484485 // token finish mark (encapsulator) reached: ignore whitespace till delimiter
485486 while (!tkn .isReady ) {
486- int n = in .lookAhead ();
487- if (n == strategy .getDelimiter ()) {
487+ c = in .read ();
488+ if (c == strategy .getDelimiter ()) {
488489 tkn .type = TT_TOKEN ;
489490 tkn .isReady = true ;
490- } else if (isEndOfFile (n )) {
491+ } else if (isEndOfFile (c )) {
491492 tkn .type = TT_EOF ;
492493 tkn .isReady = true ;
493- } else if (isEndOfLine (n )) {
494+ } else if (isEndOfLine (c )) {
494495 // ok eo token reached
495496 tkn .type = TT_EORECORD ;
496497 tkn .isReady = true ;
497- } else if (!isWhitespace (n )) {
498- // error invalid char between token and next delimiter
499- throw new IOException (
500- "(line " + getLineNumber ()
501- + ") invalid char between encapsualted token end delimiter"
502- );
503- }
504- c = in .read ();
498+ } else if (!isWhitespace (c )) {
499+ // error invalid char between token and next delimiter
500+ throw new IOException (
501+ "(line " + getLineNumber ()
502+ + ") invalid char between encapsulated token end delimiter"
503+ );
504+ }
505505 }
506+ skipRead = true ;
506507 }
507508 } else if (isEndOfFile (c )) {
508509 // error condition (end of file before end of token)
@@ -515,8 +516,8 @@ private Token encapsulatedTokenLexer(Token tkn, int c) throws IOException {
515516 tkn .content .append ((char ) c );
516517 }
517518 // get the next char
518- if (!tkn .isReady ) {
519- c = in .read ();
519+ if (!tkn .isReady && ! skipRead ) {
520+ c = in .read ();
520521 }
521522 }
522523 return tkn ;
0 commit comments