for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
/**
* OperatorToken.php
*
* @date 28.03.2015 2:48:12
* @copyright Sklyarov Alexey <[email protected]>
*/
namespace Sufir\Calc\Token;
* OperatorToken
* Математический оператор
* @author Sklyarov Alexey <[email protected]>
* @package Sufir\Calc\Token
final class OperatorToken extends AbstractToken
{
* @var array
protected static $operators = array('*', '/', '+', '-', '^');
* @param string $assoc
* @return integer
public function getPriority($assoc = 'left')
if ($assoc === 'right') {
switch ($this->value) {
case '^':
return 5;
case '/':
return 4;
case '*':
return 3;
case '-':
return 2;
case '+':
return 1;
}
} else {
* @return boolean
public function isLeftAssoc()
return !$this->isRightAssoc();
public function isRightAssoc()
return ($this->value === '^');
* @return array
public static function getAllowedOperators()
return self::$operators;
* @param string $value
* @return string
protected function sanitize($value)
return trim($value);
public static function validate($value)
return in_array($value, self::getAllowedOperators());