Code Duplication    Length = 38-42 lines in 6 locations

src/Token/Operator/DivisionToken.php 1 location

@@ 23-63 (lines=41) @@
20
 *
21
 * @author Sebastian Siemssen <[email protected]>
22
 */
23
class DivisionToken extends BaseToken implements OperatorTokenInterface
24
{
25
    /**
26
     * {@inheritdoc}
27
     */
28
    public static function getRegexPattern()
29
    {
30
        return '\/';
31
    }
32
33
    /**
34
     * {@inheritdoc}
35
     */
36
    public function getPrecedence()
37
    {
38
        return 1;
39
    }
40
41
    /**
42
     * {@inheritdoc}
43
     */
44
    public function getAssociativity()
45
    {
46
        return OperatorTokenInterface::ASSOCIATIVITY_LEFT;
47
    }
48
49
    /**
50
     * {@inheritdoc}
51
     */
52
    public function execute(&$stack)
53
    {
54
        $a = array_pop($stack);
55
        $b = array_pop($stack);
56
57
        $result = (new BigNumber($b->getValue()))
58
            ->divide($a->getValue())
59
            ->getValue();
60
61
        return new NumberToken($b->getOffset(), $result);
62
    }
63
}
64

src/Token/Operator/MinusToken.php 1 location

@@ 23-63 (lines=41) @@
20
 *
21
 * @author Sebastian Siemssen <[email protected]>
22
 */
23
class MinusToken extends BaseToken implements OperatorTokenInterface
24
{
25
    /**
26
     * {@inheritdoc}
27
     */
28
    public static function getRegexPattern()
29
    {
30
        return '\-';
31
    }
32
33
    /**
34
     * {@inheritdoc}
35
     */
36
    public function getPrecedence()
37
    {
38
        return 0;
39
    }
40
41
    /**
42
     * {@inheritdoc}
43
     */
44
    public function getAssociativity()
45
    {
46
        return OperatorTokenInterface::ASSOCIATIVITY_LEFT;
47
    }
48
49
    /**
50
     * {@inheritdoc}
51
     */
52
    public function execute(&$stack)
53
    {
54
        $a = array_pop($stack);
55
        $b = array_pop($stack);
56
57
        $result = (new BigNumber($b->getValue()))
58
            ->subtract($a->getValue())
59
            ->getValue();
60
61
        return new NumberToken($b->getOffset(), $result);
62
    }
63
}
64

src/Token/Operator/ModulusToken.php 1 location

@@ 23-64 (lines=42) @@
20
 *
21
 * @author Sebastian Siemssen <[email protected]>
22
 */
23
class ModulusToken extends BaseToken implements OperatorTokenInterface
24
{
25
    /**
26
     * {@inheritdoc}
27
     */
28
    public static function getRegexPattern()
29
    {
30
        return '\%';
31
    }
32
33
    /**
34
     * {@inheritdoc}
35
     */
36
    public function getPrecedence()
37
    {
38
        return 1;
39
    }
40
41
    /**
42
     * {@inheritdoc}
43
     */
44
    public function getAssociativity()
45
    {
46
        return OperatorTokenInterface::ASSOCIATIVITY_LEFT;
47
    }
48
49
    /**
50
     * {@inheritdoc}
51
     */
52
    public function execute(&$stack)
53
    {
54
        $a = array_pop($stack);
55
        $b = array_pop($stack);
56
57
        $result = (new BigNumber($b->getValue()))
58
            ->mod($a->getValue())
59
            ->getValue();
60
        ;
61
        return new NumberToken($b->getOffset(), $result);
62
    }
63
64
}
65

src/Token/Operator/MultiplyToken.php 1 location

@@ 23-63 (lines=41) @@
20
 *
21
 * @author Sebastian Siemssen <[email protected]>
22
 */
23
class MultiplyToken extends BaseToken implements OperatorTokenInterface
24
{
25
    /**
26
     * {@inheritdoc}
27
     */
28
    public static function getRegexPattern()
29
    {
30
        return '\*';
31
    }
32
33
    /**
34
     * {@inheritdoc}
35
     */
36
    public function getPrecedence()
37
    {
38
        return 1;
39
    }
40
41
    /**
42
     * {@inheritdoc}
43
     */
44
    public function getAssociativity()
45
    {
46
        return OperatorTokenInterface::ASSOCIATIVITY_LEFT;
47
    }
48
49
    /**
50
     * {@inheritdoc}
51
     */
52
    public function execute(&$stack)
53
    {
54
        $a = array_pop($stack);
55
        $b = array_pop($stack);
56
57
        $result = (new BigNumber($b->getValue()))
58
            ->multiply($a->getValue())
59
            ->getValue();
60
61
        return new NumberToken($b->getOffset(), $result);
62
    }
63
}
64

src/Token/Operator/PlusToken.php 1 location

@@ 23-60 (lines=38) @@
20
 *
21
 * @author Sebastian Siemssen <[email protected]>
22
 */
23
class PlusToken extends BaseToken implements OperatorTokenInterface
24
{
25
    /**
26
     * {@inheritdoc}
27
     */
28
    public static function getRegexPattern()
29
    {
30
        return '\+';
31
    }
32
33
    /**
34
     * {@inheritdoc}
35
     */
36
    public function getPrecedence() {
37
        return 0;
38
    }
39
40
    /**
41
     * {@inheritdoc}
42
     */
43
    public function getAssociativity() {
44
        return OperatorTokenInterface::ASSOCIATIVITY_LEFT;
45
    }
46
47
    /**
48
     * {@inheritdoc}
49
     */
50
    public function execute(&$stack) {
51
        $a = array_pop($stack);
52
        $b = array_pop($stack);
53
54
        $result = (new BigNumber($b->getValue()))
55
            ->add($a->getValue())
56
            ->getValue();
57
58
        return new NumberToken($b->getOffset(), $result);
59
    }
60
}
61

src/Token/Operator/PowerToken.php 1 location

@@ 23-60 (lines=38) @@
20
 *
21
 * @author Sebastian Siemssen <[email protected]>
22
 */
23
class PowerToken extends BaseToken implements OperatorTokenInterface
24
{
25
    /**
26
     * {@inheritdoc}
27
     */
28
    public static function getRegexPattern()
29
    {
30
        return '\^';
31
    }
32
33
    /**
34
     * {@inheritdoc}
35
     */
36
    public function getPrecedence() {
37
        return 3;
38
    }
39
40
    /**
41
     * {@inheritdoc}
42
     */
43
    public function getAssociativity() {
44
        return OperatorTokenInterface::ASSOCIATIVITY_RIGHT;
45
    }
46
47
    /**
48
     * {@inheritdoc}
49
     */
50
    public function execute(&$stack) {
51
        $a = array_pop($stack);
52
        $b = array_pop($stack);
53
54
        $result = (new BigNumber($b->getValue()))
55
            ->pow($a->getValue())
56
            ->getValue();
57
58
        return new NumberToken($b->getOffset(), $result);
59
    }
60
}
61