mirror of https://github.com/python/cpython
Changes to accept double-quoted strings on input.
This commit is contained in:
parent
546185075c
commit
8054fad890
|
@ -564,7 +564,7 @@ tok_get(tok, p_start, p_end)
|
|||
return NUMBER;
|
||||
}
|
||||
|
||||
/* String */
|
||||
/* String (single quotes) */
|
||||
if (c == '\'') {
|
||||
for (;;) {
|
||||
c = tok_nextc(tok);
|
||||
|
@ -590,6 +590,32 @@ tok_get(tok, p_start, p_end)
|
|||
return STRING;
|
||||
}
|
||||
|
||||
/* String (double quotes) */
|
||||
if (c == '\"') {
|
||||
for (;;) {
|
||||
c = tok_nextc(tok);
|
||||
if (c == '\n' || c == EOF) {
|
||||
tok->done = E_TOKEN;
|
||||
tok->cur = tok->inp;
|
||||
return ERRORTOKEN;
|
||||
}
|
||||
if (c == '\\') {
|
||||
c = tok_nextc(tok);
|
||||
*p_end = tok->cur;
|
||||
if (c == '\n' || c == EOF) {
|
||||
tok->done = E_TOKEN;
|
||||
tok->cur = tok->inp;
|
||||
return ERRORTOKEN;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (c == '\"')
|
||||
break;
|
||||
}
|
||||
*p_end = tok->cur;
|
||||
return STRING;
|
||||
}
|
||||
|
||||
/* Line continuation */
|
||||
if (c == '\\') {
|
||||
c = tok_nextc(tok);
|
||||
|
|
|
@ -481,13 +481,14 @@ parsestr(s)
|
|||
char *buf;
|
||||
char *p;
|
||||
int c;
|
||||
if (*s != '\'') {
|
||||
int quote = *s;
|
||||
if (quote != '\'' && quote != '\"') {
|
||||
err_badcall();
|
||||
return NULL;
|
||||
}
|
||||
s++;
|
||||
len = strlen(s);
|
||||
if (s[--len] != '\'') {
|
||||
if (s[--len] != quote) {
|
||||
err_badcall();
|
||||
return NULL;
|
||||
}
|
||||
|
@ -505,6 +506,7 @@ parsestr(s)
|
|||
/* XXX This assumes ASCII! */
|
||||
case '\\': *p++ = '\\'; break;
|
||||
case '\'': *p++ = '\''; break;
|
||||
case '\"': *p++ = '\"'; break;
|
||||
case 'b': *p++ = '\b'; break;
|
||||
case 'f': *p++ = '\014'; break; /* FF */
|
||||
case 't': *p++ = '\t'; break;
|
||||
|
|
Loading…
Reference in New Issue