Skip to content

Commit 34991a5

Browse files
authored
Merge pull request #78 from goaop/fix/use-lexer-for-new-parser
Configure lexer to capture token positions for new parser
2 parents c60371e + d7b8b71 commit 34991a5

File tree

1 file changed

+17
-4
lines changed

1 file changed

+17
-4
lines changed

src/ReflectionEngine.php

+17-4
Original file line numberDiff line numberDiff line change
@@ -53,18 +53,31 @@ class ReflectionEngine
5353
*/
5454
protected static $traverser = null;
5555

56+
/**
57+
* @var null|Lexer
58+
*/
59+
protected static $lexer = null;
60+
5661
private function __construct() {}
5762

5863
public static function init(LocatorInterface $locator)
5964
{
65+
self::$lexer = new Lexer(['usedAttributes' => [
66+
'comments',
67+
'startLine',
68+
'endLine',
69+
'startTokenPos',
70+
'endTokenPos',
71+
'startFilePos',
72+
'endFilePos'
73+
]]);
74+
6075
$refParser = new \ReflectionClass(Parser::class);
6176
$isNewParser = $refParser->isInterface();
6277
if (!$isNewParser) {
63-
self::$parser = new Parser(new Lexer(['usedAttributes' => [
64-
'comments', 'startLine', 'endLine', 'startTokenPos', 'endTokenPos', 'startFilePos', 'endFilePos'
65-
]]));
78+
self::$parser = new Parser(self::$lexer);
6679
} else {
67-
self::$parser = (new ParserFactory)->create(ParserFactory::PREFER_PHP7);
80+
self::$parser = (new ParserFactory)->create(ParserFactory::PREFER_PHP7, self::$lexer);
6881
}
6982

7083
self::$traverser = $traverser = new NodeTraverser();

0 commit comments

Comments
 (0)