| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 | 
							- <?php declare(strict_types=1);
 
- 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(int $kind, Lexer $lexer = null, array $parserOptions = []) : Parser {
 
-         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'
 
-                 );
 
-         }
 
-     }
 
- }
 
 
  |