private function endString() { $popped = array_pop($this->stack); if ($popped === self::STACK_KEY) { $this->listener->key($this->buffer); $this->state = self::STATE_END_KEY; } elseif ($popped === self::STACK_STRING) { $this->listener->value($this->buffer); $this->state = self::STATE_AFTER_VALUE; } else { throw new ParsingError($this->lineNumber, $this->charNumber, "Unexpected end of string."); } $this->buffer = ''; }