<?php



namespace DoctrineExtensions\Query\Mysql;



use Doctrine\ORM\Query\AST\Functions\FunctionNode,

    Doctrine\ORM\Query\Lexer;



class Regexp extends FunctionNode

{

    public $value = null;

    public $regexp = null;



    public function parse(\Doctrine\ORM\Query\Parser $parser)

    {

        $parser->match(Lexer::T_IDENTIFIER);

        $parser->match(Lexer::T_OPEN_PARENTHESIS);

        $this->value = $parser->StringPrimary();

        $parser->match(Lexer::T_COMMA);

        $this->regexp = $parser->StringExpression();

        $parser->match(Lexer::T_CLOSE_PARENTHESIS);

    }



    public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker)

    {

        return '(' . $this->value->dispatch($sqlWalker) . ' REGEXP ' . $this->regexp->dispatch($sqlWalker) . ')';

    }

}

