Completed
Push — master ( 0c1f61...7ddb9b )
by Ilias
02:22
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
    public function shouldExecuteFor(TokenParserParameter $parserParameter)
17
    {
18
        return true;
19
    }
20
21
    /**
22
     * @param TokenParserParameter $parserParameter
23
     * @return void
24
     */
25 3
    public function executeFor(TokenParserParameter $parserParameter)
26
    {
27
        while (
28 3
            ! $parserParameter->getOperatorStack()->isEmpty()
29 3
            && $parserParameter->getTokenMap()
30 3
                ->compareOperatorPrecedence(
31 3
                    $parserParameter->getLexerToken(),
32 3
                    $parserParameter->getOperatorStack()->top()
33 3
                ) <= 0
34 3
        ) {
35 3
            $parserParameter->getOperandStack()->push(
36
                $parserParameter
37 3
                    ->getTokenMap()
38 3
                    ->buildOperand($parserParameter->getOperatorStack()->pop())
39 3
                    ->consumeTokens($parserParameter->getOperandStack())
40 3
            );
41 3
        }
42
43 3
        $parserParameter->getOperatorStack()->push($parserParameter->getLexerToken());
44 3
    }
45
}
46