private void parseProcess(CommonTokenStream tokens) {
		//ANTLR parse
		EsperParser parser = new EsperParser(tokens);		
		EsperParser.program_return ret;

		try {
			ret = parser.program();
		} catch (RecognitionException e) {
			System.out.println("Exception occurred in parser!");
			e.printStackTrace();
			return;
		}
		parserSuccess = (parserErrors = parser.getNumberOfSyntaxErrors()) <= 0;
		
		//Acquire parse result
		CommonTree ast = (CommonTree) ret.getTree();
		
		//Post parse
		EsperPostParser postParser = new EsperPostParser();
		parseRoot = postParser.getParseTree(ast);
		postParser.getVariableList();
		variableList = postParser.variableList;
		
		//Optimise
		EsperOptimiser optimiser = new EsperOptimiser();
		parseRoot = optimiser.optimise(parseRoot);
		
		//Print output
		if (flagParserOutput) {
			System.out.println("Parser output:");
			parseRoot.print(0);
		}
	}