From: nobu.nakada@... Date: 1999-09-15T23:53:08+09:00 Subject: [ruby-dev:7846] newline code and __END__, here document なかだです。 CP/M(用の ruby ってあるのか?) & DOS のように改行が CR LF のソー スを LF の環境で使おうとすると、__END__ と here document を認識し てくれません。\ による継続行では CR LF でもつながってくれるので、 同じになってくれるとありがたいです。 OS/9 & Mac なソースも使えるようにしようかなとか思ったんですが、 ruby_sourceline の扱いとか、めんどくさくなりそうなんで止めました。 きりないし。というか、DOS なソースも改行コードにたまたま LF が入っ てるんでうまく行くだけなんですが。 --- dist/parse.y Fri Aug 13 14:45:09 1999 +++ build/parse.y Tue Sep 14 15:23:22 1999 @@ -1840,7 +1840,8 @@ ruby_sourceline++; lex_pbeg = lex_p = RSTRING(v)->ptr; lex_pend = lex_p + RSTRING(v)->len; - if (strncmp(lex_pbeg, "__END__", 7) == 0 && lex_pbeg[7] == '\n') { + if (strncmp(lex_pbeg, "__END__", 7) == 0 && + (RSTRING(v)->len == 7 || lex_pbeg[7] == '\n' || lex_pbeg[7] == '\r')) { ruby__end__seen = 1; lex_lastline = 0; return -1; @@ -1853,6 +1854,10 @@ } } c = (unsigned char)*lex_p++; + if (c == '\r' && lex_p <= lex_pend && *lex_p == '\n') { + lex_p++; + c = '\n'; + } return c; } @@ -3019,10 +3024,6 @@ case '\\': c = nextc(); - if (c == '\r') { - c = nextc(); - if (c != '\n') pushback(c); - } if (c == '\n') { space_seen = 1; goto retry; /* skip \\n */ -- そうだ 強気に ちょっと インチキに☆彡 中田 "Bugるくらいがちょうどいいかも;-)" 伸悦