annotate vendor/phpunit/php-token-stream/src/Token.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 1fec387a4317
children
rev   line source
Chris@0 1 <?php
Chris@0 2 /*
Chris@14 3 * This file is part of php-token-stream.
Chris@0 4 *
Chris@0 5 * (c) Sebastian Bergmann <sebastian@phpunit.de>
Chris@0 6 *
Chris@0 7 * For the full copyright and license information, please view the LICENSE
Chris@0 8 * file that was distributed with this source code.
Chris@0 9 */
Chris@0 10
Chris@0 11 /**
Chris@0 12 * A PHP token.
Chris@0 13 */
Chris@0 14 abstract class PHP_Token
Chris@0 15 {
Chris@0 16 /**
Chris@0 17 * @var string
Chris@0 18 */
Chris@0 19 protected $text;
Chris@0 20
Chris@0 21 /**
Chris@14 22 * @var int
Chris@0 23 */
Chris@0 24 protected $line;
Chris@0 25
Chris@0 26 /**
Chris@0 27 * @var PHP_Token_Stream
Chris@0 28 */
Chris@0 29 protected $tokenStream;
Chris@0 30
Chris@0 31 /**
Chris@14 32 * @var int
Chris@0 33 */
Chris@0 34 protected $id;
Chris@0 35
Chris@0 36 /**
Chris@0 37 * @param string $text
Chris@14 38 * @param int $line
Chris@0 39 * @param PHP_Token_Stream $tokenStream
Chris@14 40 * @param int $id
Chris@0 41 */
Chris@0 42 public function __construct($text, $line, PHP_Token_Stream $tokenStream, $id)
Chris@0 43 {
Chris@0 44 $this->text = $text;
Chris@0 45 $this->line = $line;
Chris@0 46 $this->tokenStream = $tokenStream;
Chris@0 47 $this->id = $id;
Chris@0 48 }
Chris@0 49
Chris@0 50 /**
Chris@0 51 * @return string
Chris@0 52 */
Chris@0 53 public function __toString()
Chris@0 54 {
Chris@0 55 return $this->text;
Chris@0 56 }
Chris@0 57
Chris@0 58 /**
Chris@14 59 * @return int
Chris@0 60 */
Chris@0 61 public function getLine()
Chris@0 62 {
Chris@0 63 return $this->line;
Chris@0 64 }
Chris@14 65
Chris@14 66 /**
Chris@14 67 * @return int
Chris@14 68 */
Chris@14 69 public function getId()
Chris@14 70 {
Chris@14 71 return $this->id;
Chris@14 72 }
Chris@0 73 }
Chris@0 74
Chris@0 75 abstract class PHP_TokenWithScope extends PHP_Token
Chris@0 76 {
Chris@0 77 /**
Chris@14 78 * @var int
Chris@0 79 */
Chris@0 80 protected $endTokenId;
Chris@0 81
Chris@0 82 /**
Chris@0 83 * Get the docblock for this token
Chris@0 84 *
Chris@0 85 * This method will fetch the docblock belonging to the current token. The
Chris@0 86 * docblock must be placed on the line directly above the token to be
Chris@0 87 * recognized.
Chris@0 88 *
Chris@0 89 * @return string|null Returns the docblock as a string if found
Chris@0 90 */
Chris@0 91 public function getDocblock()
Chris@0 92 {
Chris@0 93 $tokens = $this->tokenStream->tokens();
Chris@0 94 $currentLineNumber = $tokens[$this->id]->getLine();
Chris@0 95 $prevLineNumber = $currentLineNumber - 1;
Chris@0 96
Chris@0 97 for ($i = $this->id - 1; $i; $i--) {
Chris@0 98 if (!isset($tokens[$i])) {
Chris@0 99 return;
Chris@0 100 }
Chris@0 101
Chris@0 102 if ($tokens[$i] instanceof PHP_Token_FUNCTION ||
Chris@0 103 $tokens[$i] instanceof PHP_Token_CLASS ||
Chris@0 104 $tokens[$i] instanceof PHP_Token_TRAIT) {
Chris@0 105 // Some other trait, class or function, no docblock can be
Chris@0 106 // used for the current token
Chris@0 107 break;
Chris@0 108 }
Chris@0 109
Chris@0 110 $line = $tokens[$i]->getLine();
Chris@0 111
Chris@0 112 if ($line == $currentLineNumber ||
Chris@0 113 ($line == $prevLineNumber &&
Chris@0 114 $tokens[$i] instanceof PHP_Token_WHITESPACE)) {
Chris@0 115 continue;
Chris@0 116 }
Chris@0 117
Chris@0 118 if ($line < $currentLineNumber &&
Chris@0 119 !$tokens[$i] instanceof PHP_Token_DOC_COMMENT) {
Chris@0 120 break;
Chris@0 121 }
Chris@0 122
Chris@14 123 return (string) $tokens[$i];
Chris@0 124 }
Chris@0 125 }
Chris@0 126
Chris@0 127 /**
Chris@14 128 * @return int
Chris@0 129 */
Chris@0 130 public function getEndTokenId()
Chris@0 131 {
Chris@0 132 $block = 0;
Chris@0 133 $i = $this->id;
Chris@0 134 $tokens = $this->tokenStream->tokens();
Chris@0 135
Chris@0 136 while ($this->endTokenId === null && isset($tokens[$i])) {
Chris@0 137 if ($tokens[$i] instanceof PHP_Token_OPEN_CURLY ||
Chris@0 138 $tokens[$i] instanceof PHP_Token_CURLY_OPEN) {
Chris@0 139 $block++;
Chris@0 140 } elseif ($tokens[$i] instanceof PHP_Token_CLOSE_CURLY) {
Chris@0 141 $block--;
Chris@0 142
Chris@0 143 if ($block === 0) {
Chris@0 144 $this->endTokenId = $i;
Chris@0 145 }
Chris@0 146 } elseif (($this instanceof PHP_Token_FUNCTION ||
Chris@0 147 $this instanceof PHP_Token_NAMESPACE) &&
Chris@0 148 $tokens[$i] instanceof PHP_Token_SEMICOLON) {
Chris@0 149 if ($block === 0) {
Chris@0 150 $this->endTokenId = $i;
Chris@0 151 }
Chris@0 152 }
Chris@0 153
Chris@0 154 $i++;
Chris@0 155 }
Chris@0 156
Chris@0 157 if ($this->endTokenId === null) {
Chris@0 158 $this->endTokenId = $this->id;
Chris@0 159 }
Chris@0 160
Chris@0 161 return $this->endTokenId;
Chris@0 162 }
Chris@0 163
Chris@0 164 /**
Chris@14 165 * @return int
Chris@0 166 */
Chris@0 167 public function getEndLine()
Chris@0 168 {
Chris@0 169 return $this->tokenStream[$this->getEndTokenId()]->getLine();
Chris@0 170 }
Chris@0 171 }
Chris@0 172
Chris@0 173 abstract class PHP_TokenWithScopeAndVisibility extends PHP_TokenWithScope
Chris@0 174 {
Chris@0 175 /**
Chris@0 176 * @return string
Chris@0 177 */
Chris@0 178 public function getVisibility()
Chris@0 179 {
Chris@0 180 $tokens = $this->tokenStream->tokens();
Chris@0 181
Chris@0 182 for ($i = $this->id - 2; $i > $this->id - 7; $i -= 2) {
Chris@0 183 if (isset($tokens[$i]) &&
Chris@0 184 ($tokens[$i] instanceof PHP_Token_PRIVATE ||
Chris@0 185 $tokens[$i] instanceof PHP_Token_PROTECTED ||
Chris@0 186 $tokens[$i] instanceof PHP_Token_PUBLIC)) {
Chris@0 187 return strtolower(
Chris@0 188 str_replace('PHP_Token_', '', get_class($tokens[$i]))
Chris@0 189 );
Chris@0 190 }
Chris@0 191 if (isset($tokens[$i]) &&
Chris@0 192 !($tokens[$i] instanceof PHP_Token_STATIC ||
Chris@0 193 $tokens[$i] instanceof PHP_Token_FINAL ||
Chris@0 194 $tokens[$i] instanceof PHP_Token_ABSTRACT)) {
Chris@0 195 // no keywords; stop visibility search
Chris@0 196 break;
Chris@0 197 }
Chris@0 198 }
Chris@0 199 }
Chris@0 200
Chris@0 201 /**
Chris@0 202 * @return string
Chris@0 203 */
Chris@0 204 public function getKeywords()
Chris@0 205 {
Chris@14 206 $keywords = [];
Chris@0 207 $tokens = $this->tokenStream->tokens();
Chris@0 208
Chris@0 209 for ($i = $this->id - 2; $i > $this->id - 7; $i -= 2) {
Chris@0 210 if (isset($tokens[$i]) &&
Chris@0 211 ($tokens[$i] instanceof PHP_Token_PRIVATE ||
Chris@0 212 $tokens[$i] instanceof PHP_Token_PROTECTED ||
Chris@0 213 $tokens[$i] instanceof PHP_Token_PUBLIC)) {
Chris@0 214 continue;
Chris@0 215 }
Chris@0 216
Chris@0 217 if (isset($tokens[$i]) &&
Chris@0 218 ($tokens[$i] instanceof PHP_Token_STATIC ||
Chris@0 219 $tokens[$i] instanceof PHP_Token_FINAL ||
Chris@0 220 $tokens[$i] instanceof PHP_Token_ABSTRACT)) {
Chris@0 221 $keywords[] = strtolower(
Chris@0 222 str_replace('PHP_Token_', '', get_class($tokens[$i]))
Chris@0 223 );
Chris@0 224 }
Chris@0 225 }
Chris@0 226
Chris@0 227 return implode(',', $keywords);
Chris@0 228 }
Chris@0 229 }
Chris@0 230
Chris@0 231 abstract class PHP_Token_Includes extends PHP_Token
Chris@0 232 {
Chris@0 233 /**
Chris@0 234 * @var string
Chris@0 235 */
Chris@0 236 protected $name;
Chris@0 237
Chris@0 238 /**
Chris@0 239 * @var string
Chris@0 240 */
Chris@0 241 protected $type;
Chris@0 242
Chris@0 243 /**
Chris@0 244 * @return string
Chris@0 245 */
Chris@0 246 public function getName()
Chris@0 247 {
Chris@0 248 if ($this->name === null) {
Chris@0 249 $this->process();
Chris@0 250 }
Chris@0 251
Chris@0 252 return $this->name;
Chris@0 253 }
Chris@0 254
Chris@0 255 /**
Chris@0 256 * @return string
Chris@0 257 */
Chris@0 258 public function getType()
Chris@0 259 {
Chris@0 260 if ($this->type === null) {
Chris@0 261 $this->process();
Chris@0 262 }
Chris@0 263
Chris@0 264 return $this->type;
Chris@0 265 }
Chris@0 266
Chris@0 267 private function process()
Chris@0 268 {
Chris@0 269 $tokens = $this->tokenStream->tokens();
Chris@0 270
Chris@14 271 if ($tokens[$this->id + 2] instanceof PHP_Token_CONSTANT_ENCAPSED_STRING) {
Chris@14 272 $this->name = trim($tokens[$this->id + 2], "'\"");
Chris@0 273 $this->type = strtolower(
Chris@0 274 str_replace('PHP_Token_', '', get_class($tokens[$this->id]))
Chris@0 275 );
Chris@0 276 }
Chris@0 277 }
Chris@0 278 }
Chris@0 279
Chris@0 280 class PHP_Token_FUNCTION extends PHP_TokenWithScopeAndVisibility
Chris@0 281 {
Chris@0 282 /**
Chris@0 283 * @var array
Chris@0 284 */
Chris@0 285 protected $arguments;
Chris@0 286
Chris@0 287 /**
Chris@14 288 * @var int
Chris@0 289 */
Chris@0 290 protected $ccn;
Chris@0 291
Chris@0 292 /**
Chris@0 293 * @var string
Chris@0 294 */
Chris@0 295 protected $name;
Chris@0 296
Chris@0 297 /**
Chris@0 298 * @var string
Chris@0 299 */
Chris@0 300 protected $signature;
Chris@0 301
Chris@0 302 /**
Chris@14 303 * @var bool
Chris@14 304 */
Chris@14 305 private $anonymous = false;
Chris@14 306
Chris@14 307 /**
Chris@0 308 * @return array
Chris@0 309 */
Chris@0 310 public function getArguments()
Chris@0 311 {
Chris@0 312 if ($this->arguments !== null) {
Chris@0 313 return $this->arguments;
Chris@0 314 }
Chris@0 315
Chris@14 316 $this->arguments = [];
Chris@0 317 $tokens = $this->tokenStream->tokens();
Chris@0 318 $typeDeclaration = null;
Chris@0 319
Chris@0 320 // Search for first token inside brackets
Chris@0 321 $i = $this->id + 2;
Chris@0 322
Chris@14 323 while (!$tokens[$i - 1] instanceof PHP_Token_OPEN_BRACKET) {
Chris@0 324 $i++;
Chris@0 325 }
Chris@0 326
Chris@0 327 while (!$tokens[$i] instanceof PHP_Token_CLOSE_BRACKET) {
Chris@0 328 if ($tokens[$i] instanceof PHP_Token_STRING) {
Chris@14 329 $typeDeclaration = (string) $tokens[$i];
Chris@0 330 } elseif ($tokens[$i] instanceof PHP_Token_VARIABLE) {
Chris@14 331 $this->arguments[(string) $tokens[$i]] = $typeDeclaration;
Chris@14 332 $typeDeclaration = null;
Chris@0 333 }
Chris@0 334
Chris@0 335 $i++;
Chris@0 336 }
Chris@0 337
Chris@0 338 return $this->arguments;
Chris@0 339 }
Chris@0 340
Chris@0 341 /**
Chris@0 342 * @return string
Chris@0 343 */
Chris@0 344 public function getName()
Chris@0 345 {
Chris@0 346 if ($this->name !== null) {
Chris@0 347 return $this->name;
Chris@0 348 }
Chris@0 349
Chris@0 350 $tokens = $this->tokenStream->tokens();
Chris@0 351
Chris@14 352 $i = $this->id + 1;
Chris@14 353
Chris@14 354 if ($tokens[$i] instanceof PHP_Token_WHITESPACE) {
Chris@14 355 $i++;
Chris@0 356 }
Chris@0 357
Chris@14 358 if ($tokens[$i] instanceof PHP_Token_AMPERSAND) {
Chris@14 359 $i++;
Chris@14 360 }
Chris@14 361
Chris@14 362 if ($tokens[$i + 1] instanceof PHP_Token_OPEN_BRACKET) {
Chris@14 363 $this->name = (string) $tokens[$i];
Chris@14 364 } elseif ($tokens[$i + 1] instanceof PHP_Token_WHITESPACE && $tokens[$i + 2] instanceof PHP_Token_OPEN_BRACKET) {
Chris@14 365 $this->name = (string) $tokens[$i];
Chris@14 366 } else {
Chris@14 367 $this->anonymous = true;
Chris@14 368
Chris@14 369 $this->name = sprintf(
Chris@14 370 'anonymousFunction:%s#%s',
Chris@14 371 $this->getLine(),
Chris@14 372 $this->getId()
Chris@14 373 );
Chris@14 374 }
Chris@14 375
Chris@14 376 if (!$this->isAnonymous()) {
Chris@0 377 for ($i = $this->id; $i; --$i) {
Chris@0 378 if ($tokens[$i] instanceof PHP_Token_NAMESPACE) {
Chris@0 379 $this->name = $tokens[$i]->getName() . '\\' . $this->name;
Chris@14 380
Chris@0 381 break;
Chris@0 382 }
Chris@0 383
Chris@0 384 if ($tokens[$i] instanceof PHP_Token_INTERFACE) {
Chris@0 385 break;
Chris@0 386 }
Chris@0 387 }
Chris@0 388 }
Chris@0 389
Chris@0 390 return $this->name;
Chris@0 391 }
Chris@0 392
Chris@0 393 /**
Chris@14 394 * @return int
Chris@0 395 */
Chris@0 396 public function getCCN()
Chris@0 397 {
Chris@0 398 if ($this->ccn !== null) {
Chris@0 399 return $this->ccn;
Chris@0 400 }
Chris@0 401
Chris@0 402 $this->ccn = 1;
Chris@0 403 $end = $this->getEndTokenId();
Chris@0 404 $tokens = $this->tokenStream->tokens();
Chris@0 405
Chris@0 406 for ($i = $this->id; $i <= $end; $i++) {
Chris@0 407 switch (get_class($tokens[$i])) {
Chris@0 408 case 'PHP_Token_IF':
Chris@0 409 case 'PHP_Token_ELSEIF':
Chris@0 410 case 'PHP_Token_FOR':
Chris@0 411 case 'PHP_Token_FOREACH':
Chris@0 412 case 'PHP_Token_WHILE':
Chris@0 413 case 'PHP_Token_CASE':
Chris@0 414 case 'PHP_Token_CATCH':
Chris@0 415 case 'PHP_Token_BOOLEAN_AND':
Chris@0 416 case 'PHP_Token_LOGICAL_AND':
Chris@0 417 case 'PHP_Token_BOOLEAN_OR':
Chris@0 418 case 'PHP_Token_LOGICAL_OR':
Chris@0 419 case 'PHP_Token_QUESTION_MARK':
Chris@0 420 $this->ccn++;
Chris@0 421 break;
Chris@0 422 }
Chris@0 423 }
Chris@0 424
Chris@0 425 return $this->ccn;
Chris@0 426 }
Chris@0 427
Chris@0 428 /**
Chris@0 429 * @return string
Chris@0 430 */
Chris@0 431 public function getSignature()
Chris@0 432 {
Chris@0 433 if ($this->signature !== null) {
Chris@0 434 return $this->signature;
Chris@0 435 }
Chris@0 436
Chris@14 437 if ($this->isAnonymous()) {
Chris@14 438 $this->signature = 'anonymousFunction';
Chris@0 439 $i = $this->id + 1;
Chris@0 440 } else {
Chris@0 441 $this->signature = '';
Chris@0 442 $i = $this->id + 2;
Chris@0 443 }
Chris@0 444
Chris@0 445 $tokens = $this->tokenStream->tokens();
Chris@0 446
Chris@0 447 while (isset($tokens[$i]) &&
Chris@0 448 !$tokens[$i] instanceof PHP_Token_OPEN_CURLY &&
Chris@0 449 !$tokens[$i] instanceof PHP_Token_SEMICOLON) {
Chris@0 450 $this->signature .= $tokens[$i++];
Chris@0 451 }
Chris@0 452
Chris@0 453 $this->signature = trim($this->signature);
Chris@0 454
Chris@0 455 return $this->signature;
Chris@0 456 }
Chris@14 457
Chris@14 458 /**
Chris@14 459 * @return bool
Chris@14 460 */
Chris@14 461 public function isAnonymous()
Chris@14 462 {
Chris@14 463 return $this->anonymous;
Chris@14 464 }
Chris@0 465 }
Chris@0 466
Chris@0 467 class PHP_Token_INTERFACE extends PHP_TokenWithScopeAndVisibility
Chris@0 468 {
Chris@0 469 /**
Chris@0 470 * @var array
Chris@0 471 */
Chris@0 472 protected $interfaces;
Chris@0 473
Chris@0 474 /**
Chris@0 475 * @return string
Chris@0 476 */
Chris@0 477 public function getName()
Chris@0 478 {
Chris@14 479 return (string) $this->tokenStream[$this->id + 2];
Chris@0 480 }
Chris@0 481
Chris@0 482 /**
Chris@14 483 * @return bool
Chris@0 484 */
Chris@0 485 public function hasParent()
Chris@0 486 {
Chris@0 487 return $this->tokenStream[$this->id + 4] instanceof PHP_Token_EXTENDS;
Chris@0 488 }
Chris@0 489
Chris@0 490 /**
Chris@0 491 * @return array
Chris@0 492 */
Chris@0 493 public function getPackage()
Chris@0 494 {
Chris@0 495 $className = $this->getName();
Chris@0 496 $docComment = $this->getDocblock();
Chris@0 497
Chris@14 498 $result = [
Chris@0 499 'namespace' => '',
Chris@0 500 'fullPackage' => '',
Chris@0 501 'category' => '',
Chris@0 502 'package' => '',
Chris@0 503 'subpackage' => ''
Chris@14 504 ];
Chris@0 505
Chris@0 506 for ($i = $this->id; $i; --$i) {
Chris@0 507 if ($this->tokenStream[$i] instanceof PHP_Token_NAMESPACE) {
Chris@0 508 $result['namespace'] = $this->tokenStream[$i]->getName();
Chris@0 509 break;
Chris@0 510 }
Chris@0 511 }
Chris@0 512
Chris@0 513 if (preg_match('/@category[\s]+([\.\w]+)/', $docComment, $matches)) {
Chris@0 514 $result['category'] = $matches[1];
Chris@0 515 }
Chris@0 516
Chris@0 517 if (preg_match('/@package[\s]+([\.\w]+)/', $docComment, $matches)) {
Chris@0 518 $result['package'] = $matches[1];
Chris@0 519 $result['fullPackage'] = $matches[1];
Chris@0 520 }
Chris@0 521
Chris@0 522 if (preg_match('/@subpackage[\s]+([\.\w]+)/', $docComment, $matches)) {
Chris@0 523 $result['subpackage'] = $matches[1];
Chris@0 524 $result['fullPackage'] .= '.' . $matches[1];
Chris@0 525 }
Chris@0 526
Chris@0 527 if (empty($result['fullPackage'])) {
Chris@0 528 $result['fullPackage'] = $this->arrayToName(
Chris@0 529 explode('_', str_replace('\\', '_', $className)),
Chris@0 530 '.'
Chris@0 531 );
Chris@0 532 }
Chris@0 533
Chris@0 534 return $result;
Chris@0 535 }
Chris@0 536
Chris@0 537 /**
Chris@14 538 * @param array $parts
Chris@14 539 * @param string $join
Chris@14 540 *
Chris@0 541 * @return string
Chris@0 542 */
Chris@0 543 protected function arrayToName(array $parts, $join = '\\')
Chris@0 544 {
Chris@0 545 $result = '';
Chris@0 546
Chris@0 547 if (count($parts) > 1) {
Chris@0 548 array_pop($parts);
Chris@0 549
Chris@14 550 $result = implode($join, $parts);
Chris@0 551 }
Chris@0 552
Chris@0 553 return $result;
Chris@0 554 }
Chris@0 555
Chris@0 556 /**
Chris@14 557 * @return bool|string
Chris@0 558 */
Chris@0 559 public function getParent()
Chris@0 560 {
Chris@0 561 if (!$this->hasParent()) {
Chris@0 562 return false;
Chris@0 563 }
Chris@0 564
Chris@0 565 $i = $this->id + 6;
Chris@0 566 $tokens = $this->tokenStream->tokens();
Chris@14 567 $className = (string) $tokens[$i];
Chris@0 568
Chris@14 569 while (isset($tokens[$i + 1]) &&
Chris@14 570 !$tokens[$i + 1] instanceof PHP_Token_WHITESPACE) {
Chris@14 571 $className .= (string) $tokens[++$i];
Chris@0 572 }
Chris@0 573
Chris@0 574 return $className;
Chris@0 575 }
Chris@0 576
Chris@0 577 /**
Chris@14 578 * @return bool
Chris@0 579 */
Chris@0 580 public function hasInterfaces()
Chris@0 581 {
Chris@0 582 return (isset($this->tokenStream[$this->id + 4]) &&
Chris@0 583 $this->tokenStream[$this->id + 4] instanceof PHP_Token_IMPLEMENTS) ||
Chris@0 584 (isset($this->tokenStream[$this->id + 8]) &&
Chris@0 585 $this->tokenStream[$this->id + 8] instanceof PHP_Token_IMPLEMENTS);
Chris@0 586 }
Chris@0 587
Chris@0 588 /**
Chris@14 589 * @return array|bool
Chris@0 590 */
Chris@0 591 public function getInterfaces()
Chris@0 592 {
Chris@0 593 if ($this->interfaces !== null) {
Chris@0 594 return $this->interfaces;
Chris@0 595 }
Chris@0 596
Chris@0 597 if (!$this->hasInterfaces()) {
Chris@0 598 return ($this->interfaces = false);
Chris@0 599 }
Chris@0 600
Chris@0 601 if ($this->tokenStream[$this->id + 4] instanceof PHP_Token_IMPLEMENTS) {
Chris@0 602 $i = $this->id + 3;
Chris@0 603 } else {
Chris@0 604 $i = $this->id + 7;
Chris@0 605 }
Chris@0 606
Chris@0 607 $tokens = $this->tokenStream->tokens();
Chris@0 608
Chris@14 609 while (!$tokens[$i + 1] instanceof PHP_Token_OPEN_CURLY) {
Chris@0 610 $i++;
Chris@0 611
Chris@0 612 if ($tokens[$i] instanceof PHP_Token_STRING) {
Chris@14 613 $this->interfaces[] = (string) $tokens[$i];
Chris@0 614 }
Chris@0 615 }
Chris@0 616
Chris@0 617 return $this->interfaces;
Chris@0 618 }
Chris@0 619 }
Chris@0 620
Chris@14 621 class PHP_Token_ABSTRACT extends PHP_Token
Chris@14 622 {
Chris@14 623 }
Chris@14 624
Chris@14 625 class PHP_Token_AMPERSAND extends PHP_Token
Chris@14 626 {
Chris@14 627 }
Chris@14 628
Chris@14 629 class PHP_Token_AND_EQUAL extends PHP_Token
Chris@14 630 {
Chris@14 631 }
Chris@14 632
Chris@14 633 class PHP_Token_ARRAY extends PHP_Token
Chris@14 634 {
Chris@14 635 }
Chris@14 636
Chris@14 637 class PHP_Token_ARRAY_CAST extends PHP_Token
Chris@14 638 {
Chris@14 639 }
Chris@14 640
Chris@14 641 class PHP_Token_AS extends PHP_Token
Chris@14 642 {
Chris@14 643 }
Chris@14 644
Chris@14 645 class PHP_Token_AT extends PHP_Token
Chris@14 646 {
Chris@14 647 }
Chris@14 648
Chris@14 649 class PHP_Token_BACKTICK extends PHP_Token
Chris@14 650 {
Chris@14 651 }
Chris@14 652
Chris@14 653 class PHP_Token_BAD_CHARACTER extends PHP_Token
Chris@14 654 {
Chris@14 655 }
Chris@14 656
Chris@14 657 class PHP_Token_BOOLEAN_AND extends PHP_Token
Chris@14 658 {
Chris@14 659 }
Chris@14 660
Chris@14 661 class PHP_Token_BOOLEAN_OR extends PHP_Token
Chris@14 662 {
Chris@14 663 }
Chris@14 664
Chris@14 665 class PHP_Token_BOOL_CAST extends PHP_Token
Chris@14 666 {
Chris@14 667 }
Chris@14 668
Chris@14 669 class PHP_Token_BREAK extends PHP_Token
Chris@14 670 {
Chris@14 671 }
Chris@14 672
Chris@14 673 class PHP_Token_CARET extends PHP_Token
Chris@14 674 {
Chris@14 675 }
Chris@14 676
Chris@14 677 class PHP_Token_CASE extends PHP_Token
Chris@14 678 {
Chris@14 679 }
Chris@14 680
Chris@14 681 class PHP_Token_CATCH extends PHP_Token
Chris@14 682 {
Chris@14 683 }
Chris@14 684
Chris@14 685 class PHP_Token_CHARACTER extends PHP_Token
Chris@14 686 {
Chris@14 687 }
Chris@0 688
Chris@0 689 class PHP_Token_CLASS extends PHP_Token_INTERFACE
Chris@0 690 {
Chris@0 691 /**
Chris@14 692 * @var bool
Chris@14 693 */
Chris@14 694 private $anonymous = false;
Chris@14 695
Chris@14 696 /**
Chris@14 697 * @var string
Chris@14 698 */
Chris@14 699 private $name;
Chris@14 700
Chris@14 701 /**
Chris@0 702 * @return string
Chris@0 703 */
Chris@0 704 public function getName()
Chris@0 705 {
Chris@14 706 if ($this->name !== null) {
Chris@14 707 return $this->name;
Chris@14 708 }
Chris@14 709
Chris@0 710 $next = $this->tokenStream[$this->id + 1];
Chris@0 711
Chris@0 712 if ($next instanceof PHP_Token_WHITESPACE) {
Chris@0 713 $next = $this->tokenStream[$this->id + 2];
Chris@0 714 }
Chris@0 715
Chris@0 716 if ($next instanceof PHP_Token_STRING) {
Chris@14 717 $this->name =(string) $next;
Chris@14 718
Chris@14 719 return $this->name;
Chris@0 720 }
Chris@0 721
Chris@0 722 if ($next instanceof PHP_Token_OPEN_CURLY ||
Chris@0 723 $next instanceof PHP_Token_EXTENDS ||
Chris@0 724 $next instanceof PHP_Token_IMPLEMENTS) {
Chris@14 725
Chris@14 726 $this->name = sprintf(
Chris@14 727 'AnonymousClass:%s#%s',
Chris@14 728 $this->getLine(),
Chris@14 729 $this->getId()
Chris@14 730 );
Chris@14 731
Chris@14 732 $this->anonymous = true;
Chris@14 733
Chris@14 734 return $this->name;
Chris@0 735 }
Chris@0 736 }
Chris@14 737
Chris@14 738 public function isAnonymous()
Chris@14 739 {
Chris@14 740 return $this->anonymous;
Chris@14 741 }
Chris@0 742 }
Chris@0 743
Chris@14 744 class PHP_Token_CLASS_C extends PHP_Token
Chris@14 745 {
Chris@14 746 }
Chris@14 747
Chris@14 748 class PHP_Token_CLASS_NAME_CONSTANT extends PHP_Token
Chris@14 749 {
Chris@14 750 }
Chris@14 751
Chris@14 752 class PHP_Token_CLONE extends PHP_Token
Chris@14 753 {
Chris@14 754 }
Chris@14 755
Chris@14 756 class PHP_Token_CLOSE_BRACKET extends PHP_Token
Chris@14 757 {
Chris@14 758 }
Chris@14 759
Chris@14 760 class PHP_Token_CLOSE_CURLY extends PHP_Token
Chris@14 761 {
Chris@14 762 }
Chris@14 763
Chris@14 764 class PHP_Token_CLOSE_SQUARE extends PHP_Token
Chris@14 765 {
Chris@14 766 }
Chris@14 767
Chris@14 768 class PHP_Token_CLOSE_TAG extends PHP_Token
Chris@14 769 {
Chris@14 770 }
Chris@14 771
Chris@14 772 class PHP_Token_COLON extends PHP_Token
Chris@14 773 {
Chris@14 774 }
Chris@14 775
Chris@14 776 class PHP_Token_COMMA extends PHP_Token
Chris@14 777 {
Chris@14 778 }
Chris@14 779
Chris@14 780 class PHP_Token_COMMENT extends PHP_Token
Chris@14 781 {
Chris@14 782 }
Chris@14 783
Chris@14 784 class PHP_Token_CONCAT_EQUAL extends PHP_Token
Chris@14 785 {
Chris@14 786 }
Chris@14 787
Chris@14 788 class PHP_Token_CONST extends PHP_Token
Chris@14 789 {
Chris@14 790 }
Chris@14 791
Chris@14 792 class PHP_Token_CONSTANT_ENCAPSED_STRING extends PHP_Token
Chris@14 793 {
Chris@14 794 }
Chris@14 795
Chris@14 796 class PHP_Token_CONTINUE extends PHP_Token
Chris@14 797 {
Chris@14 798 }
Chris@14 799
Chris@14 800 class PHP_Token_CURLY_OPEN extends PHP_Token
Chris@14 801 {
Chris@14 802 }
Chris@14 803
Chris@14 804 class PHP_Token_DEC extends PHP_Token
Chris@14 805 {
Chris@14 806 }
Chris@14 807
Chris@14 808 class PHP_Token_DECLARE extends PHP_Token
Chris@14 809 {
Chris@14 810 }
Chris@14 811
Chris@14 812 class PHP_Token_DEFAULT extends PHP_Token
Chris@14 813 {
Chris@14 814 }
Chris@14 815
Chris@14 816 class PHP_Token_DIV extends PHP_Token
Chris@14 817 {
Chris@14 818 }
Chris@14 819
Chris@14 820 class PHP_Token_DIV_EQUAL extends PHP_Token
Chris@14 821 {
Chris@14 822 }
Chris@14 823
Chris@14 824 class PHP_Token_DNUMBER extends PHP_Token
Chris@14 825 {
Chris@14 826 }
Chris@14 827
Chris@14 828 class PHP_Token_DO extends PHP_Token
Chris@14 829 {
Chris@14 830 }
Chris@14 831
Chris@14 832 class PHP_Token_DOC_COMMENT extends PHP_Token
Chris@14 833 {
Chris@14 834 }
Chris@14 835
Chris@14 836 class PHP_Token_DOLLAR extends PHP_Token
Chris@14 837 {
Chris@14 838 }
Chris@14 839
Chris@14 840 class PHP_Token_DOLLAR_OPEN_CURLY_BRACES extends PHP_Token
Chris@14 841 {
Chris@14 842 }
Chris@14 843
Chris@14 844 class PHP_Token_DOT extends PHP_Token
Chris@14 845 {
Chris@14 846 }
Chris@14 847
Chris@14 848 class PHP_Token_DOUBLE_ARROW extends PHP_Token
Chris@14 849 {
Chris@14 850 }
Chris@14 851
Chris@14 852 class PHP_Token_DOUBLE_CAST extends PHP_Token
Chris@14 853 {
Chris@14 854 }
Chris@14 855
Chris@14 856 class PHP_Token_DOUBLE_COLON extends PHP_Token
Chris@14 857 {
Chris@14 858 }
Chris@14 859
Chris@14 860 class PHP_Token_DOUBLE_QUOTES extends PHP_Token
Chris@14 861 {
Chris@14 862 }
Chris@14 863
Chris@14 864 class PHP_Token_ECHO extends PHP_Token
Chris@14 865 {
Chris@14 866 }
Chris@14 867
Chris@14 868 class PHP_Token_ELSE extends PHP_Token
Chris@14 869 {
Chris@14 870 }
Chris@14 871
Chris@14 872 class PHP_Token_ELSEIF extends PHP_Token
Chris@14 873 {
Chris@14 874 }
Chris@14 875
Chris@14 876 class PHP_Token_EMPTY extends PHP_Token
Chris@14 877 {
Chris@14 878 }
Chris@14 879
Chris@14 880 class PHP_Token_ENCAPSED_AND_WHITESPACE extends PHP_Token
Chris@14 881 {
Chris@14 882 }
Chris@14 883
Chris@14 884 class PHP_Token_ENDDECLARE extends PHP_Token
Chris@14 885 {
Chris@14 886 }
Chris@14 887
Chris@14 888 class PHP_Token_ENDFOR extends PHP_Token
Chris@14 889 {
Chris@14 890 }
Chris@14 891
Chris@14 892 class PHP_Token_ENDFOREACH extends PHP_Token
Chris@14 893 {
Chris@14 894 }
Chris@14 895
Chris@14 896 class PHP_Token_ENDIF extends PHP_Token
Chris@14 897 {
Chris@14 898 }
Chris@14 899
Chris@14 900 class PHP_Token_ENDSWITCH extends PHP_Token
Chris@14 901 {
Chris@14 902 }
Chris@14 903
Chris@14 904 class PHP_Token_ENDWHILE extends PHP_Token
Chris@14 905 {
Chris@14 906 }
Chris@14 907
Chris@14 908 class PHP_Token_END_HEREDOC extends PHP_Token
Chris@14 909 {
Chris@14 910 }
Chris@14 911
Chris@14 912 class PHP_Token_EQUAL extends PHP_Token
Chris@14 913 {
Chris@14 914 }
Chris@14 915
Chris@14 916 class PHP_Token_EVAL extends PHP_Token
Chris@14 917 {
Chris@14 918 }
Chris@14 919
Chris@14 920 class PHP_Token_EXCLAMATION_MARK extends PHP_Token
Chris@14 921 {
Chris@14 922 }
Chris@14 923
Chris@14 924 class PHP_Token_EXIT extends PHP_Token
Chris@14 925 {
Chris@14 926 }
Chris@14 927
Chris@14 928 class PHP_Token_EXTENDS extends PHP_Token
Chris@14 929 {
Chris@14 930 }
Chris@14 931
Chris@14 932 class PHP_Token_FILE extends PHP_Token
Chris@14 933 {
Chris@14 934 }
Chris@14 935
Chris@14 936 class PHP_Token_FINAL extends PHP_Token
Chris@14 937 {
Chris@14 938 }
Chris@14 939
Chris@14 940 class PHP_Token_FOR extends PHP_Token
Chris@14 941 {
Chris@14 942 }
Chris@14 943
Chris@14 944 class PHP_Token_FOREACH extends PHP_Token
Chris@14 945 {
Chris@14 946 }
Chris@14 947
Chris@14 948 class PHP_Token_FUNC_C extends PHP_Token
Chris@14 949 {
Chris@14 950 }
Chris@14 951
Chris@14 952 class PHP_Token_GLOBAL extends PHP_Token
Chris@14 953 {
Chris@14 954 }
Chris@14 955
Chris@14 956 class PHP_Token_GT extends PHP_Token
Chris@14 957 {
Chris@14 958 }
Chris@14 959
Chris@14 960 class PHP_Token_IF extends PHP_Token
Chris@14 961 {
Chris@14 962 }
Chris@14 963
Chris@14 964 class PHP_Token_IMPLEMENTS extends PHP_Token
Chris@14 965 {
Chris@14 966 }
Chris@14 967
Chris@14 968 class PHP_Token_INC extends PHP_Token
Chris@14 969 {
Chris@14 970 }
Chris@14 971
Chris@14 972 class PHP_Token_INCLUDE extends PHP_Token_Includes
Chris@14 973 {
Chris@14 974 }
Chris@14 975
Chris@14 976 class PHP_Token_INCLUDE_ONCE extends PHP_Token_Includes
Chris@14 977 {
Chris@14 978 }
Chris@14 979
Chris@14 980 class PHP_Token_INLINE_HTML extends PHP_Token
Chris@14 981 {
Chris@14 982 }
Chris@14 983
Chris@14 984 class PHP_Token_INSTANCEOF extends PHP_Token
Chris@14 985 {
Chris@14 986 }
Chris@14 987
Chris@14 988 class PHP_Token_INT_CAST extends PHP_Token
Chris@14 989 {
Chris@14 990 }
Chris@14 991
Chris@14 992 class PHP_Token_ISSET extends PHP_Token
Chris@14 993 {
Chris@14 994 }
Chris@14 995
Chris@14 996 class PHP_Token_IS_EQUAL extends PHP_Token
Chris@14 997 {
Chris@14 998 }
Chris@14 999
Chris@14 1000 class PHP_Token_IS_GREATER_OR_EQUAL extends PHP_Token
Chris@14 1001 {
Chris@14 1002 }
Chris@14 1003
Chris@14 1004 class PHP_Token_IS_IDENTICAL extends PHP_Token
Chris@14 1005 {
Chris@14 1006 }
Chris@14 1007
Chris@14 1008 class PHP_Token_IS_NOT_EQUAL extends PHP_Token
Chris@14 1009 {
Chris@14 1010 }
Chris@14 1011
Chris@14 1012 class PHP_Token_IS_NOT_IDENTICAL extends PHP_Token
Chris@14 1013 {
Chris@14 1014 }
Chris@14 1015
Chris@14 1016 class PHP_Token_IS_SMALLER_OR_EQUAL extends PHP_Token
Chris@14 1017 {
Chris@14 1018 }
Chris@14 1019
Chris@14 1020 class PHP_Token_LINE extends PHP_Token
Chris@14 1021 {
Chris@14 1022 }
Chris@14 1023
Chris@14 1024 class PHP_Token_LIST extends PHP_Token
Chris@14 1025 {
Chris@14 1026 }
Chris@14 1027
Chris@14 1028 class PHP_Token_LNUMBER extends PHP_Token
Chris@14 1029 {
Chris@14 1030 }
Chris@14 1031
Chris@14 1032 class PHP_Token_LOGICAL_AND extends PHP_Token
Chris@14 1033 {
Chris@14 1034 }
Chris@14 1035
Chris@14 1036 class PHP_Token_LOGICAL_OR extends PHP_Token
Chris@14 1037 {
Chris@14 1038 }
Chris@14 1039
Chris@14 1040 class PHP_Token_LOGICAL_XOR extends PHP_Token
Chris@14 1041 {
Chris@14 1042 }
Chris@14 1043
Chris@14 1044 class PHP_Token_LT extends PHP_Token
Chris@14 1045 {
Chris@14 1046 }
Chris@14 1047
Chris@14 1048 class PHP_Token_METHOD_C extends PHP_Token
Chris@14 1049 {
Chris@14 1050 }
Chris@14 1051
Chris@14 1052 class PHP_Token_MINUS extends PHP_Token
Chris@14 1053 {
Chris@14 1054 }
Chris@14 1055
Chris@14 1056 class PHP_Token_MINUS_EQUAL extends PHP_Token
Chris@14 1057 {
Chris@14 1058 }
Chris@14 1059
Chris@14 1060 class PHP_Token_MOD_EQUAL extends PHP_Token
Chris@14 1061 {
Chris@14 1062 }
Chris@14 1063
Chris@14 1064 class PHP_Token_MULT extends PHP_Token
Chris@14 1065 {
Chris@14 1066 }
Chris@14 1067
Chris@14 1068 class PHP_Token_MUL_EQUAL extends PHP_Token
Chris@14 1069 {
Chris@14 1070 }
Chris@14 1071
Chris@14 1072 class PHP_Token_NEW extends PHP_Token
Chris@14 1073 {
Chris@14 1074 }
Chris@14 1075
Chris@14 1076 class PHP_Token_NUM_STRING extends PHP_Token
Chris@14 1077 {
Chris@14 1078 }
Chris@14 1079
Chris@14 1080 class PHP_Token_OBJECT_CAST extends PHP_Token
Chris@14 1081 {
Chris@14 1082 }
Chris@14 1083
Chris@14 1084 class PHP_Token_OBJECT_OPERATOR extends PHP_Token
Chris@14 1085 {
Chris@14 1086 }
Chris@14 1087
Chris@14 1088 class PHP_Token_OPEN_BRACKET extends PHP_Token
Chris@14 1089 {
Chris@14 1090 }
Chris@14 1091
Chris@14 1092 class PHP_Token_OPEN_CURLY extends PHP_Token
Chris@14 1093 {
Chris@14 1094 }
Chris@14 1095
Chris@14 1096 class PHP_Token_OPEN_SQUARE extends PHP_Token
Chris@14 1097 {
Chris@14 1098 }
Chris@14 1099
Chris@14 1100 class PHP_Token_OPEN_TAG extends PHP_Token
Chris@14 1101 {
Chris@14 1102 }
Chris@14 1103
Chris@14 1104 class PHP_Token_OPEN_TAG_WITH_ECHO extends PHP_Token
Chris@14 1105 {
Chris@14 1106 }
Chris@14 1107
Chris@14 1108 class PHP_Token_OR_EQUAL extends PHP_Token
Chris@14 1109 {
Chris@14 1110 }
Chris@14 1111
Chris@14 1112 class PHP_Token_PAAMAYIM_NEKUDOTAYIM extends PHP_Token
Chris@14 1113 {
Chris@14 1114 }
Chris@14 1115
Chris@14 1116 class PHP_Token_PERCENT extends PHP_Token
Chris@14 1117 {
Chris@14 1118 }
Chris@14 1119
Chris@14 1120 class PHP_Token_PIPE extends PHP_Token
Chris@14 1121 {
Chris@14 1122 }
Chris@14 1123
Chris@14 1124 class PHP_Token_PLUS extends PHP_Token
Chris@14 1125 {
Chris@14 1126 }
Chris@14 1127
Chris@14 1128 class PHP_Token_PLUS_EQUAL extends PHP_Token
Chris@14 1129 {
Chris@14 1130 }
Chris@14 1131
Chris@14 1132 class PHP_Token_PRINT extends PHP_Token
Chris@14 1133 {
Chris@14 1134 }
Chris@14 1135
Chris@14 1136 class PHP_Token_PRIVATE extends PHP_Token
Chris@14 1137 {
Chris@14 1138 }
Chris@14 1139
Chris@14 1140 class PHP_Token_PROTECTED extends PHP_Token
Chris@14 1141 {
Chris@14 1142 }
Chris@14 1143
Chris@14 1144 class PHP_Token_PUBLIC extends PHP_Token
Chris@14 1145 {
Chris@14 1146 }
Chris@14 1147
Chris@14 1148 class PHP_Token_QUESTION_MARK extends PHP_Token
Chris@14 1149 {
Chris@14 1150 }
Chris@14 1151
Chris@14 1152 class PHP_Token_REQUIRE extends PHP_Token_Includes
Chris@14 1153 {
Chris@14 1154 }
Chris@14 1155
Chris@14 1156 class PHP_Token_REQUIRE_ONCE extends PHP_Token_Includes
Chris@14 1157 {
Chris@14 1158 }
Chris@14 1159
Chris@14 1160 class PHP_Token_RETURN extends PHP_Token
Chris@14 1161 {
Chris@14 1162 }
Chris@14 1163
Chris@14 1164 class PHP_Token_SEMICOLON extends PHP_Token
Chris@14 1165 {
Chris@14 1166 }
Chris@14 1167
Chris@14 1168 class PHP_Token_SL extends PHP_Token
Chris@14 1169 {
Chris@14 1170 }
Chris@14 1171
Chris@14 1172 class PHP_Token_SL_EQUAL extends PHP_Token
Chris@14 1173 {
Chris@14 1174 }
Chris@14 1175
Chris@14 1176 class PHP_Token_SR extends PHP_Token
Chris@14 1177 {
Chris@14 1178 }
Chris@14 1179
Chris@14 1180 class PHP_Token_SR_EQUAL extends PHP_Token
Chris@14 1181 {
Chris@14 1182 }
Chris@14 1183
Chris@14 1184 class PHP_Token_START_HEREDOC extends PHP_Token
Chris@14 1185 {
Chris@14 1186 }
Chris@14 1187
Chris@14 1188 class PHP_Token_STATIC extends PHP_Token
Chris@14 1189 {
Chris@14 1190 }
Chris@14 1191
Chris@14 1192 class PHP_Token_STRING extends PHP_Token
Chris@14 1193 {
Chris@14 1194 }
Chris@14 1195
Chris@14 1196 class PHP_Token_STRING_CAST extends PHP_Token
Chris@14 1197 {
Chris@14 1198 }
Chris@14 1199
Chris@14 1200 class PHP_Token_STRING_VARNAME extends PHP_Token
Chris@14 1201 {
Chris@14 1202 }
Chris@14 1203
Chris@14 1204 class PHP_Token_SWITCH extends PHP_Token
Chris@14 1205 {
Chris@14 1206 }
Chris@14 1207
Chris@14 1208 class PHP_Token_THROW extends PHP_Token
Chris@14 1209 {
Chris@14 1210 }
Chris@14 1211
Chris@14 1212 class PHP_Token_TILDE extends PHP_Token
Chris@14 1213 {
Chris@14 1214 }
Chris@14 1215
Chris@14 1216 class PHP_Token_TRY extends PHP_Token
Chris@14 1217 {
Chris@14 1218 }
Chris@14 1219
Chris@14 1220 class PHP_Token_UNSET extends PHP_Token
Chris@14 1221 {
Chris@14 1222 }
Chris@14 1223
Chris@14 1224 class PHP_Token_UNSET_CAST extends PHP_Token
Chris@14 1225 {
Chris@14 1226 }
Chris@14 1227
Chris@14 1228 class PHP_Token_USE extends PHP_Token
Chris@14 1229 {
Chris@14 1230 }
Chris@14 1231
Chris@14 1232 class PHP_Token_USE_FUNCTION extends PHP_Token
Chris@14 1233 {
Chris@14 1234 }
Chris@14 1235
Chris@14 1236 class PHP_Token_VAR extends PHP_Token
Chris@14 1237 {
Chris@14 1238 }
Chris@14 1239
Chris@14 1240 class PHP_Token_VARIABLE extends PHP_Token
Chris@14 1241 {
Chris@14 1242 }
Chris@14 1243
Chris@14 1244 class PHP_Token_WHILE extends PHP_Token
Chris@14 1245 {
Chris@14 1246 }
Chris@14 1247
Chris@14 1248 class PHP_Token_WHITESPACE extends PHP_Token
Chris@14 1249 {
Chris@14 1250 }
Chris@14 1251
Chris@14 1252 class PHP_Token_XOR_EQUAL extends PHP_Token
Chris@14 1253 {
Chris@14 1254 }
Chris@0 1255
Chris@0 1256 // Tokens introduced in PHP 5.1
Chris@14 1257 class PHP_Token_HALT_COMPILER extends PHP_Token
Chris@14 1258 {
Chris@14 1259 }
Chris@0 1260
Chris@0 1261 // Tokens introduced in PHP 5.3
Chris@14 1262 class PHP_Token_DIR extends PHP_Token
Chris@14 1263 {
Chris@14 1264 }
Chris@14 1265
Chris@14 1266 class PHP_Token_GOTO extends PHP_Token
Chris@14 1267 {
Chris@14 1268 }
Chris@0 1269
Chris@0 1270 class PHP_Token_NAMESPACE extends PHP_TokenWithScope
Chris@0 1271 {
Chris@0 1272 /**
Chris@0 1273 * @return string
Chris@0 1274 */
Chris@0 1275 public function getName()
Chris@0 1276 {
Chris@0 1277 $tokens = $this->tokenStream->tokens();
Chris@14 1278 $namespace = (string) $tokens[$this->id + 2];
Chris@0 1279
Chris@0 1280 for ($i = $this->id + 3;; $i += 2) {
Chris@0 1281 if (isset($tokens[$i]) &&
Chris@0 1282 $tokens[$i] instanceof PHP_Token_NS_SEPARATOR) {
Chris@14 1283 $namespace .= '\\' . $tokens[$i + 1];
Chris@0 1284 } else {
Chris@0 1285 break;
Chris@0 1286 }
Chris@0 1287 }
Chris@0 1288
Chris@0 1289 return $namespace;
Chris@0 1290 }
Chris@0 1291 }
Chris@0 1292
Chris@14 1293 class PHP_Token_NS_C extends PHP_Token
Chris@14 1294 {
Chris@14 1295 }
Chris@14 1296
Chris@14 1297 class PHP_Token_NS_SEPARATOR extends PHP_Token
Chris@14 1298 {
Chris@14 1299 }
Chris@0 1300
Chris@0 1301 // Tokens introduced in PHP 5.4
Chris@14 1302 class PHP_Token_CALLABLE extends PHP_Token
Chris@14 1303 {
Chris@14 1304 }
Chris@14 1305
Chris@14 1306 class PHP_Token_INSTEADOF extends PHP_Token
Chris@14 1307 {
Chris@14 1308 }
Chris@14 1309
Chris@14 1310 class PHP_Token_TRAIT extends PHP_Token_INTERFACE
Chris@14 1311 {
Chris@14 1312 }
Chris@14 1313
Chris@14 1314 class PHP_Token_TRAIT_C extends PHP_Token
Chris@14 1315 {
Chris@14 1316 }
Chris@0 1317
Chris@0 1318 // Tokens introduced in PHP 5.5
Chris@14 1319 class PHP_Token_FINALLY extends PHP_Token
Chris@14 1320 {
Chris@14 1321 }
Chris@14 1322
Chris@14 1323 class PHP_Token_YIELD extends PHP_Token
Chris@14 1324 {
Chris@14 1325 }
Chris@0 1326
Chris@0 1327 // Tokens introduced in PHP 5.6
Chris@14 1328 class PHP_Token_ELLIPSIS extends PHP_Token
Chris@14 1329 {
Chris@14 1330 }
Chris@14 1331
Chris@14 1332 class PHP_Token_POW extends PHP_Token
Chris@14 1333 {
Chris@14 1334 }
Chris@14 1335
Chris@14 1336 class PHP_Token_POW_EQUAL extends PHP_Token
Chris@14 1337 {
Chris@14 1338 }
Chris@0 1339
Chris@0 1340 // Tokens introduced in PHP 7.0
Chris@14 1341 class PHP_Token_COALESCE extends PHP_Token
Chris@14 1342 {
Chris@14 1343 }
Chris@14 1344
Chris@14 1345 class PHP_Token_SPACESHIP extends PHP_Token
Chris@14 1346 {
Chris@14 1347 }
Chris@14 1348
Chris@14 1349 class PHP_Token_YIELD_FROM extends PHP_Token
Chris@14 1350 {
Chris@14 1351 }
Chris@0 1352
Chris@0 1353 // Tokens introduced in HackLang / HHVM
Chris@14 1354 class PHP_Token_ASYNC extends PHP_Token
Chris@14 1355 {
Chris@14 1356 }
Chris@14 1357
Chris@14 1358 class PHP_Token_AWAIT extends PHP_Token
Chris@14 1359 {
Chris@14 1360 }
Chris@14 1361
Chris@14 1362 class PHP_Token_COMPILER_HALT_OFFSET extends PHP_Token
Chris@14 1363 {
Chris@14 1364 }
Chris@14 1365
Chris@14 1366 class PHP_Token_ENUM extends PHP_Token
Chris@14 1367 {
Chris@14 1368 }
Chris@14 1369
Chris@14 1370 class PHP_Token_EQUALS extends PHP_Token
Chris@14 1371 {
Chris@14 1372 }
Chris@14 1373
Chris@14 1374 class PHP_Token_IN extends PHP_Token
Chris@14 1375 {
Chris@14 1376 }
Chris@14 1377
Chris@14 1378 class PHP_Token_JOIN extends PHP_Token
Chris@14 1379 {
Chris@14 1380 }
Chris@14 1381
Chris@14 1382 class PHP_Token_LAMBDA_ARROW extends PHP_Token
Chris@14 1383 {
Chris@14 1384 }
Chris@14 1385
Chris@14 1386 class PHP_Token_LAMBDA_CP extends PHP_Token
Chris@14 1387 {
Chris@14 1388 }
Chris@14 1389
Chris@14 1390 class PHP_Token_LAMBDA_OP extends PHP_Token
Chris@14 1391 {
Chris@14 1392 }
Chris@14 1393
Chris@14 1394 class PHP_Token_ONUMBER extends PHP_Token
Chris@14 1395 {
Chris@14 1396 }
Chris@14 1397
Chris@14 1398 class PHP_Token_NULLSAFE_OBJECT_OPERATOR extends PHP_Token
Chris@14 1399 {
Chris@14 1400 }
Chris@14 1401
Chris@14 1402 class PHP_Token_SHAPE extends PHP_Token
Chris@14 1403 {
Chris@14 1404 }
Chris@14 1405
Chris@14 1406 class PHP_Token_SUPER extends PHP_Token
Chris@14 1407 {
Chris@14 1408 }
Chris@14 1409
Chris@14 1410 class PHP_Token_TYPE extends PHP_Token
Chris@14 1411 {
Chris@14 1412 }
Chris@14 1413
Chris@14 1414 class PHP_Token_TYPELIST_GT extends PHP_Token
Chris@14 1415 {
Chris@14 1416 }
Chris@14 1417
Chris@14 1418 class PHP_Token_TYPELIST_LT extends PHP_Token
Chris@14 1419 {
Chris@14 1420 }
Chris@14 1421
Chris@14 1422 class PHP_Token_WHERE extends PHP_Token
Chris@14 1423 {
Chris@14 1424 }
Chris@14 1425
Chris@14 1426 class PHP_Token_XHP_ATTRIBUTE extends PHP_Token
Chris@14 1427 {
Chris@14 1428 }
Chris@14 1429
Chris@14 1430 class PHP_Token_XHP_CATEGORY extends PHP_Token
Chris@14 1431 {
Chris@14 1432 }
Chris@14 1433
Chris@14 1434 class PHP_Token_XHP_CATEGORY_LABEL extends PHP_Token
Chris@14 1435 {
Chris@14 1436 }
Chris@14 1437
Chris@14 1438 class PHP_Token_XHP_CHILDREN extends PHP_Token
Chris@14 1439 {
Chris@14 1440 }
Chris@14 1441
Chris@14 1442 class PHP_Token_XHP_LABEL extends PHP_Token
Chris@14 1443 {
Chris@14 1444 }
Chris@14 1445
Chris@14 1446 class PHP_Token_XHP_REQUIRED extends PHP_Token
Chris@14 1447 {
Chris@14 1448 }
Chris@14 1449
Chris@14 1450 class PHP_Token_XHP_TAG_GT extends PHP_Token
Chris@14 1451 {
Chris@14 1452 }
Chris@14 1453
Chris@14 1454 class PHP_Token_XHP_TAG_LT extends PHP_Token
Chris@14 1455 {
Chris@14 1456 }
Chris@14 1457
Chris@14 1458 class PHP_Token_XHP_TEXT extends PHP_Token
Chris@14 1459 {
Chris@14 1460 }