@@ -168,7 +168,7 @@ static public Object read(PushbackReader r, boolean eofIsError, Object eofValue,
168168 unread (r , ch2 );
169169 }
170170
171- String token = readToken (r , (char ) ch );
171+ String token = readToken (r , (char ) ch , true );
172172 if (RT .suppressRead ())
173173 return null ;
174174 return interpretToken (token );
@@ -184,9 +184,9 @@ static public Object read(PushbackReader r, boolean eofIsError, Object eofValue,
184184 }
185185}
186186
187- static private String readToken (PushbackReader r , char initch ) {
187+ static private String readToken (PushbackReader r , char initch , boolean leadConstituent ) {
188188 StringBuilder sb = new StringBuilder ();
189- if (nonConstituent (initch ))
189+ if (leadConstituent && nonConstituent (initch ))
190190 throw Util .runtimeException ("Invalid leading character: " + (char )initch );
191191
192192 sb .append (initch );
@@ -562,7 +562,7 @@ public Object invoke(Object reader, Object backslash, Object opts) {
562562 int ch = read1 (r );
563563 if (ch == -1 )
564564 throw Util .runtimeException ("EOF while reading character" );
565- String token = readToken (r , (char ) ch );
565+ String token = readToken (r , (char ) ch , false );
566566 if (token .length () == 1 )
567567 return Character .valueOf (token .charAt (0 ));
568568 else if (token .equals ("newline" ))
0 commit comments