private function readLangString()
    {
        while (!$this->tokenIs(';')) {
            $this->getNextToken();

            if ($this->tokenIs('[')) {
                $this->subParserSquareBracket();
                continue;
            }
            if ($this->tokenIs('=')) {
                // right hand of the assignment.
                $this->getNextToken();

                if ($this->tokenIs(T_ARRAY) || $this->tokenIs('[')) {
                    $arrayParser = new ArrayParser($this, 1);
                    $arrayParser->parse();
                    $this->debug('After array. ' . var_export($this->getToken(), true));
                } else {
                    $subparser = new StringValue($this);
                    $subparser->parse();

                    $this->file->setValue(implode('.', $this->keystack), $subparser->getValue());
                }

                continue;
            }
            if (!$this->tokenIs(']')) {
                $this->bailUnexpectedToken();
            }
        }

        if ($this->tokenIs(';')) {
            // Reset stack.
            $this->resetStack();
        }
    }