current:

501 % irb
 >> /blah\/blah/
=> /blah\/blah/   # good
 >> %r%blah/blah%
=> /blah\/blah/   # good
 >> %r%blah\%blah%
=> /blah\%blah/   # bad?

proposed:

 >> %r%blah\%blah%
=> /blah%blah/

The intent of the lexing code is to normalize to /blah\/blah/ form,  
right?

502 % svn diff parse.y
Index: parse.y
===================================================================
--- parse.y	(revision 15546)
+++ parse.y	(working copy)
@@ -2968,7 +2968,7 @@
  	return -1;

        default:
-	if (c != '\\' || c != term)
+	if (c == '\\' || c != term)
  	    tokadd('\\');
  	tokadd(c);
      }

Also, I'd really like to add this:

503 % svn diff Makefile.in
Index: Makefile.in
===================================================================
--- Makefile.in	(revision 15546)
+++ Makefile.in	(working copy)
@@ -181,3 +181,6 @@

  ext/extinit.$(OBJEXT): ext/extinit.c $(SETUP)
  	$(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(OUTFLAG)$@ -c ext/extinit.c
+
+irb:
+	$(RUNRUBY) $(srcdir)/bin/irb

It'd make doing quick changes/verifications a lot simpler.