Example #1
0
 /**
  * Parse a given file for defintions of classes, traits and interfaces
  *
  * @param SourceFile $source file to process
  *
  * @return ParseResult
  */
 public function parse(SourceFile $source)
 {
     $this->found = array();
     $this->redeclarations = array();
     $this->inNamespace = '';
     $this->aliases = array();
     $this->bracketLevel = 0;
     $this->inUnit = '';
     $this->nsBracket = 0;
     $this->classBracket = 0;
     $this->tokenArray = $source->getTokens();
     $tokenCount = count($this->tokenArray);
     $tokList = array_keys($this->methodMap);
     for ($t = 0; $t < $tokenCount; $t++) {
         $current = (array) $this->tokenArray[$t];
         if ($current[0] == T_STRING && $current[1] == 'trait' && T_TRAIT == -1) {
             // PHP < 5.4 compat fix
             $current[0] = T_TRAIT_53;
             $this->tokenArray[$t] = $current;
         }
         if (!in_array($current[0], $tokList)) {
             continue;
         }
         // PHP 5.5 has classname::class, reusing T_CLASS
         if ($this->tokenArray[$t - 1][0] == T_DOUBLE_COLON) {
             continue;
         }
         $t = call_user_func(array($this, $this->methodMap[$current[0]]), $t);
     }
     return new ParseResult($this->found, $this->dependencies, $this->redeclarations);
 }