public function getOperators()
    {
        // Order the by priority then precedent.
        $list = (array)$this->operators;
        usort($list, function(Operator $a, Operator $b) {
            // Sort by priority.
            if ($a->getPriority() === $b->getPriority()) {
                // Then by associativity.
                if ($a->getAssociativity() == $b->getAssociativity()) {
                    // Then by regex length (the longer the better).
                    if (strlen($a->getRegex()) === strlen($b->getRegex())) {
                        return 0;
                    }
                    return strlen($a->getRegex()) > strlen($b->getRegex()) ? -1 : 1;
                }
                return $a->getAssociativity() > $b->getAssociativity() ? -1 : 1;
            }
            return $a->getPriority() > $b->getPriority() ? -1 : 1;
        });

        return $list;
    }