[ http://issues.apache.org/jira/browse/JAXME-77?page=all ]
Kenney Westerhof updated JAXME-77: ---------------------------------- Attachment: JAXME-77.patch This patch fixes the problem. JUnit test included. > Java parser chokes on import packagename.* > ------------------------------------------ > > Key: JAXME-77 > URL: http://issues.apache.org/jira/browse/JAXME-77 > Project: JaxMe > Issue Type: Bug > Components: JaxMeJS > Affects Versions: 0.5 > Environment: WinXP Pro, Java 1.5.0_03 > Reporter: Jonathan Tang > Attachments: JAXME-77.patch > > > 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]