comparison src/lread.c @ 49856:04bdf9a77388

(read1): Fix last change; "`" is not always special.
author Kim F. Storm <storm@cua.dk>
date Tue, 18 Feb 2003 16:11:17 +0000
parents 3df99c93b6a4
children 38c14af619da
comparison
equal deleted inserted replaced
49855:07648d747d7d 49856:04bdf9a77388
2269 /* Only a dotted-pair dot is valid after a char constant. */ 2269 /* Only a dotted-pair dot is valid after a char constant. */
2270 int next_next_char = READCHAR; 2270 int next_next_char = READCHAR;
2271 UNREAD (next_next_char); 2271 UNREAD (next_next_char);
2272 2272
2273 ok = (next_next_char <= 040 2273 ok = (next_next_char <= 040
2274 || index ("\"'`;([#?", next_next_char) 2274 || index ("\"';([#?", next_next_char)
2275 || (!first_in_list && next_next_char == '`')
2275 || (new_backquote_flag && next_next_char == ',')); 2276 || (new_backquote_flag && next_next_char == ','));
2276 } 2277 }
2277 else 2278 else
2278 { 2279 {
2279 ok = (next_char <= 040 2280 ok = (next_char <= 040
2280 || index ("\"'`;()[]#", next_char) 2281 || index ("\"';()[]#", next_char)
2282 || (!first_in_list && next_char == '`')
2281 || (new_backquote_flag && next_char == ',')); 2283 || (new_backquote_flag && next_char == ','));
2282 } 2284 }
2283 UNREAD (next_char); 2285 UNREAD (next_char);
2284 if (!ok) 2286 if (!ok)
2285 Fsignal (Qinvalid_read_syntax, Fcons (make_string ("?", 1), Qnil)); 2287 Fsignal (Qinvalid_read_syntax, Fcons (make_string ("?", 1), Qnil));
2434 { 2436 {
2435 int next_char = READCHAR; 2437 int next_char = READCHAR;
2436 UNREAD (next_char); 2438 UNREAD (next_char);
2437 2439
2438 if (next_char <= 040 2440 if (next_char <= 040
2439 || index ("\"'`;([#?", next_char) 2441 || index ("\"';([#?", next_char)
2442 || (!first_in_list && next_char == '`')
2440 || (new_backquote_flag && next_char == ',')) 2443 || (new_backquote_flag && next_char == ','))
2441 { 2444 {
2442 *pch = c; 2445 *pch = c;
2443 return Qnil; 2446 return Qnil;
2444 } 2447 }
2456 2459
2457 { 2460 {
2458 char *end = read_buffer + read_buffer_size; 2461 char *end = read_buffer + read_buffer_size;
2459 2462
2460 while (c > 040 2463 while (c > 040
2461 && !index ("\"'`;()[]#", c) 2464 && !index ("\"';()[]#", c)
2465 && !(!first_in_list && c == '`')
2462 && !(new_backquote_flag && c == ',')) 2466 && !(new_backquote_flag && c == ','))
2463 { 2467 {
2464 if (end - p < MAX_MULTIBYTE_LENGTH) 2468 if (end - p < MAX_MULTIBYTE_LENGTH)
2465 { 2469 {
2466 int offset = p - read_buffer; 2470 int offset = p - read_buffer;