Completed
Push — master ( 56b74c...17974d )
by Ilias
02:06
created

DefaultStrategy::executeFor()   A

Complexity

Conditions 3
Paths 2

Size

Total Lines 20
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 16
CRAP Score 3

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 20
ccs 16
cts 16
cp 1
rs 9.4285
cc 3
eloc 14
nc 2
nop 1
crap 3
1
<?php
2
3
4
namespace CondParse\ParseStrategy;
5
6
7
use CondParse\TokenParserParameter;
8
9
class DefaultStrategy implements ParseStrategyInterface
10
{
11
12
    /**
13
     * @param TokenParserParameter $parserParameter
14
     * @return bool
15
     */
16 4
    public function shouldExecuteFor(TokenParserParameter $parserParameter)
17
    {
18 4
        return true;
19
    }
20
21
    /**
22
     * @param TokenParserParameter $parserParameter
23
     * @return void
24
     */
25 4
    public function executeFor(TokenParserParameter $parserParameter)
26
    {
27
        while (
28 4
            ! $parserParameter->getOperatorStack()->isEmpty()
29 4
            && $parserParameter->getTokenMap()
30 4
                ->compareOperatorPrecedence(
31 4
                    $parserParameter->getLexerToken(),
32 4
                    $parserParameter->getOperatorStack()->top()
33 4
                ) <= 0
34 4
        ) {
35 4
            $parserParameter->getOperandStack()->push(
36
                $parserParameter
37 4
                    ->getTokenMap()
38 4
                    ->buildOperand($parserParameter->getOperatorStack()->pop())
39 4
                    ->consumeTokens($parserParameter->getOperandStack())
40 4
            );
41 4
        }
42
43 4
        $parserParameter->getOperatorStack()->push($parserParameter->getLexerToken());
44 4
    }
45
}
46