/** * 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(); }
/** * 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); }