高橋征義です。

別にバグとかではない(と思う)ので、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