diff --git a/src/Symfony/Component/ExpressionLanguage/Node/BinaryNode.php b/src/Symfony/Component/ExpressionLanguage/Node/BinaryNode.php index 54e1f88107..e1505ea1f5 100644 --- a/src/Symfony/Component/ExpressionLanguage/Node/BinaryNode.php +++ b/src/Symfony/Component/ExpressionLanguage/Node/BinaryNode.php @@ -38,9 +38,9 @@ class BinaryNode extends Node { $operator = $this->attributes['operator']; - if ('=~' == $operator || '!~' == $operator) { + if ('matches' == $operator) { $compiler - ->raw(('!~' == $operator ? '!' : '').'preg_match(') + ->raw('preg_match(') ->compile($this->nodes['right']) ->raw(', ') ->compile($this->nodes['left']) @@ -136,7 +136,7 @@ class BinaryNode extends Node return $left / $right; case '%': return $left % $right; - case '=~': + case 'matches': return preg_match($right, $left); case '!~': return !preg_match($right, $left); diff --git a/src/Symfony/Component/ExpressionLanguage/Parser.php b/src/Symfony/Component/ExpressionLanguage/Parser.php index f5eae2b455..727ce0783e 100644 --- a/src/Symfony/Component/ExpressionLanguage/Parser.php +++ b/src/Symfony/Component/ExpressionLanguage/Parser.php @@ -43,33 +43,32 @@ class Parser '+' => array('precedence' => 500), ); $this->binaryOperators = array( - 'or' => array('precedence' => 10, 'associativity' => Parser::OPERATOR_LEFT), - '||' => array('precedence' => 10, 'associativity' => Parser::OPERATOR_LEFT), - 'and' => array('precedence' => 15, 'associativity' => Parser::OPERATOR_LEFT), - '&&' => array('precedence' => 15, 'associativity' => Parser::OPERATOR_LEFT), - '|' => array('precedence' => 16, 'associativity' => Parser::OPERATOR_LEFT), - '^' => array('precedence' => 17, 'associativity' => Parser::OPERATOR_LEFT), - '&' => array('precedence' => 18, 'associativity' => Parser::OPERATOR_LEFT), - '==' => array('precedence' => 20, 'associativity' => Parser::OPERATOR_LEFT), - '===' => array('precedence' => 20, 'associativity' => Parser::OPERATOR_LEFT), - '!=' => array('precedence' => 20, 'associativity' => Parser::OPERATOR_LEFT), - '!==' => array('precedence' => 20, 'associativity' => Parser::OPERATOR_LEFT), - '<' => array('precedence' => 20, 'associativity' => Parser::OPERATOR_LEFT), - '>' => array('precedence' => 20, 'associativity' => Parser::OPERATOR_LEFT), - '>=' => array('precedence' => 20, 'associativity' => Parser::OPERATOR_LEFT), - '<=' => array('precedence' => 20, 'associativity' => Parser::OPERATOR_LEFT), - 'not in' => array('precedence' => 20, 'associativity' => Parser::OPERATOR_LEFT), - 'in' => array('precedence' => 20, 'associativity' => Parser::OPERATOR_LEFT), - '..' => array('precedence' => 25, 'associativity' => Parser::OPERATOR_LEFT), - '+' => array('precedence' => 30, 'associativity' => Parser::OPERATOR_LEFT), - '-' => array('precedence' => 30, 'associativity' => Parser::OPERATOR_LEFT), - '~' => array('precedence' => 40, 'associativity' => Parser::OPERATOR_LEFT), - '*' => array('precedence' => 60, 'associativity' => Parser::OPERATOR_LEFT), - '/' => array('precedence' => 60, 'associativity' => Parser::OPERATOR_LEFT), - '%' => array('precedence' => 60, 'associativity' => Parser::OPERATOR_LEFT), - '=~' => array('precedence' => 70, 'associativity' => Parser::OPERATOR_LEFT), - '!~' => array('precedence' => 70, 'associativity' => Parser::OPERATOR_LEFT), - '**' => array('precedence' => 200, 'associativity' => Parser::OPERATOR_RIGHT), + 'or' => array('precedence' => 10, 'associativity' => Parser::OPERATOR_LEFT), + '||' => array('precedence' => 10, 'associativity' => Parser::OPERATOR_LEFT), + 'and' => array('precedence' => 15, 'associativity' => Parser::OPERATOR_LEFT), + '&&' => array('precedence' => 15, 'associativity' => Parser::OPERATOR_LEFT), + '|' => array('precedence' => 16, 'associativity' => Parser::OPERATOR_LEFT), + '^' => array('precedence' => 17, 'associativity' => Parser::OPERATOR_LEFT), + '&' => array('precedence' => 18, 'associativity' => Parser::OPERATOR_LEFT), + '==' => array('precedence' => 20, 'associativity' => Parser::OPERATOR_LEFT), + '===' => array('precedence' => 20, 'associativity' => Parser::OPERATOR_LEFT), + '!=' => array('precedence' => 20, 'associativity' => Parser::OPERATOR_LEFT), + '!==' => array('precedence' => 20, 'associativity' => Parser::OPERATOR_LEFT), + '<' => array('precedence' => 20, 'associativity' => Parser::OPERATOR_LEFT), + '>' => array('precedence' => 20, 'associativity' => Parser::OPERATOR_LEFT), + '>=' => array('precedence' => 20, 'associativity' => Parser::OPERATOR_LEFT), + '<=' => array('precedence' => 20, 'associativity' => Parser::OPERATOR_LEFT), + 'not in' => array('precedence' => 20, 'associativity' => Parser::OPERATOR_LEFT), + 'in' => array('precedence' => 20, 'associativity' => Parser::OPERATOR_LEFT), + 'matches' => array('precedence' => 20, 'associativity' => Parser::OPERATOR_LEFT), + '..' => array('precedence' => 25, 'associativity' => Parser::OPERATOR_LEFT), + '+' => array('precedence' => 30, 'associativity' => Parser::OPERATOR_LEFT), + '-' => array('precedence' => 30, 'associativity' => Parser::OPERATOR_LEFT), + '~' => array('precedence' => 40, 'associativity' => Parser::OPERATOR_LEFT), + '*' => array('precedence' => 60, 'associativity' => Parser::OPERATOR_LEFT), + '/' => array('precedence' => 60, 'associativity' => Parser::OPERATOR_LEFT), + '%' => array('precedence' => 60, 'associativity' => Parser::OPERATOR_LEFT), + '**' => array('precedence' => 200, 'associativity' => Parser::OPERATOR_RIGHT), ); } diff --git a/src/Symfony/Component/ExpressionLanguage/Tests/Node/BinaryNodeTest.php b/src/Symfony/Component/ExpressionLanguage/Tests/Node/BinaryNodeTest.php index fb5389cb49..97ac480244 100644 --- a/src/Symfony/Component/ExpressionLanguage/Tests/Node/BinaryNodeTest.php +++ b/src/Symfony/Component/ExpressionLanguage/Tests/Node/BinaryNodeTest.php @@ -62,8 +62,7 @@ class BinaryNodeTest extends AbstractNodeTest array(array(1, 2, 3), new BinaryNode('..', new ConstantNode(1), new ConstantNode(3))), - array(1, new BinaryNode('=~', new ConstantNode('abc'), new ConstantNode('/^[a-z]+$/'))), - array(false, new BinaryNode('!~', new ConstantNode('abc'), new ConstantNode('/^[a-z]+$/'))), + array(1, new BinaryNode('matches', new ConstantNode('abc'), new ConstantNode('/^[a-z]+$/'))), ); } @@ -112,8 +111,7 @@ class BinaryNodeTest extends AbstractNodeTest array('range(1, 3)', new BinaryNode('..', new ConstantNode(1), new ConstantNode(3))), - array('preg_match("/^[a-z]+/i\$/", "abc")', new BinaryNode('=~', new ConstantNode('abc'), new ConstantNode('/^[a-z]+/i$/'))), - array('!preg_match("/^[a-z]+\$/", "abc")', new BinaryNode('!~', new ConstantNode('abc'), new ConstantNode('/^[a-z]+$/'))), + array('preg_match("/^[a-z]+/i\$/", "abc")', new BinaryNode('matches', new ConstantNode('abc'), new ConstantNode('/^[a-z]+/i$/'))), ); } }