protected function addTokenValue(string $token, string $modifier = null, int $quantity = 1) : self
    {
        $tokens   = array_flip($this->getGrammar()->getTokens());
        $values   = $this->getGrammar()->getValuesWithModifiers();
        $elements = [];

        if (isset($modifier)) {
            $elements[] = $tokens[$modifier];
        }

        $elements[] = $tokens[$token];

        $this->addValue((array_search($elements, $values)) * $quantity);

        return $this;
    }