in gen_stub.php [1330:1360]
function parseStubFile(string $code): FileInfo {
$lexer = new PhpParser\Lexer();
$parser = new PhpParser\Parser\Php7($lexer);
$nodeTraverser = new PhpParser\NodeTraverser;
$nodeTraverser->addVisitor(new PhpParser\NodeVisitor\NameResolver);
$prettyPrinter = new class extends Standard {
protected function pName_FullyQualified(Name\FullyQualified $node) {
return implode('\\', $node->parts);
}
};
$stmts = $parser->parse($code);
$nodeTraverser->traverse($stmts);
$fileInfo = new FileInfo;
$fileDocComment = getFileDocComment($stmts);
if ($fileDocComment) {
$fileTags = parseDocComment($fileDocComment);
foreach ($fileTags as $tag) {
if ($tag->name === 'generate-function-entries') {
$fileInfo->generateFunctionEntries = true;
$fileInfo->declarationPrefix = $tag->value ? $tag->value . " " : "";
} else if ($tag->name === 'generate-legacy-arginfo') {
$fileInfo->generateLegacyArginfo = true;
}
}
}
handleStatements($fileInfo, $stmts, $prettyPrinter);
return $fileInfo;
}