StringPair extractString(Token t) { String string = t.getText(); char quoteChar = string.charAt(0); int start = 0; int end; boolean ustring = false; boolean bstring = false; if (quoteChar == 'b' || quoteChar == 'B') { bstring = true; start++; } if (quoteChar == 'u' || quoteChar == 'U') { ustring = true; start++; } quoteChar = string.charAt(start); boolean raw = false; if (quoteChar == 'r' || quoteChar == 'R') { raw = true; start++; } int quotes = 3; if (string.length() - start == 2) { quotes = 1; } if (string.charAt(start) != string.charAt(start + 1)) { quotes = 1; } start = quotes + start; end = string.length() - quotes; string = string.substring(start, end); if (raw) { string = codecs.PyUnicode_DecodeRawUnicodeEscape(string, "strict"); } else { string = PyString.decode_UnicodeEscape(string, 0, string.length(), "strict", true); } return new StringPair(string, ustring, bstring); }