Marc-Andre Lemburg: support for Unicode string literals (u"...", ur"...").

This commit is contained in:
Guido van Rossum 2000-03-10 23:01:36 +00:00
parent 09095f3f61
commit 5aa88f097f
1 changed files with 22 additions and 3 deletions

View File

@ -875,8 +875,18 @@ parsestr(s)
int c;
int first = *s;
int quote = first;
if (isalpha(quote) || quote == '_')
quote = *++s;
int rawmode = 0;
int unicode = 0;
if (isalpha(quote) || quote == '_') {
if (quote == 'u' || quote == 'U') {
quote = *++s;
unicode = 1;
}
if (quote == 'r' || quote == 'R') {
quote = *++s;
rawmode = 1;
}
}
if (quote != '\'' && quote != '\"') {
PyErr_BadInternalCall();
return NULL;
@ -895,8 +905,17 @@ parsestr(s)
return NULL;
}
}
if (first != quote || strchr(s, '\\') == NULL)
if (unicode) {
if (rawmode)
return PyUnicode_DecodeRawUnicodeEscape(
s, len, NULL);
else
return PyUnicode_DecodeUnicodeEscape(
s, len, NULL);
}
else if (rawmode || strchr(s, '\\') == NULL) {
return PyString_FromStringAndSize(s, len);
}
v = PyString_FromStringAndSize((char *)NULL, len);
p = buf = PyString_AsString(v);
end = s + len;