Mercurial > hg > isophonics-drupal-site
comparison vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | 5fb285c0d0e3 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4c8ae668cc8c |
---|---|
1 <?php | |
2 | |
3 namespace PhpParser; | |
4 | |
5 class ParserFactory { | |
6 const PREFER_PHP7 = 1; | |
7 const PREFER_PHP5 = 2; | |
8 const ONLY_PHP7 = 3; | |
9 const ONLY_PHP5 = 4; | |
10 | |
11 /** | |
12 * Creates a Parser instance, according to the provided kind. | |
13 * | |
14 * @param int $kind One of ::PREFER_PHP7, ::PREFER_PHP5, ::ONLY_PHP7 or ::ONLY_PHP5 | |
15 * @param Lexer|null $lexer Lexer to use. Defaults to emulative lexer when not specified | |
16 * @param array $parserOptions Parser options. See ParserAbstract::__construct() argument | |
17 * | |
18 * @return Parser The parser instance | |
19 */ | |
20 public function create($kind, Lexer $lexer = null, array $parserOptions = array()) { | |
21 if (null === $lexer) { | |
22 $lexer = new Lexer\Emulative(); | |
23 } | |
24 switch ($kind) { | |
25 case self::PREFER_PHP7: | |
26 return new Parser\Multiple([ | |
27 new Parser\Php7($lexer, $parserOptions), new Parser\Php5($lexer, $parserOptions) | |
28 ]); | |
29 case self::PREFER_PHP5: | |
30 return new Parser\Multiple([ | |
31 new Parser\Php5($lexer, $parserOptions), new Parser\Php7($lexer, $parserOptions) | |
32 ]); | |
33 case self::ONLY_PHP7: | |
34 return new Parser\Php7($lexer, $parserOptions); | |
35 case self::ONLY_PHP5: | |
36 return new Parser\Php5($lexer, $parserOptions); | |
37 default: | |
38 throw new \LogicException( | |
39 'Kind must be one of ::PREFER_PHP7, ::PREFER_PHP5, ::ONLY_PHP7 or ::ONLY_PHP5' | |
40 ); | |
41 } | |
42 } | |
43 } |