2017-03-05 02:36:17 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace LanguageServer;
|
|
|
|
|
|
|
|
use Microsoft\PhpParser as Tolerant;
|
|
|
|
use LanguageServer\Index\ReadableIndex;
|
|
|
|
|
|
|
|
class ParserResourceFactory {
|
2017-03-15 21:10:29 +00:00
|
|
|
const PARSER_KIND = ParserKind::TOLERANT_PHP_PARSER;
|
2017-03-05 02:36:17 +00:00
|
|
|
|
2017-03-06 00:34:01 +00:00
|
|
|
public static function getParser() {
|
2017-03-05 02:36:17 +00:00
|
|
|
if (self::PARSER_KIND === ParserKind::PHP_PARSER) {
|
|
|
|
return new Parser;
|
|
|
|
} else {
|
|
|
|
return new Tolerant\Parser;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-03-06 00:34:01 +00:00
|
|
|
public static function getDefinitionResolver(ReadableIndex $index) {
|
2017-03-05 02:36:17 +00:00
|
|
|
if (self::PARSER_KIND === ParserKind::PHP_PARSER) {
|
|
|
|
return new DefinitionResolver($index);
|
2017-03-06 07:23:33 +00:00
|
|
|
} elseif (self::PARSER_KIND === ParserKind::TOLERANT_PHP_PARSER) {
|
2017-03-05 02:36:17 +00:00
|
|
|
return new TolerantDefinitionResolver($index);
|
2017-03-06 07:23:33 +00:00
|
|
|
} elseif (self::PARSER_KIND === 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)
|
|
|
|
{
|
|
|
|
if (self::PARSER_KIND === ParserKind::PHP_PARSER) {
|
|
|
|
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
|
|
|
}
|