/** * @param StringStream $stream * @return string */ private function getFullString(StringStream $stream) : string { $stream->start(); $string = ''; do { $string .= $stream->current(); $stream->next(); } while (!$stream->isEnd()); return $string; }
/** * @param string $tokenName */ private function defaultExtractor(string $tokenName) { if (!array_key_exists($tokenName, $this->tokens)) { $this->tokens[$tokenName] = ''; } start: $char = $this->stream->currentAscii(); if ($char->isPrintableChar() && !$char->isWhiteSpace()) { $this->tokens[$tokenName] .= $this->stream->current(); $this->stream->next(); goto start; } }
/** * @param string $variableName */ private function extractGlobalVariableValue(string $variableName) { $this->{$variableName} = ''; start: $char = $this->stream->currentAscii(); $this->{$variableName} .= ''; if ($char->isLetter() || $char->isDigit() || $char->is(AsciiChar::UNDERSCORE) || $char->is(AsciiChar::DOT) || $char->is(AsciiChar::HYPHEN) || $char->is(AsciiChar::AT_SYMBOL) || $char->is(AsciiChar::ASTERISK)) { $this->{$variableName} .= $this->stream->current(); $this->stream->next(); goto start; } elseif ($char->isWhiteSpace()) { return; } else { throw new SyntaxErrorException($this->stream); } }