From c98d7bc340423a15ee816141066ec9244d3ea2f2 Mon Sep 17 00:00:00 2001 From: Inderjeet Singh Date: Wed, 29 Oct 2008 23:31:13 +0000 Subject: [PATCH] Fixed issue 66 to allow escaped slash ( \/) as a valid Json escaped character. Changed Gson version to 1.2.3. --- gson/pom.xml | 2 +- .../main/java/com/google/gson/JsonParser.java | 888 ++++---- .../com/google/gson/JsonParserConstants.java | 120 +- .../google/gson/JsonParserTokenManager.java | 1958 ++++++++--------- .../com/google/gson/StringUnmarshaller.java | 3 + gson/src/main/javacc/JsonParser.jj | 2 +- .../gson/functional/ConcurrencyTest.java | 6 +- .../google/gson/functional/StringTest.java | 7 + 8 files changed, 1498 insertions(+), 1488 deletions(-) diff --git a/gson/pom.xml b/gson/pom.xml index 096e3171..0096988d 100644 --- a/gson/pom.xml +++ b/gson/pom.xml @@ -4,7 +4,7 @@ com.google.code.gson gson jar - 1.2.2 + 1.2.3 2008 Gson http://code.google.com/p/google-gson/ diff --git a/gson/src/main/java/com/google/gson/JsonParser.java b/gson/src/main/java/com/google/gson/JsonParser.java index 036c924e..7dd9d7c2 100755 --- a/gson/src/main/java/com/google/gson/JsonParser.java +++ b/gson/src/main/java/com/google/gson/JsonParser.java @@ -1,444 +1,444 @@ -/* Generated By:JavaCC: Do not edit this line. JsonParser.java */ -package com.google.gson; - -@SuppressWarnings("all") -final class JsonParser implements JsonParserConstants { - - final public JsonElement parse() throws ParseException { - JsonElement json = null; - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case 20: - json = JsonObject(); - break; - case 25: - json = JsonArray(); - break; - case DIGITS: - case SINGLE_QUOTE_LITERAL: - case DOUBLE_QUOTE_LITERAL: - case 27: - case 28: - case 29: - json = JsonPrimitive(); - break; - case 22: - json = JsonNull(); - break; - default: - jj_la1[0] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - {if (true) return json;} - throw new Error("Missing return statement in function"); - } - - final private JsonObject JsonObject() throws ParseException { - JsonObject o = new JsonObject(); - jj_consume_token(20); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case SINGLE_QUOTE_LITERAL: - case DOUBLE_QUOTE_LITERAL: - Members(o); - break; - default: - jj_la1[1] = jj_gen; - ; - } - jj_consume_token(21); - {if (true) return o;} - throw new Error("Missing return statement in function"); - } - - final private JsonNull JsonNull() throws ParseException { - JsonNull json = JsonNull.INSTANCE; - jj_consume_token(22); - {if (true) return json;} - throw new Error("Missing return statement in function"); - } - - final private void Members(JsonObject o) throws ParseException { - Pair(o); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case 23: - jj_consume_token(23); - Members(o); - break; - default: - jj_la1[2] = jj_gen; - ; - } - } - - final private void Pair(JsonObject o) throws ParseException { - JsonPrimitive property; - JsonElement value; - property = JsonString(); - jj_consume_token(24); - value = JsonValue(); - o.add(property.getAsString(), value); - } - - final private JsonArray JsonArray() throws ParseException { - JsonArray array = new JsonArray(); - jj_consume_token(25); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case DIGITS: - case SINGLE_QUOTE_LITERAL: - case DOUBLE_QUOTE_LITERAL: - case 20: - case 22: - case 25: - case 27: - case 28: - case 29: - Elements(array); - break; - default: - jj_la1[3] = jj_gen; - ; - } - jj_consume_token(26); - array.reverse(); - {if (true) return array;} - throw new Error("Missing return statement in function"); - } - - final private void Elements(JsonArray array) throws ParseException { - JsonElement element; - element = JsonValue(); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case 23: - jj_consume_token(23); - Elements(array); - break; - default: - jj_la1[4] = jj_gen; - ; - } - array.add(element); - } - - final private JsonElement JsonValue() throws ParseException { - JsonElement o = null; - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case SINGLE_QUOTE_LITERAL: - case DOUBLE_QUOTE_LITERAL: - o = JsonString(); - break; - case DIGITS: - case 29: - o = JsonNumber(); - break; - case 20: - o = JsonObject(); - break; - case 25: - o = JsonArray(); - break; - case 27: - jj_consume_token(27); - o = new JsonPrimitive(true); - break; - case 28: - jj_consume_token(28); - o = new JsonPrimitive(false); - break; - case 22: - jj_consume_token(22); - break; - default: - jj_la1[5] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - {if (true) return o;} - throw new Error("Missing return statement in function"); - } - - final private JsonPrimitive JsonPrimitive() throws ParseException { - JsonPrimitive value; - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case SINGLE_QUOTE_LITERAL: - case DOUBLE_QUOTE_LITERAL: - value = JsonString(); - {if (true) return value;} - break; - case DIGITS: - case 29: - value = JsonNumber(); - {if (true) return value;} - break; - case 27: - jj_consume_token(27); - {if (true) return new JsonPrimitive(true);} - break; - case 28: - jj_consume_token(28); - {if (true) return new JsonPrimitive(false);} - break; - default: - jj_la1[6] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - throw new Error("Missing return statement in function"); - } - - final private JsonPrimitive JsonNumber() throws ParseException { - String intpart = null, - fracpart = null, - exppart = null; - intpart = JsonInt(); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case 30: - fracpart = JsonFrac(); - break; - default: - jj_la1[7] = jj_gen; - ; - } - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case E: - exppart = JsonExp(); - break; - default: - jj_la1[8] = jj_gen; - ; - } - Number n; - if (exppart != null) { - n = new java.math.BigDecimal(intpart + fracpart + exppart); - } else if (fracpart != null) { - n = new Double(intpart + fracpart); - } else { - // See if the number fits in an integer, or long - // Use BigInteger only if it is big enough. - if (intpart.length() < 10) { - n = new Integer(intpart); - } else if (intpart.length() < 19) { - n = new Long(intpart); - } else { - n = new java.math.BigInteger(intpart); - } - } - {if (true) return new JsonPrimitive(n);} - throw new Error("Missing return statement in function"); - } - - final private String JsonInt() throws ParseException { - String digits; - boolean negative = false; - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case 29: - jj_consume_token(29); - negative = true; - break; - default: - jj_la1[9] = jj_gen; - ; - } - digits = Digits(); - if(negative) - {if (true) return "-" + digits;} - {if (true) return digits;} - throw new Error("Missing return statement in function"); - } - - final private String JsonFrac() throws ParseException { - String digits; - jj_consume_token(30); - digits = Digits(); - {if (true) return "." + digits;} - throw new Error("Missing return statement in function"); - } - - final private String JsonExp() throws ParseException { - Token t; - String digits; - t = jj_consume_token(E); - digits = Digits(); - {if (true) return t.image + digits;} - throw new Error("Missing return statement in function"); - } - - final private String Digits() throws ParseException { - Token t; - t = jj_consume_token(DIGITS); - {if (true) return t.image;} - throw new Error("Missing return statement in function"); - } - - final private JsonPrimitive JsonString() throws ParseException { - Token t; - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case SINGLE_QUOTE_LITERAL: - t = jj_consume_token(SINGLE_QUOTE_LITERAL); - break; - case DOUBLE_QUOTE_LITERAL: - t = jj_consume_token(DOUBLE_QUOTE_LITERAL); - break; - default: - jj_la1[10] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - String value = StringUnmarshaller.unmarshall(t.image); - {if (true) return new JsonPrimitive(value);} - throw new Error("Missing return statement in function"); - } - - public JsonParserTokenManager token_source; - SimpleCharStream jj_input_stream; - public Token token, jj_nt; - private int jj_ntk; - private int jj_gen; - final private int[] jj_la1 = new int[11]; - static private int[] jj_la1_0; - static { - jj_la1_0(); - } - private static void jj_la1_0() { - jj_la1_0 = new int[] {0x3a500c40,0xc00,0x800000,0x3a500c40,0x800000,0x3a500c40,0x38000c40,0x40000000,0x20,0x20000000,0xc00,}; - } - - public JsonParser(java.io.InputStream stream) { - this(stream, null); - } - public JsonParser(java.io.InputStream stream, String encoding) { - try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); } - token_source = new JsonParserTokenManager(jj_input_stream); - token = new Token(); - jj_ntk = -1; - jj_gen = 0; - for (int i = 0; i < 11; i++) jj_la1[i] = -1; - } - - public void ReInit(java.io.InputStream stream) { - ReInit(stream, null); - } - public void ReInit(java.io.InputStream stream, String encoding) { - try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); } - token_source.ReInit(jj_input_stream); - token = new Token(); - jj_ntk = -1; - jj_gen = 0; - for (int i = 0; i < 11; i++) jj_la1[i] = -1; - } - - public JsonParser(java.io.Reader stream) { - jj_input_stream = new SimpleCharStream(stream, 1, 1); - token_source = new JsonParserTokenManager(jj_input_stream); - token = new Token(); - jj_ntk = -1; - jj_gen = 0; - for (int i = 0; i < 11; i++) jj_la1[i] = -1; - } - - public void ReInit(java.io.Reader stream) { - jj_input_stream.ReInit(stream, 1, 1); - token_source.ReInit(jj_input_stream); - token = new Token(); - jj_ntk = -1; - jj_gen = 0; - for (int i = 0; i < 11; i++) jj_la1[i] = -1; - } - - public JsonParser(JsonParserTokenManager tm) { - token_source = tm; - token = new Token(); - jj_ntk = -1; - jj_gen = 0; - for (int i = 0; i < 11; i++) jj_la1[i] = -1; - } - - public void ReInit(JsonParserTokenManager tm) { - token_source = tm; - token = new Token(); - jj_ntk = -1; - jj_gen = 0; - for (int i = 0; i < 11; i++) jj_la1[i] = -1; - } - - final private Token jj_consume_token(int kind) throws ParseException { - Token oldToken; - if ((oldToken = token).next != null) token = token.next; - else token = token.next = token_source.getNextToken(); - jj_ntk = -1; - if (token.kind == kind) { - jj_gen++; - return token; - } - token = oldToken; - jj_kind = kind; - throw generateParseException(); - } - - final public Token getNextToken() { - if (token.next != null) token = token.next; - else token = token.next = token_source.getNextToken(); - jj_ntk = -1; - jj_gen++; - return token; - } - - final public Token getToken(int index) { - Token t = token; - for (int i = 0; i < index; i++) { - if (t.next != null) t = t.next; - else t = t.next = token_source.getNextToken(); - } - return t; - } - - final private int jj_ntk() { - if ((jj_nt=token.next) == null) - return (jj_ntk = (token.next=token_source.getNextToken()).kind); - else - return (jj_ntk = jj_nt.kind); - } - - private java.util.Vector jj_expentries = new java.util.Vector(); - private int[] jj_expentry; - private int jj_kind = -1; - - public ParseException generateParseException() { - jj_expentries.removeAllElements(); - boolean[] la1tokens = new boolean[31]; - for (int i = 0; i < 31; i++) { - la1tokens[i] = false; - } - if (jj_kind >= 0) { - la1tokens[jj_kind] = true; - jj_kind = -1; - } - for (int i = 0; i < 11; i++) { - if (jj_la1[i] == jj_gen) { - for (int j = 0; j < 32; j++) { - if ((jj_la1_0[i] & (1<= 0) { + la1tokens[jj_kind] = true; + jj_kind = -1; + } + for (int i = 0; i < 11; i++) { + if (jj_la1[i] == jj_gen) { + for (int j = 0; j < 32; j++) { + if ((jj_la1_0[i] & (1<", - "\" \"", - "\"\\t\"", - "\"\\n\"", - "\"\\r\"", - "", - "", - "", - "", - "", - "", - "", - "\"\\\"\"", - "\"\\\\\"", - "", - "", - "", - "\"u\"", - "", - "", - "\"{\"", - "\"}\"", - "\"null\"", - "\",\"", - "\":\"", - "\"[\"", - "\"]\"", - "\"true\"", - "\"false\"", - "\"-\"", - "\".\"", - }; - -} +/* Generated By:JavaCC: Do not edit this line. JsonParserConstants.java */ +package com.google.gson; + +interface JsonParserConstants { + + int EOF = 0; + int E = 5; + int DIGITS = 6; + int HEX_CHAR = 7; + int UNICODE_CHAR = 8; + int ESCAPE_CHAR = 9; + int SINGLE_QUOTE_LITERAL = 10; + int DOUBLE_QUOTE_LITERAL = 11; + int QUOTE = 12; + int ENDQUOTE = 14; + int CHAR = 15; + int CNTRL_ESC = 16; + int HEX = 18; + int HEX_ESC = 19; + + int DEFAULT = 0; + int STRING_STATE = 1; + int ESC_STATE = 2; + int HEX_STATE = 3; + + String[] tokenImage = { + "", + "\" \"", + "\"\\t\"", + "\"\\n\"", + "\"\\r\"", + "", + "", + "", + "", + "", + "", + "", + "\"\\\"\"", + "\"\\\\\"", + "", + "", + "", + "\"u\"", + "", + "", + "\"{\"", + "\"}\"", + "\"null\"", + "\",\"", + "\":\"", + "\"[\"", + "\"]\"", + "\"true\"", + "\"false\"", + "\"-\"", + "\".\"", + }; + +} diff --git a/gson/src/main/java/com/google/gson/JsonParserTokenManager.java b/gson/src/main/java/com/google/gson/JsonParserTokenManager.java index 86a52418..35e3789d 100755 --- a/gson/src/main/java/com/google/gson/JsonParserTokenManager.java +++ b/gson/src/main/java/com/google/gson/JsonParserTokenManager.java @@ -1,1004 +1,1004 @@ -/* Generated By:JavaCC: Do not edit this line. JsonParserTokenManager.java */ -package com.google.gson; - -@SuppressWarnings("all") -final class JsonParserTokenManager implements JsonParserConstants -{ - public java.io.PrintStream debugStream = System.out; - public void setDebugStream(java.io.PrintStream ds) { debugStream = ds; } -private final int jjMoveStringLiteralDfa0_3() -{ - return jjMoveNfa_3(0, 0); -} -private final void jjCheckNAdd(int state) -{ - if (jjrounds[state] != jjround) - { - jjstateSet[jjnewStateCnt++] = state; - jjrounds[state] = jjround; - } -} -private final void jjAddStates(int start, int end) -{ - do { - jjstateSet[jjnewStateCnt++] = jjnextStates[start]; - } while (start++ != end); -} -private final void jjCheckNAddTwoStates(int state1, int state2) -{ - jjCheckNAdd(state1); - jjCheckNAdd(state2); -} -private final void jjCheckNAddStates(int start, int end) -{ - do { - jjCheckNAdd(jjnextStates[start]); - } while (start++ != end); -} -private final void jjCheckNAddStates(int start) -{ - jjCheckNAdd(jjnextStates[start]); - jjCheckNAdd(jjnextStates[start + 1]); -} -private final int jjMoveNfa_3(int startState, int curPos) -{ - int[] nextStates; - int startsAt = 0; - jjnewStateCnt = 4; - int i = 1; - jjstateSet[0] = startState; - int j, kind = 0x7fffffff; - for (;;) - { - if (++jjround == 0x7fffffff) - ReInitRounds(); - if (curChar < 64) - { - long l = 1L << curChar; - MatchLoop: do - { - switch(jjstateSet[--i]) - { - case 0: - if ((0x3ff000000000000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 1; - break; - case 1: - if ((0x3ff000000000000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 2; - break; - case 2: - if ((0x3ff000000000000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 3; - break; - case 3: - if ((0x3ff000000000000L & l) != 0L && kind > 19) - kind = 19; - break; - default : break; - } - } while(i != startsAt); - } - else if (curChar < 128) - { - long l = 1L << (curChar & 077); - MatchLoop: do - { - switch(jjstateSet[--i]) - { - case 0: - if ((0x7e0000007eL & l) != 0L) - jjstateSet[jjnewStateCnt++] = 1; - break; - case 1: - if ((0x7e0000007eL & l) != 0L) - jjstateSet[jjnewStateCnt++] = 2; - break; - case 2: - if ((0x7e0000007eL & l) != 0L) - jjstateSet[jjnewStateCnt++] = 3; - break; - case 3: - if ((0x7e0000007eL & l) != 0L && kind > 19) - kind = 19; - break; - default : break; - } - } while(i != startsAt); - } - else - { - int hiByte = (int)(curChar >> 8); - int i1 = hiByte >> 6; - long l1 = 1L << (hiByte & 077); - int i2 = (curChar & 0xff) >> 6; - long l2 = 1L << (curChar & 077); - MatchLoop: do - { - switch(jjstateSet[--i]) - { - default : break; - } - } while(i != startsAt); - } - if (kind != 0x7fffffff) - { - jjmatchedKind = kind; - jjmatchedPos = curPos; - kind = 0x7fffffff; - } - ++curPos; - if ((i = jjnewStateCnt) == (startsAt = 4 - (jjnewStateCnt = startsAt))) - return curPos; - try { curChar = input_stream.readChar(); } - catch(java.io.IOException e) { return curPos; } - } -} +/* Generated By:JavaCC: Do not edit this line. JsonParserTokenManager.java */ +package com.google.gson; + +@SuppressWarnings("all") +final class JsonParserTokenManager implements JsonParserConstants +{ + public java.io.PrintStream debugStream = System.out; + public void setDebugStream(java.io.PrintStream ds) { debugStream = ds; } +private final int jjMoveStringLiteralDfa0_3() +{ + return jjMoveNfa_3(0, 0); +} +private final void jjCheckNAdd(int state) +{ + if (jjrounds[state] != jjround) + { + jjstateSet[jjnewStateCnt++] = state; + jjrounds[state] = jjround; + } +} +private final void jjAddStates(int start, int end) +{ + do { + jjstateSet[jjnewStateCnt++] = jjnextStates[start]; + } while (start++ != end); +} +private final void jjCheckNAddTwoStates(int state1, int state2) +{ + jjCheckNAdd(state1); + jjCheckNAdd(state2); +} +private final void jjCheckNAddStates(int start, int end) +{ + do { + jjCheckNAdd(jjnextStates[start]); + } while (start++ != end); +} +private final void jjCheckNAddStates(int start) +{ + jjCheckNAdd(jjnextStates[start]); + jjCheckNAdd(jjnextStates[start + 1]); +} +private final int jjMoveNfa_3(int startState, int curPos) +{ + int[] nextStates; + int startsAt = 0; + jjnewStateCnt = 4; + int i = 1; + jjstateSet[0] = startState; + int j, kind = 0x7fffffff; + for (;;) + { + if (++jjround == 0x7fffffff) + ReInitRounds(); + if (curChar < 64) + { + long l = 1L << curChar; + MatchLoop: do + { + switch(jjstateSet[--i]) + { + case 0: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 1; + break; + case 1: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 2; + break; + case 2: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 3; + break; + case 3: + if ((0x3ff000000000000L & l) != 0L && kind > 19) + kind = 19; + break; + default : break; + } + } while(i != startsAt); + } + else if (curChar < 128) + { + long l = 1L << (curChar & 077); + MatchLoop: do + { + switch(jjstateSet[--i]) + { + case 0: + if ((0x7e0000007eL & l) != 0L) + jjstateSet[jjnewStateCnt++] = 1; + break; + case 1: + if ((0x7e0000007eL & l) != 0L) + jjstateSet[jjnewStateCnt++] = 2; + break; + case 2: + if ((0x7e0000007eL & l) != 0L) + jjstateSet[jjnewStateCnt++] = 3; + break; + case 3: + if ((0x7e0000007eL & l) != 0L && kind > 19) + kind = 19; + break; + default : break; + } + } while(i != startsAt); + } + else + { + int hiByte = (int)(curChar >> 8); + int i1 = hiByte >> 6; + long l1 = 1L << (hiByte & 077); + int i2 = (curChar & 0xff) >> 6; + long l2 = 1L << (curChar & 077); + MatchLoop: do + { + switch(jjstateSet[--i]) + { + default : break; + } + } while(i != startsAt); + } + if (kind != 0x7fffffff) + { + jjmatchedKind = kind; + jjmatchedPos = curPos; + kind = 0x7fffffff; + } + ++curPos; + if ((i = jjnewStateCnt) == (startsAt = 4 - (jjnewStateCnt = startsAt))) + return curPos; + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { return curPos; } + } +} private final int jjStopStringLiteralDfa_0(int pos, long active0) -{ +{ switch (pos) - { - case 0: - if ((active0 & 0x1000L) != 0L) - return 31; - return -1; - default : - return -1; - } -} + { + case 0: + if ((active0 & 0x1000L) != 0L) + return 31; + return -1; + default : + return -1; + } +} private final int jjStartNfa_0(int pos, long active0) -{ - return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0), pos + 1); -} -private final int jjStopAtPos(int pos, int kind) -{ - jjmatchedKind = kind; - jjmatchedPos = pos; - return pos + 1; -} -private final int jjStartNfaWithStates_0(int pos, int kind, int state) -{ - jjmatchedKind = kind; - jjmatchedPos = pos; - try { curChar = input_stream.readChar(); } - catch(java.io.IOException e) { return pos + 1; } - return jjMoveNfa_0(state, pos + 1); -} -private final int jjMoveStringLiteralDfa0_0() -{ - switch(curChar) - { - case 34: - return jjStartNfaWithStates_0(0, 12, 31); - case 44: - return jjStopAtPos(0, 23); - case 45: - return jjStopAtPos(0, 29); - case 46: - return jjStopAtPos(0, 30); - case 58: - return jjStopAtPos(0, 24); - case 91: - return jjStopAtPos(0, 25); - case 93: - return jjStopAtPos(0, 26); - case 102: - return jjMoveStringLiteralDfa1_0(0x10000000L); - case 110: - return jjMoveStringLiteralDfa1_0(0x400000L); - case 116: - return jjMoveStringLiteralDfa1_0(0x8000000L); - case 123: - return jjStopAtPos(0, 20); - case 125: - return jjStopAtPos(0, 21); - default : - return jjMoveNfa_0(0, 0); - } -} -private final int jjMoveStringLiteralDfa1_0(long active0) -{ - try { curChar = input_stream.readChar(); } - catch(java.io.IOException e) { - jjStopStringLiteralDfa_0(0, active0); - return 1; - } - switch(curChar) - { - case 97: - return jjMoveStringLiteralDfa2_0(active0, 0x10000000L); - case 114: - return jjMoveStringLiteralDfa2_0(active0, 0x8000000L); - case 117: - return jjMoveStringLiteralDfa2_0(active0, 0x400000L); - default : - break; - } - return jjStartNfa_0(0, active0); -} -private final int jjMoveStringLiteralDfa2_0(long old0, long active0) -{ - if (((active0 &= old0)) == 0L) - return jjStartNfa_0(0, old0); - try { curChar = input_stream.readChar(); } - catch(java.io.IOException e) { - jjStopStringLiteralDfa_0(1, active0); - return 2; - } - switch(curChar) - { - case 108: - return jjMoveStringLiteralDfa3_0(active0, 0x10400000L); - case 117: - return jjMoveStringLiteralDfa3_0(active0, 0x8000000L); - default : - break; - } - return jjStartNfa_0(1, active0); -} -private final int jjMoveStringLiteralDfa3_0(long old0, long active0) -{ - if (((active0 &= old0)) == 0L) - return jjStartNfa_0(1, old0); - try { curChar = input_stream.readChar(); } - catch(java.io.IOException e) { - jjStopStringLiteralDfa_0(2, active0); - return 3; - } - switch(curChar) - { - case 101: - if ((active0 & 0x8000000L) != 0L) - return jjStopAtPos(3, 27); - break; - case 108: - if ((active0 & 0x400000L) != 0L) - return jjStopAtPos(3, 22); - break; - case 115: - return jjMoveStringLiteralDfa4_0(active0, 0x10000000L); - default : - break; - } - return jjStartNfa_0(2, active0); -} -private final int jjMoveStringLiteralDfa4_0(long old0, long active0) -{ - if (((active0 &= old0)) == 0L) - return jjStartNfa_0(2, old0); - try { curChar = input_stream.readChar(); } - catch(java.io.IOException e) { - jjStopStringLiteralDfa_0(3, active0); - return 4; - } - switch(curChar) - { - case 101: - if ((active0 & 0x10000000L) != 0L) - return jjStopAtPos(4, 28); - break; - default : - break; - } - return jjStartNfa_0(3, active0); -} +{ + return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0), pos + 1); +} +private final int jjStopAtPos(int pos, int kind) +{ + jjmatchedKind = kind; + jjmatchedPos = pos; + return pos + 1; +} +private final int jjStartNfaWithStates_0(int pos, int kind, int state) +{ + jjmatchedKind = kind; + jjmatchedPos = pos; + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { return pos + 1; } + return jjMoveNfa_0(state, pos + 1); +} +private final int jjMoveStringLiteralDfa0_0() +{ + switch(curChar) + { + case 34: + return jjStartNfaWithStates_0(0, 12, 31); + case 44: + return jjStopAtPos(0, 23); + case 45: + return jjStopAtPos(0, 29); + case 46: + return jjStopAtPos(0, 30); + case 58: + return jjStopAtPos(0, 24); + case 91: + return jjStopAtPos(0, 25); + case 93: + return jjStopAtPos(0, 26); + case 102: + return jjMoveStringLiteralDfa1_0(0x10000000L); + case 110: + return jjMoveStringLiteralDfa1_0(0x400000L); + case 116: + return jjMoveStringLiteralDfa1_0(0x8000000L); + case 123: + return jjStopAtPos(0, 20); + case 125: + return jjStopAtPos(0, 21); + default : + return jjMoveNfa_0(0, 0); + } +} +private final int jjMoveStringLiteralDfa1_0(long active0) +{ + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(0, active0); + return 1; + } + switch(curChar) + { + case 97: + return jjMoveStringLiteralDfa2_0(active0, 0x10000000L); + case 114: + return jjMoveStringLiteralDfa2_0(active0, 0x8000000L); + case 117: + return jjMoveStringLiteralDfa2_0(active0, 0x400000L); + default : + break; + } + return jjStartNfa_0(0, active0); +} +private final int jjMoveStringLiteralDfa2_0(long old0, long active0) +{ + if (((active0 &= old0)) == 0L) + return jjStartNfa_0(0, old0); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(1, active0); + return 2; + } + switch(curChar) + { + case 108: + return jjMoveStringLiteralDfa3_0(active0, 0x10400000L); + case 117: + return jjMoveStringLiteralDfa3_0(active0, 0x8000000L); + default : + break; + } + return jjStartNfa_0(1, active0); +} +private final int jjMoveStringLiteralDfa3_0(long old0, long active0) +{ + if (((active0 &= old0)) == 0L) + return jjStartNfa_0(1, old0); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(2, active0); + return 3; + } + switch(curChar) + { + case 101: + if ((active0 & 0x8000000L) != 0L) + return jjStopAtPos(3, 27); + break; + case 108: + if ((active0 & 0x400000L) != 0L) + return jjStopAtPos(3, 22); + break; + case 115: + return jjMoveStringLiteralDfa4_0(active0, 0x10000000L); + default : + break; + } + return jjStartNfa_0(2, active0); +} +private final int jjMoveStringLiteralDfa4_0(long old0, long active0) +{ + if (((active0 &= old0)) == 0L) + return jjStartNfa_0(2, old0); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(3, active0); + return 4; + } + switch(curChar) + { + case 101: + if ((active0 & 0x10000000L) != 0L) + return jjStopAtPos(4, 28); + break; + default : + break; + } + return jjStartNfa_0(3, active0); +} static final long[] jjbitVec0 = { 0xfffffffffffffffeL, 0xffffffffffffffffL, 0xffffffffffffffffL, 0xffffffffffffffffL -}; +}; static final long[] jjbitVec2 = { 0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL -}; -private final int jjMoveNfa_0(int startState, int curPos) -{ - int[] nextStates; - int startsAt = 0; - jjnewStateCnt = 31; - int i = 1; - jjstateSet[0] = startState; - int j, kind = 0x7fffffff; - for (;;) - { - if (++jjround == 0x7fffffff) - ReInitRounds(); - if (curChar < 64) - { - long l = 1L << curChar; - MatchLoop: do - { - switch(jjstateSet[--i]) - { - case 31: - if ((0xfffffffbffffdbffL & l) != 0L) - jjCheckNAddStates(0, 3); - else if (curChar == 34) - { - if (kind > 11) - kind = 11; - } - break; - case 0: - if ((0x3ff000000000000L & l) != 0L) - { - if (kind > 6) - kind = 6; - jjCheckNAdd(2); - } - else if (curChar == 34) - jjCheckNAddStates(0, 3); - else if (curChar == 39) - jjCheckNAddStates(4, 7); - break; - case 1: - if ((0x280000000000L & l) != 0L && kind > 5) - kind = 5; - break; - case 2: - if ((0x3ff000000000000L & l) == 0L) - break; - if (kind > 6) - kind = 6; - jjCheckNAdd(2); - break; - case 4: - if ((0x3ff000000000000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 5; - break; - case 5: - if ((0x3ff000000000000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 6; - break; - case 6: - if ((0x3ff000000000000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 7; - break; - case 7: - if ((0x3ff000000000000L & l) != 0L && kind > 8) - kind = 8; - break; - case 9: - if (curChar == 39) - jjCheckNAddStates(4, 7); - break; - case 10: - if ((0xffffff7fffffdbffL & l) != 0L) - jjCheckNAddStates(4, 7); - break; - case 12: - if ((0x8400000000L & l) != 0L) - jjCheckNAddStates(4, 7); - break; - case 14: - if ((0x3ff000000000000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 15; - break; - case 15: - if ((0x3ff000000000000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 16; - break; - case 16: - if ((0x3ff000000000000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 17; - break; - case 17: - if ((0x3ff000000000000L & l) != 0L) - jjCheckNAddStates(4, 7); - break; - case 19: - if (curChar == 39 && kind > 10) - kind = 10; - break; - case 20: - if (curChar == 34) - jjCheckNAddStates(0, 3); - break; - case 21: - if ((0xfffffffbffffdbffL & l) != 0L) - jjCheckNAddStates(0, 3); - break; - case 23: - if ((0x8400000000L & l) != 0L) - jjCheckNAddStates(0, 3); - break; - case 25: - if ((0x3ff000000000000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 26; - break; - case 26: - if ((0x3ff000000000000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 27; - break; - case 27: - if ((0x3ff000000000000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 28; - break; - case 28: - if ((0x3ff000000000000L & l) != 0L) - jjCheckNAddStates(0, 3); - break; - case 30: - if (curChar == 34 && kind > 11) - kind = 11; - break; - default : break; - } - } while(i != startsAt); - } - else if (curChar < 128) - { - long l = 1L << (curChar & 077); - MatchLoop: do - { - switch(jjstateSet[--i]) - { - case 31: - if ((0xffffffffefffffffL & l) != 0L) - jjCheckNAddStates(0, 3); - else if (curChar == 92) - jjstateSet[jjnewStateCnt++] = 24; - if (curChar == 92) - jjstateSet[jjnewStateCnt++] = 23; - break; - case 0: - if ((0x2000000020L & l) != 0L) - { - if (kind > 5) - kind = 5; - jjstateSet[jjnewStateCnt++] = 1; - } - else if (curChar == 92) - jjstateSet[jjnewStateCnt++] = 3; - break; - case 3: - if (curChar == 117) - jjstateSet[jjnewStateCnt++] = 4; - break; - case 4: - if ((0x7e0000007eL & l) != 0L) - jjstateSet[jjnewStateCnt++] = 5; - break; - case 5: - if ((0x7e0000007eL & l) != 0L) - jjstateSet[jjnewStateCnt++] = 6; - break; - case 6: - if ((0x7e0000007eL & l) != 0L) - jjstateSet[jjnewStateCnt++] = 7; - break; - case 7: - if ((0x7e0000007eL & l) != 0L && kind > 8) - kind = 8; - break; - case 8: - if (curChar == 92) - jjstateSet[jjnewStateCnt++] = 3; - break; - case 10: - if ((0xffffffffefffffffL & l) != 0L) - jjCheckNAddStates(4, 7); - break; - case 11: - if (curChar == 92) - jjstateSet[jjnewStateCnt++] = 12; - break; - case 12: - if ((0x14404410000000L & l) != 0L) - jjCheckNAddStates(4, 7); - break; - case 13: - if (curChar == 117) - jjstateSet[jjnewStateCnt++] = 14; - break; - case 14: - if ((0x7e0000007eL & l) != 0L) - jjstateSet[jjnewStateCnt++] = 15; - break; - case 15: - if ((0x7e0000007eL & l) != 0L) - jjstateSet[jjnewStateCnt++] = 16; - break; - case 16: - if ((0x7e0000007eL & l) != 0L) - jjstateSet[jjnewStateCnt++] = 17; - break; - case 17: - if ((0x7e0000007eL & l) != 0L) - jjCheckNAddStates(4, 7); - break; - case 18: - if (curChar == 92) - jjstateSet[jjnewStateCnt++] = 13; - break; - case 21: - if ((0xffffffffefffffffL & l) != 0L) - jjCheckNAddStates(0, 3); - break; - case 22: - if (curChar == 92) - jjstateSet[jjnewStateCnt++] = 23; - break; - case 23: - if ((0x14404410000000L & l) != 0L) - jjCheckNAddStates(0, 3); - break; - case 24: - if (curChar == 117) - jjstateSet[jjnewStateCnt++] = 25; - break; - case 25: - if ((0x7e0000007eL & l) != 0L) - jjstateSet[jjnewStateCnt++] = 26; - break; - case 26: - if ((0x7e0000007eL & l) != 0L) - jjstateSet[jjnewStateCnt++] = 27; - break; - case 27: - if ((0x7e0000007eL & l) != 0L) - jjstateSet[jjnewStateCnt++] = 28; - break; - case 28: - if ((0x7e0000007eL & l) != 0L) - jjCheckNAddStates(0, 3); - break; - case 29: - if (curChar == 92) - jjstateSet[jjnewStateCnt++] = 24; - break; - default : break; - } - } while(i != startsAt); - } - else - { - int hiByte = (int)(curChar >> 8); - int i1 = hiByte >> 6; - long l1 = 1L << (hiByte & 077); - int i2 = (curChar & 0xff) >> 6; - long l2 = 1L << (curChar & 077); - MatchLoop: do - { - switch(jjstateSet[--i]) - { - case 31: - case 21: - if (jjCanMove_0(hiByte, i1, i2, l1, l2)) - jjCheckNAddStates(0, 3); - break; - case 10: - if (jjCanMove_0(hiByte, i1, i2, l1, l2)) - jjAddStates(4, 7); - break; - default : break; - } - } while(i != startsAt); - } - if (kind != 0x7fffffff) - { - jjmatchedKind = kind; - jjmatchedPos = curPos; - kind = 0x7fffffff; - } - ++curPos; - if ((i = jjnewStateCnt) == (startsAt = 31 - (jjnewStateCnt = startsAt))) - return curPos; - try { curChar = input_stream.readChar(); } - catch(java.io.IOException e) { return curPos; } - } -} +}; +private final int jjMoveNfa_0(int startState, int curPos) +{ + int[] nextStates; + int startsAt = 0; + jjnewStateCnt = 31; + int i = 1; + jjstateSet[0] = startState; + int j, kind = 0x7fffffff; + for (;;) + { + if (++jjround == 0x7fffffff) + ReInitRounds(); + if (curChar < 64) + { + long l = 1L << curChar; + MatchLoop: do + { + switch(jjstateSet[--i]) + { + case 31: + if ((0xfffffffbffffdbffL & l) != 0L) + jjCheckNAddStates(0, 3); + else if (curChar == 34) + { + if (kind > 11) + kind = 11; + } + break; + case 0: + if ((0x3ff000000000000L & l) != 0L) + { + if (kind > 6) + kind = 6; + jjCheckNAdd(2); + } + else if (curChar == 34) + jjCheckNAddStates(0, 3); + else if (curChar == 39) + jjCheckNAddStates(4, 7); + break; + case 1: + if ((0x280000000000L & l) != 0L && kind > 5) + kind = 5; + break; + case 2: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 6) + kind = 6; + jjCheckNAdd(2); + break; + case 4: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 5; + break; + case 5: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 6; + break; + case 6: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 7; + break; + case 7: + if ((0x3ff000000000000L & l) != 0L && kind > 8) + kind = 8; + break; + case 9: + if (curChar == 39) + jjCheckNAddStates(4, 7); + break; + case 10: + if ((0xffffff7fffffdbffL & l) != 0L) + jjCheckNAddStates(4, 7); + break; + case 12: + if ((0x808400000000L & l) != 0L) + jjCheckNAddStates(4, 7); + break; + case 14: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 15; + break; + case 15: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 16; + break; + case 16: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 17; + break; + case 17: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(4, 7); + break; + case 19: + if (curChar == 39 && kind > 10) + kind = 10; + break; + case 20: + if (curChar == 34) + jjCheckNAddStates(0, 3); + break; + case 21: + if ((0xfffffffbffffdbffL & l) != 0L) + jjCheckNAddStates(0, 3); + break; + case 23: + if ((0x808400000000L & l) != 0L) + jjCheckNAddStates(0, 3); + break; + case 25: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 26; + break; + case 26: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 27; + break; + case 27: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 28; + break; + case 28: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(0, 3); + break; + case 30: + if (curChar == 34 && kind > 11) + kind = 11; + break; + default : break; + } + } while(i != startsAt); + } + else if (curChar < 128) + { + long l = 1L << (curChar & 077); + MatchLoop: do + { + switch(jjstateSet[--i]) + { + case 31: + if ((0xffffffffefffffffL & l) != 0L) + jjCheckNAddStates(0, 3); + else if (curChar == 92) + jjstateSet[jjnewStateCnt++] = 24; + if (curChar == 92) + jjstateSet[jjnewStateCnt++] = 23; + break; + case 0: + if ((0x2000000020L & l) != 0L) + { + if (kind > 5) + kind = 5; + jjstateSet[jjnewStateCnt++] = 1; + } + else if (curChar == 92) + jjstateSet[jjnewStateCnt++] = 3; + break; + case 3: + if (curChar == 117) + jjstateSet[jjnewStateCnt++] = 4; + break; + case 4: + if ((0x7e0000007eL & l) != 0L) + jjstateSet[jjnewStateCnt++] = 5; + break; + case 5: + if ((0x7e0000007eL & l) != 0L) + jjstateSet[jjnewStateCnt++] = 6; + break; + case 6: + if ((0x7e0000007eL & l) != 0L) + jjstateSet[jjnewStateCnt++] = 7; + break; + case 7: + if ((0x7e0000007eL & l) != 0L && kind > 8) + kind = 8; + break; + case 8: + if (curChar == 92) + jjstateSet[jjnewStateCnt++] = 3; + break; + case 10: + if ((0xffffffffefffffffL & l) != 0L) + jjCheckNAddStates(4, 7); + break; + case 11: + if (curChar == 92) + jjstateSet[jjnewStateCnt++] = 12; + break; + case 12: + if ((0x14404410000000L & l) != 0L) + jjCheckNAddStates(4, 7); + break; + case 13: + if (curChar == 117) + jjstateSet[jjnewStateCnt++] = 14; + break; + case 14: + if ((0x7e0000007eL & l) != 0L) + jjstateSet[jjnewStateCnt++] = 15; + break; + case 15: + if ((0x7e0000007eL & l) != 0L) + jjstateSet[jjnewStateCnt++] = 16; + break; + case 16: + if ((0x7e0000007eL & l) != 0L) + jjstateSet[jjnewStateCnt++] = 17; + break; + case 17: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(4, 7); + break; + case 18: + if (curChar == 92) + jjstateSet[jjnewStateCnt++] = 13; + break; + case 21: + if ((0xffffffffefffffffL & l) != 0L) + jjCheckNAddStates(0, 3); + break; + case 22: + if (curChar == 92) + jjstateSet[jjnewStateCnt++] = 23; + break; + case 23: + if ((0x14404410000000L & l) != 0L) + jjCheckNAddStates(0, 3); + break; + case 24: + if (curChar == 117) + jjstateSet[jjnewStateCnt++] = 25; + break; + case 25: + if ((0x7e0000007eL & l) != 0L) + jjstateSet[jjnewStateCnt++] = 26; + break; + case 26: + if ((0x7e0000007eL & l) != 0L) + jjstateSet[jjnewStateCnt++] = 27; + break; + case 27: + if ((0x7e0000007eL & l) != 0L) + jjstateSet[jjnewStateCnt++] = 28; + break; + case 28: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(0, 3); + break; + case 29: + if (curChar == 92) + jjstateSet[jjnewStateCnt++] = 24; + break; + default : break; + } + } while(i != startsAt); + } + else + { + int hiByte = (int)(curChar >> 8); + int i1 = hiByte >> 6; + long l1 = 1L << (hiByte & 077); + int i2 = (curChar & 0xff) >> 6; + long l2 = 1L << (curChar & 077); + MatchLoop: do + { + switch(jjstateSet[--i]) + { + case 31: + case 21: + if (jjCanMove_0(hiByte, i1, i2, l1, l2)) + jjCheckNAddStates(0, 3); + break; + case 10: + if (jjCanMove_0(hiByte, i1, i2, l1, l2)) + jjAddStates(4, 7); + break; + default : break; + } + } while(i != startsAt); + } + if (kind != 0x7fffffff) + { + jjmatchedKind = kind; + jjmatchedPos = curPos; + kind = 0x7fffffff; + } + ++curPos; + if ((i = jjnewStateCnt) == (startsAt = 31 - (jjnewStateCnt = startsAt))) + return curPos; + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { return curPos; } + } +} private final int jjStopStringLiteralDfa_2(int pos, long active0) -{ +{ switch (pos) - { - default : - return -1; - } -} + { + default : + return -1; + } +} private final int jjStartNfa_2(int pos, long active0) -{ - return jjMoveNfa_2(jjStopStringLiteralDfa_2(pos, active0), pos + 1); -} -private final int jjStartNfaWithStates_2(int pos, int kind, int state) -{ - jjmatchedKind = kind; - jjmatchedPos = pos; - try { curChar = input_stream.readChar(); } - catch(java.io.IOException e) { return pos + 1; } - return jjMoveNfa_2(state, pos + 1); -} -private final int jjMoveStringLiteralDfa0_2() -{ - switch(curChar) - { - case 117: - return jjStopAtPos(0, 17); - default : - return jjMoveNfa_2(0, 0); - } -} -private final int jjMoveNfa_2(int startState, int curPos) -{ - int[] nextStates; - int startsAt = 0; - jjnewStateCnt = 1; - int i = 1; - jjstateSet[0] = startState; - int j, kind = 0x7fffffff; - for (;;) - { - if (++jjround == 0x7fffffff) - ReInitRounds(); - if (curChar < 64) - { - long l = 1L << curChar; - MatchLoop: do - { - switch(jjstateSet[--i]) - { - case 0: - if ((0x800400000000L & l) != 0L) - kind = 16; - break; - default : break; - } - } while(i != startsAt); - } - else if (curChar < 128) - { - long l = 1L << (curChar & 077); - MatchLoop: do - { - switch(jjstateSet[--i]) - { - case 0: - if ((0x14404410000000L & l) != 0L) - kind = 16; - break; - default : break; - } - } while(i != startsAt); - } - else - { - int hiByte = (int)(curChar >> 8); - int i1 = hiByte >> 6; - long l1 = 1L << (hiByte & 077); - int i2 = (curChar & 0xff) >> 6; - long l2 = 1L << (curChar & 077); - MatchLoop: do - { - switch(jjstateSet[--i]) - { - default : break; - } - } while(i != startsAt); - } - if (kind != 0x7fffffff) - { - jjmatchedKind = kind; - jjmatchedPos = curPos; - kind = 0x7fffffff; - } - ++curPos; - if ((i = jjnewStateCnt) == (startsAt = 1 - (jjnewStateCnt = startsAt))) - return curPos; - try { curChar = input_stream.readChar(); } - catch(java.io.IOException e) { return curPos; } - } -} +{ + return jjMoveNfa_2(jjStopStringLiteralDfa_2(pos, active0), pos + 1); +} +private final int jjStartNfaWithStates_2(int pos, int kind, int state) +{ + jjmatchedKind = kind; + jjmatchedPos = pos; + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { return pos + 1; } + return jjMoveNfa_2(state, pos + 1); +} +private final int jjMoveStringLiteralDfa0_2() +{ + switch(curChar) + { + case 117: + return jjStopAtPos(0, 17); + default : + return jjMoveNfa_2(0, 0); + } +} +private final int jjMoveNfa_2(int startState, int curPos) +{ + int[] nextStates; + int startsAt = 0; + jjnewStateCnt = 1; + int i = 1; + jjstateSet[0] = startState; + int j, kind = 0x7fffffff; + for (;;) + { + if (++jjround == 0x7fffffff) + ReInitRounds(); + if (curChar < 64) + { + long l = 1L << curChar; + MatchLoop: do + { + switch(jjstateSet[--i]) + { + case 0: + if ((0x800400000000L & l) != 0L) + kind = 16; + break; + default : break; + } + } while(i != startsAt); + } + else if (curChar < 128) + { + long l = 1L << (curChar & 077); + MatchLoop: do + { + switch(jjstateSet[--i]) + { + case 0: + if ((0x14404410000000L & l) != 0L) + kind = 16; + break; + default : break; + } + } while(i != startsAt); + } + else + { + int hiByte = (int)(curChar >> 8); + int i1 = hiByte >> 6; + long l1 = 1L << (hiByte & 077); + int i2 = (curChar & 0xff) >> 6; + long l2 = 1L << (curChar & 077); + MatchLoop: do + { + switch(jjstateSet[--i]) + { + default : break; + } + } while(i != startsAt); + } + if (kind != 0x7fffffff) + { + jjmatchedKind = kind; + jjmatchedPos = curPos; + kind = 0x7fffffff; + } + ++curPos; + if ((i = jjnewStateCnt) == (startsAt = 1 - (jjnewStateCnt = startsAt))) + return curPos; + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { return curPos; } + } +} private final int jjStopStringLiteralDfa_1(int pos, long active0) -{ +{ switch (pos) - { - default : - return -1; - } -} + { + default : + return -1; + } +} private final int jjStartNfa_1(int pos, long active0) -{ - return jjMoveNfa_1(jjStopStringLiteralDfa_1(pos, active0), pos + 1); -} -private final int jjStartNfaWithStates_1(int pos, int kind, int state) -{ - jjmatchedKind = kind; - jjmatchedPos = pos; - try { curChar = input_stream.readChar(); } - catch(java.io.IOException e) { return pos + 1; } - return jjMoveNfa_1(state, pos + 1); -} -private final int jjMoveStringLiteralDfa0_1() -{ - switch(curChar) - { - case 92: - return jjStopAtPos(0, 13); - default : - return jjMoveNfa_1(0, 0); - } -} -private final int jjMoveNfa_1(int startState, int curPos) -{ - int[] nextStates; - int startsAt = 0; - jjnewStateCnt = 2; - int i = 1; - jjstateSet[0] = startState; - int j, kind = 0x7fffffff; - for (;;) - { - if (++jjround == 0x7fffffff) - ReInitRounds(); - if (curChar < 64) - { - long l = 1L << curChar; - MatchLoop: do - { - switch(jjstateSet[--i]) - { - case 0: - if ((0xfffffffbffffffffL & l) != 0L) - { - if (kind > 15) - kind = 15; - } - else if (curChar == 34) - { - if (kind > 14) - kind = 14; - } - break; - case 1: - if ((0xfffffffbffffffffL & l) != 0L) - kind = 15; - break; - default : break; - } - } while(i != startsAt); - } - else if (curChar < 128) - { - long l = 1L << (curChar & 077); - MatchLoop: do - { - switch(jjstateSet[--i]) - { - case 0: - if ((0xffffffffefffffffL & l) != 0L) - kind = 15; - break; - default : break; - } - } while(i != startsAt); - } - else - { - int hiByte = (int)(curChar >> 8); - int i1 = hiByte >> 6; - long l1 = 1L << (hiByte & 077); - int i2 = (curChar & 0xff) >> 6; - long l2 = 1L << (curChar & 077); - MatchLoop: do - { - switch(jjstateSet[--i]) - { - case 0: - if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 15) - kind = 15; - break; - default : break; - } - } while(i != startsAt); - } - if (kind != 0x7fffffff) - { - jjmatchedKind = kind; - jjmatchedPos = curPos; - kind = 0x7fffffff; - } - ++curPos; - if ((i = jjnewStateCnt) == (startsAt = 2 - (jjnewStateCnt = startsAt))) - return curPos; - try { curChar = input_stream.readChar(); } - catch(java.io.IOException e) { return curPos; } - } -} +{ + return jjMoveNfa_1(jjStopStringLiteralDfa_1(pos, active0), pos + 1); +} +private final int jjStartNfaWithStates_1(int pos, int kind, int state) +{ + jjmatchedKind = kind; + jjmatchedPos = pos; + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { return pos + 1; } + return jjMoveNfa_1(state, pos + 1); +} +private final int jjMoveStringLiteralDfa0_1() +{ + switch(curChar) + { + case 92: + return jjStopAtPos(0, 13); + default : + return jjMoveNfa_1(0, 0); + } +} +private final int jjMoveNfa_1(int startState, int curPos) +{ + int[] nextStates; + int startsAt = 0; + jjnewStateCnt = 2; + int i = 1; + jjstateSet[0] = startState; + int j, kind = 0x7fffffff; + for (;;) + { + if (++jjround == 0x7fffffff) + ReInitRounds(); + if (curChar < 64) + { + long l = 1L << curChar; + MatchLoop: do + { + switch(jjstateSet[--i]) + { + case 0: + if ((0xfffffffbffffffffL & l) != 0L) + { + if (kind > 15) + kind = 15; + } + else if (curChar == 34) + { + if (kind > 14) + kind = 14; + } + break; + case 1: + if ((0xfffffffbffffffffL & l) != 0L) + kind = 15; + break; + default : break; + } + } while(i != startsAt); + } + else if (curChar < 128) + { + long l = 1L << (curChar & 077); + MatchLoop: do + { + switch(jjstateSet[--i]) + { + case 0: + if ((0xffffffffefffffffL & l) != 0L) + kind = 15; + break; + default : break; + } + } while(i != startsAt); + } + else + { + int hiByte = (int)(curChar >> 8); + int i1 = hiByte >> 6; + long l1 = 1L << (hiByte & 077); + int i2 = (curChar & 0xff) >> 6; + long l2 = 1L << (curChar & 077); + MatchLoop: do + { + switch(jjstateSet[--i]) + { + case 0: + if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 15) + kind = 15; + break; + default : break; + } + } while(i != startsAt); + } + if (kind != 0x7fffffff) + { + jjmatchedKind = kind; + jjmatchedPos = curPos; + kind = 0x7fffffff; + } + ++curPos; + if ((i = jjnewStateCnt) == (startsAt = 2 - (jjnewStateCnt = startsAt))) + return curPos; + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { return curPos; } + } +} static final int[] jjnextStates = { 21, 22, 29, 30, 10, 11, 18, 19, -}; -private static final boolean jjCanMove_0(int hiByte, int i1, int i2, long l1, long l2) -{ - switch(hiByte) - { - case 0: - return ((jjbitVec2[i2] & l2) != 0L); - default : - if ((jjbitVec0[i1] & l1) != 0L) - return true; - return false; - } -} -public static final String[] jjstrLiteralImages = { -"", null, null, null, null, null, null, null, null, null, null, null, "\42", -null, null, null, null, null, null, null, "\173", "\175", "\156\165\154\154", "\54", -"\72", "\133", "\135", "\164\162\165\145", "\146\141\154\163\145", "\55", "\56", }; -public static final String[] lexStateNames = { - "DEFAULT", - "STRING_STATE", - "ESC_STATE", - "HEX_STATE", -}; +}; +private static final boolean jjCanMove_0(int hiByte, int i1, int i2, long l1, long l2) +{ + switch(hiByte) + { + case 0: + return ((jjbitVec2[i2] & l2) != 0L); + default : + if ((jjbitVec0[i1] & l1) != 0L) + return true; + return false; + } +} +public static final String[] jjstrLiteralImages = { +"", null, null, null, null, null, null, null, null, null, null, null, "\42", +null, null, null, null, null, null, null, "\173", "\175", "\156\165\154\154", "\54", +"\72", "\133", "\135", "\164\162\165\145", "\146\141\154\163\145", "\55", "\56", }; +public static final String[] lexStateNames = { + "DEFAULT", + "STRING_STATE", + "ESC_STATE", + "HEX_STATE", +}; public static final int[] jjnewLexState = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 2, 0, -1, 1, 3, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -}; +}; static final long[] jjtoToken = { 0x7ff9dd61L, -}; +}; static final long[] jjtoSkip = { 0x1eL, -}; +}; static final long[] jjtoMore = { 0x22000L, -}; -protected SimpleCharStream input_stream; -private final int[] jjrounds = new int[31]; -private final int[] jjstateSet = new int[62]; -protected char curChar; -public JsonParserTokenManager(SimpleCharStream stream){ - if (SimpleCharStream.staticFlag) - throw new Error("ERROR: Cannot use a static CharStream class with a non-static lexical analyzer."); - input_stream = stream; -} -public JsonParserTokenManager(SimpleCharStream stream, int lexState){ - this(stream); - SwitchTo(lexState); -} -public void ReInit(SimpleCharStream stream) -{ - jjmatchedPos = jjnewStateCnt = 0; - curLexState = defaultLexState; - input_stream = stream; - ReInitRounds(); -} -private final void ReInitRounds() -{ - int i; - jjround = 0x80000001; - for (i = 31; i-- > 0;) - jjrounds[i] = 0x80000000; -} -public void ReInit(SimpleCharStream stream, int lexState) -{ - ReInit(stream); - SwitchTo(lexState); -} -public void SwitchTo(int lexState) -{ - if (lexState >= 4 || lexState < 0) - throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE); - else - curLexState = lexState; -} - -protected Token jjFillToken() -{ - Token t = Token.newToken(jjmatchedKind); - t.kind = jjmatchedKind; - String im = jjstrLiteralImages[jjmatchedKind]; - t.image = (im == null) ? input_stream.GetImage() : im; - t.beginLine = input_stream.getBeginLine(); - t.beginColumn = input_stream.getBeginColumn(); - t.endLine = input_stream.getEndLine(); - t.endColumn = input_stream.getEndColumn(); - return t; -} - -int curLexState = 0; -int defaultLexState = 0; -int jjnewStateCnt; -int jjround; -int jjmatchedPos; -int jjmatchedKind; - -public Token getNextToken() -{ - int kind; - Token specialToken = null; - Token matchedToken; - int curPos = 0; - +}; +protected SimpleCharStream input_stream; +private final int[] jjrounds = new int[31]; +private final int[] jjstateSet = new int[62]; +protected char curChar; +public JsonParserTokenManager(SimpleCharStream stream){ + if (SimpleCharStream.staticFlag) + throw new Error("ERROR: Cannot use a static CharStream class with a non-static lexical analyzer."); + input_stream = stream; +} +public JsonParserTokenManager(SimpleCharStream stream, int lexState){ + this(stream); + SwitchTo(lexState); +} +public void ReInit(SimpleCharStream stream) +{ + jjmatchedPos = jjnewStateCnt = 0; + curLexState = defaultLexState; + input_stream = stream; + ReInitRounds(); +} +private final void ReInitRounds() +{ + int i; + jjround = 0x80000001; + for (i = 31; i-- > 0;) + jjrounds[i] = 0x80000000; +} +public void ReInit(SimpleCharStream stream, int lexState) +{ + ReInit(stream); + SwitchTo(lexState); +} +public void SwitchTo(int lexState) +{ + if (lexState >= 4 || lexState < 0) + throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE); + else + curLexState = lexState; +} + +protected Token jjFillToken() +{ + Token t = Token.newToken(jjmatchedKind); + t.kind = jjmatchedKind; + String im = jjstrLiteralImages[jjmatchedKind]; + t.image = (im == null) ? input_stream.GetImage() : im; + t.beginLine = input_stream.getBeginLine(); + t.beginColumn = input_stream.getBeginColumn(); + t.endLine = input_stream.getEndLine(); + t.endColumn = input_stream.getEndColumn(); + return t; +} + +int curLexState = 0; +int defaultLexState = 0; +int jjnewStateCnt; +int jjround; +int jjmatchedPos; +int jjmatchedKind; + +public Token getNextToken() +{ + int kind; + Token specialToken = null; + Token matchedToken; + int curPos = 0; + EOFLoop : - for (;;) - { - try - { - curChar = input_stream.BeginToken(); - } - catch(java.io.IOException e) - { - jjmatchedKind = 0; - matchedToken = jjFillToken(); - return matchedToken; - } - - for (;;) - { - switch(curLexState) - { - case 0: - try { input_stream.backup(0); - while (curChar <= 32 && (0x100002600L & (1L << curChar)) != 0L) - curChar = input_stream.BeginToken(); - } - catch (java.io.IOException e1) { continue EOFLoop; } - jjmatchedKind = 0x7fffffff; - jjmatchedPos = 0; - curPos = jjMoveStringLiteralDfa0_0(); - break; - case 1: - jjmatchedKind = 0x7fffffff; - jjmatchedPos = 0; - curPos = jjMoveStringLiteralDfa0_1(); - break; - case 2: - jjmatchedKind = 0x7fffffff; - jjmatchedPos = 0; - curPos = jjMoveStringLiteralDfa0_2(); - break; - case 3: - jjmatchedKind = 0x7fffffff; - jjmatchedPos = 0; - curPos = jjMoveStringLiteralDfa0_3(); - break; - } - if (jjmatchedKind != 0x7fffffff) - { - if (jjmatchedPos + 1 < curPos) - input_stream.backup(curPos - jjmatchedPos - 1); - if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L) - { - matchedToken = jjFillToken(); - if (jjnewLexState[jjmatchedKind] != -1) - curLexState = jjnewLexState[jjmatchedKind]; - return matchedToken; - } - else if ((jjtoSkip[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L) - { - if (jjnewLexState[jjmatchedKind] != -1) - curLexState = jjnewLexState[jjmatchedKind]; - continue EOFLoop; - } - if (jjnewLexState[jjmatchedKind] != -1) - curLexState = jjnewLexState[jjmatchedKind]; - curPos = 0; - jjmatchedKind = 0x7fffffff; - try { - curChar = input_stream.readChar(); - continue; - } - catch (java.io.IOException e1) { } - } - int error_line = input_stream.getEndLine(); - int error_column = input_stream.getEndColumn(); - String error_after = null; - boolean EOFSeen = false; - try { input_stream.readChar(); input_stream.backup(1); } - catch (java.io.IOException e1) { - EOFSeen = true; - error_after = curPos <= 1 ? "" : input_stream.GetImage(); - if (curChar == '\n' || curChar == '\r') { - error_line++; - error_column = 0; - } - else - error_column++; - } - if (!EOFSeen) { - input_stream.backup(1); - error_after = curPos <= 1 ? "" : input_stream.GetImage(); - } - throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, curChar, TokenMgrError.LEXICAL_ERROR); - } - } -} - -} + for (;;) + { + try + { + curChar = input_stream.BeginToken(); + } + catch(java.io.IOException e) + { + jjmatchedKind = 0; + matchedToken = jjFillToken(); + return matchedToken; + } + + for (;;) + { + switch(curLexState) + { + case 0: + try { input_stream.backup(0); + while (curChar <= 32 && (0x100002600L & (1L << curChar)) != 0L) + curChar = input_stream.BeginToken(); + } + catch (java.io.IOException e1) { continue EOFLoop; } + jjmatchedKind = 0x7fffffff; + jjmatchedPos = 0; + curPos = jjMoveStringLiteralDfa0_0(); + break; + case 1: + jjmatchedKind = 0x7fffffff; + jjmatchedPos = 0; + curPos = jjMoveStringLiteralDfa0_1(); + break; + case 2: + jjmatchedKind = 0x7fffffff; + jjmatchedPos = 0; + curPos = jjMoveStringLiteralDfa0_2(); + break; + case 3: + jjmatchedKind = 0x7fffffff; + jjmatchedPos = 0; + curPos = jjMoveStringLiteralDfa0_3(); + break; + } + if (jjmatchedKind != 0x7fffffff) + { + if (jjmatchedPos + 1 < curPos) + input_stream.backup(curPos - jjmatchedPos - 1); + if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L) + { + matchedToken = jjFillToken(); + if (jjnewLexState[jjmatchedKind] != -1) + curLexState = jjnewLexState[jjmatchedKind]; + return matchedToken; + } + else if ((jjtoSkip[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L) + { + if (jjnewLexState[jjmatchedKind] != -1) + curLexState = jjnewLexState[jjmatchedKind]; + continue EOFLoop; + } + if (jjnewLexState[jjmatchedKind] != -1) + curLexState = jjnewLexState[jjmatchedKind]; + curPos = 0; + jjmatchedKind = 0x7fffffff; + try { + curChar = input_stream.readChar(); + continue; + } + catch (java.io.IOException e1) { } + } + int error_line = input_stream.getEndLine(); + int error_column = input_stream.getEndColumn(); + String error_after = null; + boolean EOFSeen = false; + try { input_stream.readChar(); input_stream.backup(1); } + catch (java.io.IOException e1) { + EOFSeen = true; + error_after = curPos <= 1 ? "" : input_stream.GetImage(); + if (curChar == '\n' || curChar == '\r') { + error_line++; + error_column = 0; + } + else + error_column++; + } + if (!EOFSeen) { + input_stream.backup(1); + error_after = curPos <= 1 ? "" : input_stream.GetImage(); + } + throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, curChar, TokenMgrError.LEXICAL_ERROR); + } + } +} + +} diff --git a/gson/src/main/java/com/google/gson/StringUnmarshaller.java b/gson/src/main/java/com/google/gson/StringUnmarshaller.java index a067f84b..49d85a11 100644 --- a/gson/src/main/java/com/google/gson/StringUnmarshaller.java +++ b/gson/src/main/java/com/google/gson/StringUnmarshaller.java @@ -63,6 +63,9 @@ final class StringUnmarshaller { case '\\': ch = '\\'; break; + case '/': + ch = '/'; + break; default: throw new IllegalStateException("Unexpected character: " + c + " in " + str); } diff --git a/gson/src/main/javacc/JsonParser.jj b/gson/src/main/javacc/JsonParser.jj index 3b10257d..876b420b 100755 --- a/gson/src/main/javacc/JsonParser.jj +++ b/gson/src/main/javacc/JsonParser.jj @@ -30,7 +30,7 @@ TOKEN : { | | <#HEX_CHAR : ["a"-"f","A"-"F","0"-"9"]> | > - | <#ESCAPE_CHAR: "\\" ["n","t","b","r","f","\\","'","\""] > + | <#ESCAPE_CHAR: "\\" ["n","t","b","r","f","\\","'","\"", "/"] > | | )* "\'" > | | )* "\"" > | : STRING_STATE diff --git a/gson/src/test/java/com/google/gson/functional/ConcurrencyTest.java b/gson/src/test/java/com/google/gson/functional/ConcurrencyTest.java index b8fec039..3a1b54af 100755 --- a/gson/src/test/java/com/google/gson/functional/ConcurrencyTest.java +++ b/gson/src/test/java/com/google/gson/functional/ConcurrencyTest.java @@ -122,9 +122,9 @@ public class ConcurrencyTest extends TestCase { } private static class MyObject { - private String a; - private String b; - private int i; + String a; + String b; + int i; MyObject() { this("hello", "world", 42); diff --git a/gson/src/test/java/com/google/gson/functional/StringTest.java b/gson/src/test/java/com/google/gson/functional/StringTest.java index 165e3f44..0ebca14b 100644 --- a/gson/src/test/java/com/google/gson/functional/StringTest.java +++ b/gson/src/test/java/com/google/gson/functional/StringTest.java @@ -102,4 +102,11 @@ public class StringTest extends TestCase { String actual = gson.fromJson("[\"" + value + "\"]", String.class); assertEquals(value, actual); } + + public void testStringWithEscapedSlashDeserialization() { + String value = "/"; + String json = "'\\/'"; + String actual = gson.fromJson(json, String.class); + assertEquals(value, actual); + } }