Esempio n. 1
0
 /**
  * Parses the given source file or directory with the default tokenizer
  * and node builder implementations.
  *
  * @param string  $fileOrDirectory   A source file or a source directory.
  * @param boolean $ignoreAnnotations The parser should ignore annotations.
  *
  * @return PHP_Depend_Code_NodeIterator
  */
 public static function parseSource($fileOrDirectory, $ignoreAnnotations = false)
 {
     include_once 'PHP/Depend/Parser.php';
     include_once 'PHP/Depend/Builder/Default.php';
     include_once 'PHP/Depend/Code/Filter/Collection.php';
     include_once 'PHP/Depend/Tokenizer/Internal.php';
     include_once 'PHP/Depend/Input/ExcludePathFilter.php';
     include_once 'PHP/Depend/Input/Iterator.php';
     if (file_exists($fileOrDirectory) === false) {
         $fileOrDirectory = self::createCodeResourceURI($fileOrDirectory);
     }
     if (is_dir($fileOrDirectory)) {
         $it = new PHP_Depend_Input_Iterator(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($fileOrDirectory)), new PHP_Depend_Input_ExcludePathFilter(array('.svn')));
     } else {
         $it = new ArrayIterator(array($fileOrDirectory));
     }
     $files = array();
     foreach ($it as $file) {
         if (is_object($file)) {
             $files[] = realpath($file->getPathname());
         } else {
             $files[] = $file;
         }
     }
     sort($files);
     $builder = new PHP_Depend_Builder_Default();
     foreach ($files as $file) {
         $tokenizer = new PHP_Depend_Tokenizer_Internal();
         $tokenizer->setSourceFile($file);
         $parser = new PHP_Depend_Parser($tokenizer, $builder);
         if ($ignoreAnnotations === true) {
             $parser->setIgnoreAnnotations();
         }
         $parser->parse();
     }
     return $builder->getPackages();
 }
Esempio n. 2
0
 /**
  * This method performs the parsing process of all source files. It expects
  * that the <b>$_builder</b> property was initialized with a concrete builder
  * implementation.
  *
  * @return void
  */
 private function _performParseProcess()
 {
     // Reset list of thrown exceptions
     $this->_parseExceptions = array();
     $tokenizer = new PHP_Depend_Tokenizer_CacheDecorator(new PHP_Depend_Tokenizer_Internal());
     $this->fireStartParseProcess($this->_builder);
     foreach ($this->_createFileIterator() as $file) {
         $tokenizer->setSourceFile($file);
         $parser = new PHP_Depend_Parser($tokenizer, $this->_builder);
         $parser->setMaxNestingLevel(1024);
         // Disable annotation parsing?
         if ($this->_withoutAnnotations === true) {
             $parser->setIgnoreAnnotations();
         }
         $this->fireStartFileParsing($tokenizer);
         try {
             $parser->parse();
         } catch (PHP_Depend_Parser_Exception $e) {
             $this->_parseExceptions[] = $e;
         }
         $this->fireEndFileParsing($tokenizer);
     }
     $this->fireEndParseProcess($this->_builder);
 }