Author: André Rothe (andre.rothe@phosco.info)
 /**
  * It parses the given SQL statement and generates a detailled
  * output array for every part of the statement. The method can
  * also generate [position] fields within the output, which hold
  * the character position for every statement part. The calculation
  * of the positions needs some time, if you don't need positions in
  * your application, set the parameter to false.
  *
  * @param String  $sql           The SQL statement.
  * @param boolean $calcPositions True, if the output should contain [position], false otherwise.
  *
  * @return array An associative array with all meta information about the SQL statement.
  */
 public function parse($sql, $calcPositions = false)
 {
     $processor = new DefaultProcessor($this->options);
     $queries = $processor->process($sql);
     // calc the positions of some important tokens
     if ($calcPositions) {
         $calculator = new PositionCalculator();
         $queries = $calculator->setPositionsWithinSQL($sql, $queries);
     }
     // store the parsed queries
     $this->parsed = $queries;
     return $this->parsed;
 }