2017-03-05 02:36:17 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace LanguageServer;
|
|
|
|
|
|
|
|
use Microsoft\PhpParser as Tolerant;
|
|
|
|
use LanguageServer\Index\ReadableIndex;
|
|
|
|
|
|
|
|
class ParserResourceFactory {
|
2017-04-16 22:11:14 +00:00
|
|
|
const PARSER_KIND = ParserKind::TOLERANT_PHP_PARSER;
|
|
|
|
|
2017-03-28 20:53:53 +00:00
|
|
|
private static function getParserKind () {
|
|
|
|
global $parserKind;
|
|
|
|
return isset($parserKind) ? $parserKind : self::PARSER_KIND;
|
|
|
|
}
|
|
|
|
|
2017-03-06 00:34:01 +00:00
|
|
|
public static function getParser() {
|
2017-03-28 20:53:53 +00:00
|
|
|
if (self::getParserKind() === ParserKind::PHP_PARSER || self::getParserKind() === ParserKind::DIAGNOSTIC_PHP_PARSER) {
|
2017-03-05 02:36:17 +00:00
|
|
|
return new Parser;
|
|
|
|
} else {
|
|
|
|
return new Tolerant\Parser;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-03-06 00:34:01 +00:00
|
|
|
public static function getDefinitionResolver(ReadableIndex $index) {
|
2017-03-28 20:53:53 +00:00
|
|
|
switch (self::getParserKind()) {
|
|
|
|
case ParserKind::PHP_PARSER:
|
|
|
|
return new DefinitionResolver($index);
|
|
|
|
case ParserKind::TOLERANT_PHP_PARSER:
|
|
|
|
return new TolerantDefinitionResolver($index);
|
|
|
|
case ParserKind::DIAGNOSTIC_PHP_PARSER:
|
|
|
|
return new LoggedDefinitionResolver($index);
|
|
|
|
case ParserKind::DIAGNOSTIC_TOLERANT_PHP_PARSER:
|
|
|
|
return new LoggedTolerantDefinitionResolver($index);
|
2017-03-05 02:36:17 +00:00
|
|
|
}
|
|
|
|
}
|
2017-03-06 00:34:01 +00:00
|
|
|
|
|
|
|
public static function getTreeAnalyzer($parser, $content, $docBlockFactory, $definitionResolver, $uri)
|
|
|
|
{
|
2017-03-28 20:53:53 +00:00
|
|
|
if (self::getParserKind() === ParserKind::PHP_PARSER || self::getParserKind() === ParserKind::DIAGNOSTIC_PHP_PARSER) {
|
2017-03-06 00:34:01 +00:00
|
|
|
return new TreeAnalyzer($parser, $content, $docBlockFactory, $definitionResolver, $uri);
|
|
|
|
} else {
|
|
|
|
return new TolerantTreeAnalyzer($parser, $content, $docBlockFactory, $definitionResolver, $uri);
|
|
|
|
}
|
|
|
|
}
|
2017-03-05 02:36:17 +00:00
|
|
|
}
|