NOTE: often, if you are making a small change to the .jj file, you can simply run "ant javacc" and skip the steps below. JavaCC will print warnings like this: Warning: ParseException.java: File is obsolete. Please rename or delete this file so that a new one can be generated for you. which you should ignore (ie, simply keep the ParseException.java class that's already present). If, instead, you'd like to fully rebuild the StandardQueryParser, here's how: * Delete these files: StandardQueryParser.java StandardQueryParserConstants.java StandardQueryParserTokenManager.java TokenMgrError.java JavaCharStream.java Token.java * Run "ant javacc". That will generate the all the classes * To avoid lots of warnings in the generated code: add @SupressWarnings("all"), immediately preceding the class declaration to: QueryParserTokenManager.java TokenMgrError.java JavaCharStream.java Token.java JavaCharStream.java * Remove all imports from TokenMgrError.java * Fix the ParseException class: - Change it to extend from QueryNodeParseException: "public class ParseException extends QueryNodeParseException". - Recreate the all the constructors like this: public ParseException(Token currentTokenVal, int[][] expectedTokenSequencesVal, String[] tokenImageVal) { super(new MessageImpl(QueryParserMessages.INVALID_SYNTAX, initialise( currentTokenVal, expectedTokenSequencesVal, tokenImageVal))); this.currentToken = currentTokenVal; this.expectedTokenSequences = expectedTokenSequencesVal; this.tokenImage = tokenImageVal; } public ParseException(Message message) { super(message); } public ParseException() { super(new MessageImpl(QueryParserMessages.INVALID_SYNTAX, "Error")); } - Fix all imports