Passed
Push — master ( 9787f7...8354ea )
by Tomáš
02:37
created

FilterParser   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 24
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 14
dl 0
loc 24
rs 10
c 0
b 0
f 0
wmc 1

1 Method

Rating   Name   Duplication   Size   Complexity  
A parse() 0 21 1
1
<?php declare(strict_types = 1);
2
3
namespace Apicart\FQL\Tests\Integration;
4
5
use Apicart\FQL\Generator\Common\Aggregate;
6
use Apicart\FQL\Tests\Integration\Generator\SQL\Resolver\AbstractFilterResolver;
7
use Apicart\FQL\Tests\Integration\Generator\SQL\Visitor\Binary;
8
use Apicart\FQL\Tests\Integration\Generator\SQL\Visitor\Group;
9
use Apicart\FQL\Tests\Integration\Generator\SQL\Visitor\Phrase;
10
use Apicart\FQL\Tests\Integration\Generator\SQL\Visitor\Query;
11
use Apicart\FQL\Tests\Integration\Generator\SQL\Visitor\Range;
12
use Apicart\FQL\Tests\Integration\Generator\SQL\Visitor\Word;
13
use Apicart\FQL\Tokenizer\Full;
14
use Apicart\FQL\Tokenizer\Parser;
15
use Apicart\FQL\Tokenizer\Tokenizer;
16
17
final class FilterParser
18
{
19
20
	public static function parse(string $fql, AbstractFilterResolver $filterResolver): string
21
	{
22
		$tokenExtractor = new Full;
23
		$tokenizer = new Tokenizer($tokenExtractor);
24
		$tokenSequence = $tokenizer->tokenize($fql);
25
26
		$parser = new Parser;
27
		$syntaxTree = $parser->parse($tokenSequence);
28
29
		$visitor = new Aggregate(
30
			[
31
				new Binary,
32
				new Group,
33
				new Query,
34
				new Phrase($filterResolver),
35
				new Range($filterResolver),
36
				new Word($filterResolver),
37
			]
38
		);
39
40
		return $visitor->visit($syntaxTree->getRootNode());
41
	}
42
43
}
44