S
Sebastian Millies
Hallo,
ich versuche, Coding für die lexikalische Analyse arithmetischer
Ausdrücke anzupassen, das ursprünglich von Axel T. Schreiner (Uni
Osnabrück) stammt. Beim Versuch der Ausführung bekomme ich:
java.lang.VerifyError: (class: com/ids/arithmeticexpr/Scanner, method:
<init> signature: (Ljava/io/ReaderV) Expecting to find object/array on
stack
Grund ist anscheinend der Versuch, eine anonyme Subklasse von FilterReader
als Argument des super()-Aufrufs zu verwenden. Wie kann ich (in Java 5)
erreichen, was ich will? Hier der Code:
/** lexical analyzer for arithmetic expressions.
Fixes the lookahead problem for TT_EOL.
*/
public class Scanner extends StreamTokenizer
{
/** kludge: pushes an anonymous Reader which inserts
a space after each newline.
*/
public Scanner( Reader r )
{
super( new FilterReader( new BufferedReader( r ) )
{
protected boolean addSpace; // kludge to add space after \n
public int read() throws IOException
{
int ch = addSpace ? ' ' : in.read();
addSpace = ch == '\n';
return ch;
}
});
}
public static void main( String[] args )
{
Scanner scanner = new Scanner( new StringReader("1+2") ); // !!!
}
}
Vielen Dank,
Sebastian
ich versuche, Coding für die lexikalische Analyse arithmetischer
Ausdrücke anzupassen, das ursprünglich von Axel T. Schreiner (Uni
Osnabrück) stammt. Beim Versuch der Ausführung bekomme ich:
java.lang.VerifyError: (class: com/ids/arithmeticexpr/Scanner, method:
<init> signature: (Ljava/io/ReaderV) Expecting to find object/array on
stack
Grund ist anscheinend der Versuch, eine anonyme Subklasse von FilterReader
als Argument des super()-Aufrufs zu verwenden. Wie kann ich (in Java 5)
erreichen, was ich will? Hier der Code:
/** lexical analyzer for arithmetic expressions.
Fixes the lookahead problem for TT_EOL.
*/
public class Scanner extends StreamTokenizer
{
/** kludge: pushes an anonymous Reader which inserts
a space after each newline.
*/
public Scanner( Reader r )
{
super( new FilterReader( new BufferedReader( r ) )
{
protected boolean addSpace; // kludge to add space after \n
public int read() throws IOException
{
int ch = addSpace ? ' ' : in.read();
addSpace = ch == '\n';
return ch;
}
});
}
public static void main( String[] args )
{
Scanner scanner = new Scanner( new StringReader("1+2") ); // !!!
}
}
Vielen Dank,
Sebastian