/** * * @param SourceFile $sourceFile * * @throws ParseErrorException * @return ParseResult */ public function parse(SourceFile $sourceFile) { try { $result = new ParseResult($sourceFile->getFileInfo()); $parser = $this->getParserInstance(); $nodes = $parser->parse($sourceFile->getSource()); $this->getTraverserInstance($result)->traverse($nodes); return $result; } catch (\Exception $e) { throw new ParseErrorException('Something went wrwong', ParseErrorException::GeneralParseError, $e); } }