public long compileQuery(
final String query, final IndexScanCreatorInterface indexScanCreator) throws Exception {
final Date start = new Date();
final RIFParser parser = new RIFParser(new StringReader(query));
this.compilationUnit = parser.CompilationUnit();
this.rifDocument = (Document) this.compilationUnit.accept(new ParseSyntaxTreeVisitor(), null);
final BuildOperatorGraphRuleVisitor forward = new BuildOperatorGraphRuleVisitor(indexScanCreator);
final ValidateRuleVisitor valVisitor = new ValidateRuleVisitor();
final NormalizeRuleVisitor normVisitor = new NormalizeRuleVisitor();
final SubstituteFunctionCallsVisitor subVisitor = new SubstituteFunctionCallsVisitor();