re PR libgcj/1338 (StreamTokenizer does not handle /* comments correctly)
2001-01-09 Oskar Liljeblad <osk@hem.passagen.se> Fix for PR libgcj/1338: * java/io/StreamTokenizer.java (nextToken): Handle // and /* before commentChar. Fixed typos in comments. From-SVN: r38830
This commit is contained in:
parent
9f56ed15ce
commit
10a855c7f4
@ -1,3 +1,9 @@
|
|||||||
|
2001-01-09 Oskar Liljeblad <osk@hem.passagen.se>
|
||||||
|
|
||||||
|
Fix for PR libgcj/1338:
|
||||||
|
* java/io/StreamTokenizer.java (nextToken): Handle // and /* before
|
||||||
|
commentChar. Fixed typos in comments.
|
||||||
|
|
||||||
2001-01-08 Warren Levy <warrenl@redhat.com>
|
2001-01-08 Warren Levy <warrenl@redhat.com>
|
||||||
|
|
||||||
Fix for PR libgcj/1411:
|
Fix for PR libgcj/1411:
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 1998, 1999, 2000 Free Software Foundation
|
/* Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation
|
||||||
|
|
||||||
This file is part of libgcj.
|
This file is part of libgcj.
|
||||||
|
|
||||||
@ -231,7 +231,7 @@ public class StreamTokenizer
|
|||||||
* The start of a comment also terminates a word. Any character with a
|
* The start of a comment also terminates a word. Any character with a
|
||||||
* non-alphabetic and non-numeric attribute (such as white space, a quote,
|
* non-alphabetic and non-numeric attribute (such as white space, a quote,
|
||||||
* or a commet) are treated as non-alphabetic and terminate the word.
|
* or a commet) are treated as non-alphabetic and terminate the word.
|
||||||
* <li>If a comment charcters is parsed, then all remaining characters on
|
* <li>If a comment character is parsed, then all remaining characters on
|
||||||
* the current line are skipped and another token is parsed. Any EOL or
|
* the current line are skipped and another token is parsed. Any EOL or
|
||||||
* EOF's encountered are not discarded, but rather terminate the comment.
|
* EOF's encountered are not discarded, but rather terminate the comment.
|
||||||
* <li>If a quote character is parsed, then all characters up to the
|
* <li>If a quote character is parsed, then all characters up to the
|
||||||
@ -289,6 +289,50 @@ public class StreamTokenizer
|
|||||||
return (ttype = TT_EOL);
|
return (ttype = TT_EOL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ch == '/')
|
||||||
|
if ((ch = in.read()) == '/' && slashSlash)
|
||||||
|
{
|
||||||
|
while ((ch = in.read()) != '\n' && ch != '\r' && ch != TT_EOF)
|
||||||
|
;
|
||||||
|
if (ch != TT_EOF)
|
||||||
|
in.unread(ch);
|
||||||
|
return nextToken(); // Recursive, but not too deep in normal cases
|
||||||
|
}
|
||||||
|
else if (ch == '*' && slashStar)
|
||||||
|
{
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
ch = in.read();
|
||||||
|
if (ch == '*')
|
||||||
|
{
|
||||||
|
if ((ch = in.read()) == '/')
|
||||||
|
break;
|
||||||
|
else if (ch != TT_EOF)
|
||||||
|
in.unread(ch);
|
||||||
|
}
|
||||||
|
else if (ch == '\n' || ch == '\r')
|
||||||
|
{
|
||||||
|
lineNumber++;
|
||||||
|
if (ch == '\r' && (ch = in.read()) != '\n')
|
||||||
|
{
|
||||||
|
if (ch != TT_EOF)
|
||||||
|
in.unread(ch);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (ch == TT_EOF)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nextToken(); // Recursive, but not too deep in normal cases
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (ch != TT_EOF)
|
||||||
|
in.unread(ch);
|
||||||
|
ch = '/';
|
||||||
|
}
|
||||||
|
|
||||||
if (ch == TT_EOF)
|
if (ch == TT_EOF)
|
||||||
ttype = TT_EOF;
|
ttype = TT_EOF;
|
||||||
else if (isNumeric(ch))
|
else if (isNumeric(ch))
|
||||||
@ -419,50 +463,6 @@ public class StreamTokenizer
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (ch == '/')
|
|
||||||
if ((ch = in.read()) == '/' && slashSlash)
|
|
||||||
{
|
|
||||||
while ((ch = in.read()) != '\n' && ch != '\r' && ch != TT_EOF)
|
|
||||||
;
|
|
||||||
if (ch != TT_EOF)
|
|
||||||
in.unread(ch);
|
|
||||||
return nextToken(); // Recursive, but not too deep in normal cases
|
|
||||||
}
|
|
||||||
else if (ch == '*' && slashStar)
|
|
||||||
{
|
|
||||||
while (true)
|
|
||||||
{
|
|
||||||
ch = in.read();
|
|
||||||
if (ch == '*')
|
|
||||||
{
|
|
||||||
if ((ch = in.read()) == '/')
|
|
||||||
break;
|
|
||||||
else if (ch != TT_EOF)
|
|
||||||
in.unread(ch);
|
|
||||||
}
|
|
||||||
else if (ch == '\n' || ch == '\r')
|
|
||||||
{
|
|
||||||
lineNumber++;
|
|
||||||
if (ch == '\r' && (ch = in.read()) != '\n')
|
|
||||||
{
|
|
||||||
if (ch != TT_EOF)
|
|
||||||
in.unread(ch);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (ch == TT_EOF)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nextToken(); // Recursive, but not too deep in normal cases
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (ch != TT_EOF)
|
|
||||||
in.unread(ch);
|
|
||||||
ch = '/';
|
|
||||||
}
|
|
||||||
|
|
||||||
ttype = ch;
|
ttype = ch;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -481,7 +481,7 @@ public class StreamTokenizer
|
|||||||
* quote, or comment) will be set on this character. This character will
|
* quote, or comment) will be set on this character. This character will
|
||||||
* parse as its own token.
|
* parse as its own token.
|
||||||
*
|
*
|
||||||
* @param c The charcter to make ordinary, passed as an int
|
* @param c The character to make ordinary, passed as an int
|
||||||
*/
|
*/
|
||||||
public void ordinaryChar(int ch)
|
public void ordinaryChar(int ch)
|
||||||
{
|
{
|
||||||
@ -626,7 +626,7 @@ public class StreamTokenizer
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method sets the whitespace attribute for all charcters in the
|
* This method sets the whitespace attribute for all characters in the
|
||||||
* specified range, range terminators included.
|
* specified range, range terminators included.
|
||||||
*
|
*
|
||||||
* @param low The low end of the range of values to set the whitespace
|
* @param low The low end of the range of values to set the whitespace
|
||||||
@ -645,7 +645,7 @@ public class StreamTokenizer
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method sets the alphabetic attribute for all charcters in the
|
* This method sets the alphabetic attribute for all characters in the
|
||||||
* specified range, range terminators included.
|
* specified range, range terminators included.
|
||||||
*
|
*
|
||||||
* @param low The low end of the range of values to set the alphabetic
|
* @param low The low end of the range of values to set the alphabetic
|
||||||
|
Loading…
Reference in New Issue
Block a user