From: TAKAHASHI Masayoshi Date: 2001-09-06T20:30:10+09:00 Subject: [ruby-dev:14730] ruby-lex.rb: get value from TkSTRING and TkCOMMENT 高橋征義です。 別にバグとかではない(と思う)ので、1.6.5には入れなくても 構わないのですが、irbへ変更の提案です。 ruby-lex.rb を使っているのですが、TkSTRINGとTkCOMMENTと について、 obj.value でその文字列そのもの、コメント そのものを取り出せるようにはできないでしょうか? 変更は ruby-lex.rb と ruby-token.rb とをこんな感じに するとできると思います。 --- ruby-token.rb.org Tue Sep 19 20:12:34 2000 +++ ruby-token.rb Thu Sep 6 18:34:22 2001 @@ -224,7 +224,7 @@ [:TkCOMMA, Token, ","], [:TkSEMICOLON, Token, ";"], - [:TkCOMMENT], + [:TkCOMMENT, TkVal], [:TkRD_COMMENT], [:TkSPACE], [:TkNL], --- ruby-lex.rb.orig Sat Sep 1 02:26:42 2001 +++ ruby-lex.rb Sat Sep 1 14:50:21 2001 @@ -865,10 +865,13 @@ def identify_string(ltype, quoted = ltype) @ltype = ltype @quoted = quoted + token = "" subtype = nil begin while ch = getc + token.concat ch if @quoted == ch + token.chop! break elsif @ltype != "'" && @ltype != "]" and ch == "#" subtype = true @@ -882,9 +885,9 @@ end end if subtype - Token(DLtype2Token[ltype]) + Token(DLtype2Token[ltype], token) else - Token(Ltype2Token[ltype]) + Token(Ltype2Token[ltype], token) end ensure @ltype = nil @@ -895,18 +898,20 @@ def identify_comment @ltype = "#" + token = "" while ch = getc - if ch == "\\" #" - read_escape - end +# if ch == "\\" #" +# read_escape +# end if ch == "\n" @ltype = nil ungetc break end + token.concat ch end - return Token(TkCOMMENT) + return Token(TkCOMMENT, token) end def read_escape 高橋征義 (TAKAHASHI Masayoshi) Email:maki@inac.co.jp