[kaffe] Bug report (java.io.StreamTokenizer)

Ito Kazumitsu ito.kazumitsu@hitachi-cable.co.jp
Mon Jun 30 17:28:01 2003


In message "Re: [kaffe] Bug report (java.io.StreamTokenizer)"
    on 03/07/01, Ito Kazumitsu <kaz@maczuka.gcd.org> writes:

> Running echo "121"| java StreamTokenizerTest2 1 N S and so on,
> I found the precedence is not so simple in Sun's JDK.
> It depends on in what sequence initialization methods are called.
> 
> bash$ echo "121"| java StreamTokenizerTest2 1 C S
> null: 50
> null: 10
> null: -1
> bash$ echo "121"| java StreamTokenizerTest2 1 S C
> null: 10
> null: -1
> bash$

Having tested various cases,  I have had an impression
that Sun's java.io.StreamTokenizer uses the following
rule:

(From the API doc) Each byte read from the input stream is regarded
as a character in the range '\u0000' through '\u00FF'. The character
value is used to look up five possible attributes of the character:
white space, alphabetic, numeric, string quote, and comment character.
Each character can have zero or more of these attributes.
(And I guess) BUT ONLY THE ATTRIBUTE MOST RECENTLY ASSIGNED IS EFFECTIVE.

For example,

bash$ echo "121" | java StreamTokenizerTest2 1 W C
null: 10
null: -1
bash$ echo "121" | java StreamTokenizerTest2 1 W C S
null: 50
null: 10
null: -1
bash$ echo "121" | java StreamTokenizerTest2 1 W S C
null: 10
null: -1
bash$ echo "121" | java StreamTokenizerTest2 1 S C W
1: -3
null: 50
1: -3
null: 10
null: -1
bash$ echo "121" | java StreamTokenizerTest2 1 S C W N
121.0: -2
null: 10
null: -1
bash$ echo "121" | java StreamTokenizerTest2 1 S C W N S
21.0: -2
null: 10
null: -1