diff options
Diffstat (limited to 'vendor/theseer/tokenizer/src/Tokenizer.php')
| -rw-r--r-- | vendor/theseer/tokenizer/src/Tokenizer.php | 142 |
1 files changed, 0 insertions, 142 deletions
diff --git a/vendor/theseer/tokenizer/src/Tokenizer.php b/vendor/theseer/tokenizer/src/Tokenizer.php deleted file mode 100644 index f582d9587..000000000 --- a/vendor/theseer/tokenizer/src/Tokenizer.php +++ /dev/null @@ -1,142 +0,0 @@ -<?php declare(strict_types = 1); -namespace TheSeer\Tokenizer; - -class Tokenizer { - - /** - * Token Map for "non-tokens" - * - * @var array - */ - private $map = [ - '(' => 'T_OPEN_BRACKET', - ')' => 'T_CLOSE_BRACKET', - '[' => 'T_OPEN_SQUARE', - ']' => 'T_CLOSE_SQUARE', - '{' => 'T_OPEN_CURLY', - '}' => 'T_CLOSE_CURLY', - ';' => 'T_SEMICOLON', - '.' => 'T_DOT', - ',' => 'T_COMMA', - '=' => 'T_EQUAL', - '<' => 'T_LT', - '>' => 'T_GT', - '+' => 'T_PLUS', - '-' => 'T_MINUS', - '*' => 'T_MULT', - '/' => 'T_DIV', - '?' => 'T_QUESTION_MARK', - '!' => 'T_EXCLAMATION_MARK', - ':' => 'T_COLON', - '"' => 'T_DOUBLE_QUOTES', - '@' => 'T_AT', - '&' => 'T_AMPERSAND', - '%' => 'T_PERCENT', - '|' => 'T_PIPE', - '$' => 'T_DOLLAR', - '^' => 'T_CARET', - '~' => 'T_TILDE', - '`' => 'T_BACKTICK' - ]; - - public function parse(string $source): TokenCollection { - $result = new TokenCollection(); - - if ($source === '') { - return $result; - } - - $tokens = \token_get_all($source); - - $lastToken = new Token( - $tokens[0][2], - 'Placeholder', - '' - ); - - foreach ($tokens as $pos => $tok) { - if (\is_string($tok)) { - $token = new Token( - $lastToken->getLine(), - $this->map[$tok], - $tok - ); - $result->addToken($token); - $lastToken = $token; - - continue; - } - - $line = $tok[2]; - $values = \preg_split('/\R+/Uu', $tok[1]); - - foreach ($values as $v) { - $token = new Token( - $line, - \token_name($tok[0]), - $v - ); - $lastToken = $token; - $line++; - - if ($v === '') { - continue; - } - - $result->addToken($token); - } - } - - return $this->fillBlanks($result, $lastToken->getLine()); - } - - private function fillBlanks(TokenCollection $tokens, int $maxLine): TokenCollection { - $prev = new Token( - 0, - 'Placeholder', - '' - ); - - $final = new TokenCollection(); - - foreach ($tokens as $token) { - if ($prev === null) { - $final->addToken($token); - $prev = $token; - - continue; - } - - $gap = $token->getLine() - $prev->getLine(); - - while ($gap > 1) { - $linebreak = new Token( - $prev->getLine() + 1, - 'T_WHITESPACE', - '' - ); - $final->addToken($linebreak); - $prev = $linebreak; - $gap--; - } - - $final->addToken($token); - $prev = $token; - } - - $gap = $maxLine - $prev->getLine(); - - while ($gap > 0) { - $linebreak = new Token( - $prev->getLine() + 1, - 'T_WHITESPACE', - '' - ); - $final->addToken($linebreak); - $prev = $linebreak; - $gap--; - } - - return $final; - } -} |