/**
  * Parse a source text and return a ConceptSearchSource object if exists.
  * @param string $source_text
  */
 public function parse($source_text)
 {
     $matches = array();
     if ($source_text == '*') {
         $css = new ConceptSearchSource();
         $css->setSourceAllDictionaries();
         return $css;
     } elseif (preg_match('/^(.+):map\\((\\d+)\\)/', $source_text, $matches)) {
         $css = $this->getMapSource($matches[2], $matches[1]);
         return $css;
     } elseif (preg_match('/^list\\((\\d+)\\)/', $source_text, $matches)) {
         $css = $this->getConceptList($matches[1]);
         return $css;
     } else {
         $css = $this->getDictionary($source_text);
         return $css;
     }
     return null;
 }