From: nobu.nakada@... Date: 2002-06-14T01:35:19+09:00 Subject: [ruby-dev:17439] Re: broken string when unterminated "#{". なかだです。 At Thu, 13 Jun 2002 14:51:01 +0900, Tanaka Akira wrote: > > |さらにいえば、字句解析で "..." を一つのトークンとすることに無理がある > > |のではないかと思っていたりもします。 > > > > これはねえ、最近やってみたんですけど、うまくいきませんでした。 > > yaccの壁は厚い。 > > なんでうまくいかないんだろ、と思ってちょっと試してみました。 > > とりあえず、 > > tSTRING : tSTRING_BEG string_contents tSTRING_END > ; > > tXSTRING : tXSTRING_BEG string_contents tXSTRING_END > ; > > tREGEXP : tREGEXP_BEG string_contents tREGEXP_END > ; > > string_contents : > | string_contents tSTRING_CONTENTS > | string_contents tSTRING_DVAR > | string_contents tSTRING_DBEG compstmt '}' > ; > > というのを加えて、tDSTRING tDXSTRING tDREGEXP を削除しても conflict は > 増えなかったので、なんとなくうまくいきそうな気がします。 これ、"#{a"みたいのはSyntaxErrorになって"#{a"にはならなそうな気 がしますが、どうでしょう。 あとは、コンパイルのタイミングが変わるので、evalで定義された変 数がアクセスできなくなるとか。 -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦