diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2000-03-08 06:25:19 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2000-03-08 06:25:19 +0000 |
commit | 035226e1fe71085c7c9c84dacd14448870fca9da (patch) | |
tree | 5e20e8c2bdc5ed8f899ec55446e81f040a522ead /parse.y | |
parent | 4d215cd9d3e0c4ea8ba802aa87773d6578c45a15 (diff) |
2000-03-08
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@635 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r-- | parse.y | 29 |
1 files changed, 13 insertions, 16 deletions
@@ -2067,20 +2067,10 @@ read_escape() case 'x': /* hex constant */ { - char buf[2]; - int i; - - for (i=0; i<2; i++) { - int cc = nextc(); + int numlen; - if (cc == -1) goto eof; - buf[i] = cc; - if (!ISXDIGIT(buf[i])) { - pushback(buf[i]); - break; - } - } - c = scan_hex(buf, i, &i); + c = scan_hex(lex_p, 2, &numlen); + lex_p += numlen; } return c; @@ -3595,9 +3585,16 @@ str_extend(list, term) tokadd(c); goto loop_again; case '\\': - c = read_escape(); - tokadd(c); - goto loop_again; + c = nextc(); + if (c == -1) return (NODE*)-1; + if (c == term) { + tokadd(c); + } + else { + tokadd('\\'); + tokadd(c); + } + break; case '{': if (brace != -1) nest++; case '\"': |