Mercurial > hg > isophonics-drupal-site
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,43 @@ +<?php + +namespace PhpParser; + +class ParserFactory { + const PREFER_PHP7 = 1; + const PREFER_PHP5 = 2; + const ONLY_PHP7 = 3; + const ONLY_PHP5 = 4; + + /** + * Creates a Parser instance, according to the provided kind. + * + * @param int $kind One of ::PREFER_PHP7, ::PREFER_PHP5, ::ONLY_PHP7 or ::ONLY_PHP5 + * @param Lexer|null $lexer Lexer to use. Defaults to emulative lexer when not specified + * @param array $parserOptions Parser options. See ParserAbstract::__construct() argument + * + * @return Parser The parser instance + */ + public function create($kind, Lexer $lexer = null, array $parserOptions = array()) { + if (null === $lexer) { + $lexer = new Lexer\Emulative(); + } + switch ($kind) { + case self::PREFER_PHP7: + return new Parser\Multiple([ + new Parser\Php7($lexer, $parserOptions), new Parser\Php5($lexer, $parserOptions) + ]); + case self::PREFER_PHP5: + return new Parser\Multiple([ + new Parser\Php5($lexer, $parserOptions), new Parser\Php7($lexer, $parserOptions) + ]); + case self::ONLY_PHP7: + return new Parser\Php7($lexer, $parserOptions); + case self::ONLY_PHP5: + return new Parser\Php5($lexer, $parserOptions); + default: + throw new \LogicException( + 'Kind must be one of ::PREFER_PHP7, ::PREFER_PHP5, ::ONLY_PHP7 or ::ONLY_PHP5' + ); + } + } +}