Kaydet (Commit) 8054fad8 authored tarafından Guido van Rossum's avatar Guido van Rossum

Changes to accept double-quoted strings on input.

üst 54618507
...@@ -564,7 +564,7 @@ tok_get(tok, p_start, p_end) ...@@ -564,7 +564,7 @@ tok_get(tok, p_start, p_end)
return NUMBER; return NUMBER;
} }
/* String */ /* String (single quotes) */
if (c == '\'') { if (c == '\'') {
for (;;) { for (;;) {
c = tok_nextc(tok); c = tok_nextc(tok);
...@@ -590,6 +590,32 @@ tok_get(tok, p_start, p_end) ...@@ -590,6 +590,32 @@ tok_get(tok, p_start, p_end)
return STRING; 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 */ /* Line continuation */
if (c == '\\') { if (c == '\\') {
c = tok_nextc(tok); c = tok_nextc(tok);
......
...@@ -481,13 +481,14 @@ parsestr(s) ...@@ -481,13 +481,14 @@ parsestr(s)
char *buf; char *buf;
char *p; char *p;
int c; int c;
if (*s != '\'') { int quote = *s;
if (quote != '\'' && quote != '\"') {
err_badcall(); err_badcall();
return NULL; return NULL;
} }
s++; s++;
len = strlen(s); len = strlen(s);
if (s[--len] != '\'') { if (s[--len] != quote) {
err_badcall(); err_badcall();
return NULL; return NULL;
} }
...@@ -505,6 +506,7 @@ parsestr(s) ...@@ -505,6 +506,7 @@ parsestr(s)
/* XXX This assumes ASCII! */ /* XXX This assumes ASCII! */
case '\\': *p++ = '\\'; break; case '\\': *p++ = '\\'; break;
case '\'': *p++ = '\''; break; case '\'': *p++ = '\''; break;
case '\"': *p++ = '\"'; break;
case 'b': *p++ = '\b'; break; case 'b': *p++ = '\b'; break;
case 'f': *p++ = '\014'; break; /* FF */ case 'f': *p++ = '\014'; break; /* FF */
case 't': *p++ = '\t'; break; case 't': *p++ = '\t'; break;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment