public function compileSource($source) {
        $source = $this->stripComments($source);
        $source = $this->saveLiterals($source);

        $result = preg_replace_callback('#' . $this->_config['tokenStart'] . '(.*)' . $this->_config['tokenEnd'] . '#smU', array($this, 'onTokenFound'), $source);
        $result = $this->restoreLiterals($result);
        return $result;
    }