Java parser chokes on import packagename.*
------------------------------------------

         Key: JAXME-77
         URL: http://issues.apache.org/jira/browse/JAXME-77
     Project: JaxMe
        Type: Bug
  Components: JaxMeJS  
    Versions: 0.5    
 Environment: WinXP Pro, Java 1.5.0_03
    Reporter: Jonathan Tang


When I use JavaParser to parse a class containing imports of the form "import 
package.name.*", the parser fails on an IllegalStateException("Unknown token: 
87").  Full test case below:

File: JaxmeTest.java

import java.io.FileReader;
import org.apache.ws.jaxme.js.*;
import org.apache.ws.jaxme.js.util.JavaParser;

public class JaxmeTest {
  public static void main(String[] args) {
    JavaSourceFactory jsf = new JavaSourceFactory();
    JavaParser parser = new JavaParser(jsf);
    try {
      parser.parse(new FileReader("JaxmeTest.java"));
    } catch(Exception e) {
      e.printStackTrace();
    }
  }
}

Command line transcript:

C:\workspace\EventMonitor3.0>  javac JaxmeTest.java -cp 
lib\jaxmejs-0.5.jar;lib\antlr.jar
C:\workspace\EventMonitor3.0>  java -cp .;lib\jaxmejs-0.5.jar;lib\antlr.jar 
JaxmeTest
java.lang.IllegalStateException: Unknown token: 87
        at 
org.apache.ws.jaxme.js.util.JavaParser.parseIdentifier(JavaParser.java:177)
        at 
org.apache.ws.jaxme.js.util.JavaParser.parseIdentifier(JavaParser.java:166)
        at 
org.apache.ws.jaxme.js.util.JavaParser.parseIdentifier(JavaParser.java:128)
        at 
org.apache.ws.jaxme.js.util.JavaParser.parseImportStatement(JavaParser.java:122)
        at org.apache.ws.jaxme.js.util.JavaParser.parseAST(JavaParser.java:457)
        at org.apache.ws.jaxme.js.util.JavaParser.parse(JavaParser.java:108)
        at org.apache.ws.jaxme.js.util.JavaParser.parse(JavaParser.java:80)
        at JaxmeTest.main(JaxmeTest.java:10)

Looking through the source, it looks like the JavaParser.parseIdentifier() 
method called by parseImportStatement() expects the identifier to be a 
primitive or ordinary dotted identifier, but the grammar production used in 
java15.g is:

identifierStar
        :       IDENT
                ( DOT^ IDENT )*
                ( DOT^ STAR )?
        ;

This may also have a STAR token, which falls through to the exception case.

For my purposes, I'd be happy if it just ignored the * and didn't choke on the 
file.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to