1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
|
--- JsDocColoringLexer.java
+++ JsDocColoringLexer.java.patched
@@ -544,7 +545,7 @@
* Returns the text matched by the current regular expression.
*/
public final String yytext() {
- return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead );
+ return input.readText().toString();
}
@@ -560,7 +561,7 @@
* @return the character at position pos
*/
public final char yycharat(int pos) {
- return zzBuffer[zzStartRead+pos];
+ return input.readText().charAt(pos);
}
@@ -568,7 +569,7 @@
* Returns the length of the matched text region.
*/
public final int yylength() {
- return zzMarkedPos-zzStartRead;
+ return input.readLength();
}
@@ -611,7 +612,7 @@
if ( number > yylength() )
zzScanError(ZZ_PUSHBACK_2BIG);
- zzMarkedPos -= number;
+ input.backup(number);
}
@@ -627,10 +628,7 @@
int zzAction;
// cached fields:
- int zzCurrentPosL;
int zzMarkedPosL;
- int zzEndReadL = zzEndRead;
- char [] zzBufferL = zzBuffer;
char [] zzCMapL = ZZ_CMAP;
int [] zzTransL = ZZ_TRANS;
@@ -644,38 +642,19 @@
zzAction = -1;
- zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
+ int tokenLength = 0;
zzState = ZZ_LEXSTATE[zzLexicalState];
zzForAction: {
while (true) {
-
- if (zzCurrentPosL < zzEndReadL)
- zzInput = zzBufferL[zzCurrentPosL++];
- else if (zzAtEOF) {
+ zzInput = input.read();
+ if(zzInput == LexerInput.EOF) {
zzInput = YYEOF;
break zzForAction;
}
- else {
- // store back cached positions
- zzCurrentPos = zzCurrentPosL;
- zzMarkedPos = zzMarkedPosL;
- boolean eof = zzRefill();
- // get translated positions and possibly new buffer
- zzCurrentPosL = zzCurrentPos;
- zzMarkedPosL = zzMarkedPos;
- zzBufferL = zzBuffer;
- zzEndReadL = zzEndRead;
- if (eof) {
- zzInput = YYEOF;
- break zzForAction;
- }
- else {
- zzInput = zzBufferL[zzCurrentPosL++];
- }
- }
+
int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ];
if (zzNext == -1) break zzForAction;
zzState = zzNext;
@@ -683,7 +662,7 @@
int zzAttributes = zzAttrL[zzState];
if ( (zzAttributes & 1) == 1 ) {
zzAction = zzState;
- zzMarkedPosL = zzCurrentPosL;
+ tokenLength = input.readLength();
if ( (zzAttributes & 8) == 8 ) break zzForAction;
}
@@ -691,7 +670,9 @@
}
// store back cached position
- zzMarkedPos = zzMarkedPosL;
+ if(zzInput != YYEOF) {
+ input.backup(input.readLength() - tokenLength);
+ }
switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
case 5:
|