annotate vendor/squizlabs/php_codesniffer/src/Util/Tokens.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 129ea1e6d783
children
rev   line source
Chris@17 1 <?php
Chris@17 2 /**
Chris@17 3 * Stores weightings and groupings of tokens.
Chris@17 4 *
Chris@17 5 * @author Greg Sherwood <gsherwood@squiz.net>
Chris@17 6 * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600)
Chris@17 7 * @license https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence
Chris@17 8 */
Chris@17 9
Chris@17 10 namespace PHP_CodeSniffer\Util;
Chris@17 11
Chris@17 12 define('T_NONE', 'PHPCS_T_NONE');
Chris@17 13 define('T_OPEN_CURLY_BRACKET', 'PHPCS_T_OPEN_CURLY_BRACKET');
Chris@17 14 define('T_CLOSE_CURLY_BRACKET', 'PHPCS_T_CLOSE_CURLY_BRACKET');
Chris@17 15 define('T_OPEN_SQUARE_BRACKET', 'PHPCS_T_OPEN_SQUARE_BRACKET');
Chris@17 16 define('T_CLOSE_SQUARE_BRACKET', 'PHPCS_T_CLOSE_SQUARE_BRACKET');
Chris@17 17 define('T_OPEN_PARENTHESIS', 'PHPCS_T_OPEN_PARENTHESIS');
Chris@17 18 define('T_CLOSE_PARENTHESIS', 'PHPCS_T_CLOSE_PARENTHESIS');
Chris@17 19 define('T_COLON', 'PHPCS_T_COLON');
Chris@17 20 define('T_NULLABLE', 'PHPCS_T_NULLABLE');
Chris@17 21 define('T_STRING_CONCAT', 'PHPCS_T_STRING_CONCAT');
Chris@17 22 define('T_INLINE_THEN', 'PHPCS_T_INLINE_THEN');
Chris@17 23 define('T_INLINE_ELSE', 'PHPCS_T_INLINE_ELSE');
Chris@17 24 define('T_NULL', 'PHPCS_T_NULL');
Chris@17 25 define('T_FALSE', 'PHPCS_T_FALSE');
Chris@17 26 define('T_TRUE', 'PHPCS_T_TRUE');
Chris@17 27 define('T_SEMICOLON', 'PHPCS_T_SEMICOLON');
Chris@17 28 define('T_EQUAL', 'PHPCS_T_EQUAL');
Chris@17 29 define('T_MULTIPLY', 'PHPCS_T_MULTIPLY');
Chris@17 30 define('T_DIVIDE', 'PHPCS_T_DIVIDE');
Chris@17 31 define('T_PLUS', 'PHPCS_T_PLUS');
Chris@17 32 define('T_MINUS', 'PHPCS_T_MINUS');
Chris@17 33 define('T_MODULUS', 'PHPCS_T_MODULUS');
Chris@17 34 define('T_BITWISE_AND', 'PHPCS_T_BITWISE_AND');
Chris@17 35 define('T_BITWISE_OR', 'PHPCS_T_BITWISE_OR');
Chris@17 36 define('T_BITWISE_XOR', 'PHPCS_T_BITWISE_XOR');
Chris@17 37 define('T_BITWISE_NOT', 'PHPCS_T_BITWISE_NOT');
Chris@17 38 define('T_ARRAY_HINT', 'PHPCS_T_ARRAY_HINT');
Chris@17 39 define('T_GREATER_THAN', 'PHPCS_T_GREATER_THAN');
Chris@17 40 define('T_LESS_THAN', 'PHPCS_T_LESS_THAN');
Chris@17 41 define('T_BOOLEAN_NOT', 'PHPCS_T_BOOLEAN_NOT');
Chris@17 42 define('T_SELF', 'PHPCS_T_SELF');
Chris@17 43 define('T_PARENT', 'PHPCS_T_PARENT');
Chris@17 44 define('T_DOUBLE_QUOTED_STRING', 'PHPCS_T_DOUBLE_QUOTED_STRING');
Chris@17 45 define('T_COMMA', 'PHPCS_T_COMMA');
Chris@17 46 define('T_HEREDOC', 'PHPCS_T_HEREDOC');
Chris@17 47 define('T_PROTOTYPE', 'PHPCS_T_PROTOTYPE');
Chris@17 48 define('T_THIS', 'PHPCS_T_THIS');
Chris@17 49 define('T_REGULAR_EXPRESSION', 'PHPCS_T_REGULAR_EXPRESSION');
Chris@17 50 define('T_PROPERTY', 'PHPCS_T_PROPERTY');
Chris@17 51 define('T_LABEL', 'PHPCS_T_LABEL');
Chris@17 52 define('T_OBJECT', 'PHPCS_T_OBJECT');
Chris@17 53 define('T_CLOSE_OBJECT', 'PHPCS_T_CLOSE_OBJECT');
Chris@17 54 define('T_COLOUR', 'PHPCS_T_COLOUR');
Chris@17 55 define('T_HASH', 'PHPCS_T_HASH');
Chris@17 56 define('T_URL', 'PHPCS_T_URL');
Chris@17 57 define('T_STYLE', 'PHPCS_T_STYLE');
Chris@17 58 define('T_ASPERAND', 'PHPCS_T_ASPERAND');
Chris@17 59 define('T_DOLLAR', 'PHPCS_T_DOLLAR');
Chris@17 60 define('T_TYPEOF', 'PHPCS_T_TYPEOF');
Chris@17 61 define('T_CLOSURE', 'PHPCS_T_CLOSURE');
Chris@17 62 define('T_ANON_CLASS', 'PHPCS_T_ANON_CLASS');
Chris@17 63 define('T_BACKTICK', 'PHPCS_T_BACKTICK');
Chris@17 64 define('T_START_NOWDOC', 'PHPCS_T_START_NOWDOC');
Chris@17 65 define('T_NOWDOC', 'PHPCS_T_NOWDOC');
Chris@17 66 define('T_END_NOWDOC', 'PHPCS_T_END_NOWDOC');
Chris@17 67 define('T_OPEN_SHORT_ARRAY', 'PHPCS_T_OPEN_SHORT_ARRAY');
Chris@17 68 define('T_CLOSE_SHORT_ARRAY', 'PHPCS_T_CLOSE_SHORT_ARRAY');
Chris@17 69 define('T_GOTO_LABEL', 'PHPCS_T_GOTO_LABEL');
Chris@17 70 define('T_BINARY_CAST', 'PHPCS_T_BINARY_CAST');
Chris@17 71 define('T_EMBEDDED_PHP', 'PHPCS_T_EMBEDDED_PHP');
Chris@17 72 define('T_RETURN_TYPE', 'PHPCS_T_RETURN_TYPE');
Chris@17 73 define('T_OPEN_USE_GROUP', 'PHPCS_T_OPEN_USE_GROUP');
Chris@17 74 define('T_CLOSE_USE_GROUP', 'PHPCS_T_CLOSE_USE_GROUP');
Chris@17 75 define('T_ZSR', 'PHPCS_T_ZSR');
Chris@17 76 define('T_ZSR_EQUAL', 'PHPCS_T_ZSR_EQUAL');
Chris@17 77
Chris@17 78 // Some PHP 5.5 tokens, replicated for lower versions.
Chris@17 79 if (defined('T_FINALLY') === false) {
Chris@17 80 define('T_FINALLY', 'PHPCS_T_FINALLY');
Chris@17 81 }
Chris@17 82
Chris@17 83 if (defined('T_YIELD') === false) {
Chris@17 84 define('T_YIELD', 'PHPCS_T_YIELD');
Chris@17 85 }
Chris@17 86
Chris@17 87 // Some PHP 5.6 tokens, replicated for lower versions.
Chris@17 88 if (defined('T_ELLIPSIS') === false) {
Chris@17 89 define('T_ELLIPSIS', 'PHPCS_T_ELLIPSIS');
Chris@17 90 }
Chris@17 91
Chris@17 92 if (defined('T_POW') === false) {
Chris@17 93 define('T_POW', 'PHPCS_T_POW');
Chris@17 94 }
Chris@17 95
Chris@17 96 if (defined('T_POW_EQUAL') === false) {
Chris@17 97 define('T_POW_EQUAL', 'PHPCS_T_POW_EQUAL');
Chris@17 98 }
Chris@17 99
Chris@17 100 // Some PHP 7 tokens, replicated for lower versions.
Chris@17 101 if (defined('T_SPACESHIP') === false) {
Chris@17 102 define('T_SPACESHIP', 'PHPCS_T_SPACESHIP');
Chris@17 103 }
Chris@17 104
Chris@17 105 if (defined('T_COALESCE') === false) {
Chris@17 106 define('T_COALESCE', 'PHPCS_T_COALESCE');
Chris@17 107 }
Chris@17 108
Chris@17 109 if (defined('T_COALESCE_EQUAL') === false) {
Chris@17 110 define('T_COALESCE_EQUAL', 'PHPCS_T_COALESCE_EQUAL');
Chris@17 111 }
Chris@17 112
Chris@17 113 if (defined('T_YIELD_FROM') === false) {
Chris@17 114 define('T_YIELD_FROM', 'PHPCS_T_YIELD_FROM');
Chris@17 115 }
Chris@17 116
Chris@17 117 // Tokens used for parsing doc blocks.
Chris@17 118 define('T_DOC_COMMENT_STAR', 'PHPCS_T_DOC_COMMENT_STAR');
Chris@17 119 define('T_DOC_COMMENT_WHITESPACE', 'PHPCS_T_DOC_COMMENT_WHITESPACE');
Chris@17 120 define('T_DOC_COMMENT_TAG', 'PHPCS_T_DOC_COMMENT_TAG');
Chris@17 121 define('T_DOC_COMMENT_OPEN_TAG', 'PHPCS_T_DOC_COMMENT_OPEN_TAG');
Chris@17 122 define('T_DOC_COMMENT_CLOSE_TAG', 'PHPCS_T_DOC_COMMENT_CLOSE_TAG');
Chris@17 123 define('T_DOC_COMMENT_STRING', 'PHPCS_T_DOC_COMMENT_STRING');
Chris@17 124
Chris@17 125 // Tokens used for PHPCS instruction comments.
Chris@17 126 define('T_PHPCS_ENABLE', 'PHPCS_T_PHPCS_ENABLE');
Chris@17 127 define('T_PHPCS_DISABLE', 'PHPCS_T_PHPCS_DISABLE');
Chris@17 128 define('T_PHPCS_SET', 'PHPCS_T_PHPCS_SET');
Chris@17 129 define('T_PHPCS_IGNORE', 'PHPCS_T_PHPCS_IGNORE');
Chris@17 130 define('T_PHPCS_IGNORE_FILE', 'PHPCS_T_PHPCS_IGNORE_FILE');
Chris@17 131
Chris@17 132 final class Tokens
Chris@17 133 {
Chris@17 134
Chris@17 135 /**
Chris@17 136 * The token weightings.
Chris@17 137 *
Chris@17 138 * @var array<int, int>
Chris@17 139 */
Chris@17 140 public static $weightings = [
Chris@17 141 T_CLASS => 1000,
Chris@17 142 T_INTERFACE => 1000,
Chris@17 143 T_TRAIT => 1000,
Chris@17 144 T_NAMESPACE => 1000,
Chris@17 145 T_FUNCTION => 100,
Chris@17 146 T_CLOSURE => 100,
Chris@17 147
Chris@17 148 /*
Chris@17 149 * Conditions.
Chris@17 150 */
Chris@17 151
Chris@17 152 T_WHILE => 50,
Chris@17 153 T_FOR => 50,
Chris@17 154 T_FOREACH => 50,
Chris@17 155 T_IF => 50,
Chris@17 156 T_ELSE => 50,
Chris@17 157 T_ELSEIF => 50,
Chris@17 158 T_DO => 50,
Chris@17 159 T_TRY => 50,
Chris@17 160 T_CATCH => 50,
Chris@17 161 T_FINALLY => 50,
Chris@17 162 T_SWITCH => 50,
Chris@17 163
Chris@17 164 T_SELF => 25,
Chris@17 165 T_PARENT => 25,
Chris@17 166
Chris@17 167 /*
Chris@17 168 * Operators and arithmetic.
Chris@17 169 */
Chris@17 170
Chris@17 171 T_BITWISE_AND => 8,
Chris@17 172 T_BITWISE_OR => 8,
Chris@17 173 T_BITWISE_XOR => 8,
Chris@17 174
Chris@17 175 T_MULTIPLY => 5,
Chris@17 176 T_DIVIDE => 5,
Chris@17 177 T_PLUS => 5,
Chris@17 178 T_MINUS => 5,
Chris@17 179 T_MODULUS => 5,
Chris@17 180 T_POW => 5,
Chris@17 181 T_SPACESHIP => 5,
Chris@17 182 T_COALESCE => 5,
Chris@17 183 T_COALESCE_EQUAL => 5,
Chris@17 184
Chris@17 185 T_SL => 5,
Chris@17 186 T_SR => 5,
Chris@17 187 T_SL_EQUAL => 5,
Chris@17 188 T_SR_EQUAL => 5,
Chris@17 189
Chris@17 190 T_EQUAL => 5,
Chris@17 191 T_AND_EQUAL => 5,
Chris@17 192 T_CONCAT_EQUAL => 5,
Chris@17 193 T_DIV_EQUAL => 5,
Chris@17 194 T_MINUS_EQUAL => 5,
Chris@17 195 T_MOD_EQUAL => 5,
Chris@17 196 T_MUL_EQUAL => 5,
Chris@17 197 T_OR_EQUAL => 5,
Chris@17 198 T_PLUS_EQUAL => 5,
Chris@17 199 T_XOR_EQUAL => 5,
Chris@17 200
Chris@17 201 T_BOOLEAN_AND => 5,
Chris@17 202 T_BOOLEAN_OR => 5,
Chris@17 203
Chris@17 204 /*
Chris@17 205 * Equality.
Chris@17 206 */
Chris@17 207
Chris@17 208 T_IS_EQUAL => 5,
Chris@17 209 T_IS_NOT_EQUAL => 5,
Chris@17 210 T_IS_IDENTICAL => 5,
Chris@17 211 T_IS_NOT_IDENTICAL => 5,
Chris@17 212 T_IS_SMALLER_OR_EQUAL => 5,
Chris@17 213 T_IS_GREATER_OR_EQUAL => 5,
Chris@17 214 ];
Chris@17 215
Chris@17 216 /**
Chris@17 217 * Tokens that represent assignments.
Chris@17 218 *
Chris@17 219 * @var array<int, int>
Chris@17 220 */
Chris@17 221 public static $assignmentTokens = [
Chris@17 222 T_EQUAL => T_EQUAL,
Chris@17 223 T_AND_EQUAL => T_AND_EQUAL,
Chris@17 224 T_OR_EQUAL => T_OR_EQUAL,
Chris@17 225 T_CONCAT_EQUAL => T_CONCAT_EQUAL,
Chris@17 226 T_DIV_EQUAL => T_DIV_EQUAL,
Chris@17 227 T_MINUS_EQUAL => T_MINUS_EQUAL,
Chris@17 228 T_POW_EQUAL => T_POW_EQUAL,
Chris@17 229 T_MOD_EQUAL => T_MOD_EQUAL,
Chris@17 230 T_MUL_EQUAL => T_MUL_EQUAL,
Chris@17 231 T_PLUS_EQUAL => T_PLUS_EQUAL,
Chris@17 232 T_XOR_EQUAL => T_XOR_EQUAL,
Chris@17 233 T_DOUBLE_ARROW => T_DOUBLE_ARROW,
Chris@17 234 T_SL_EQUAL => T_SL_EQUAL,
Chris@17 235 T_SR_EQUAL => T_SR_EQUAL,
Chris@17 236 T_COALESCE_EQUAL => T_COALESCE_EQUAL,
Chris@17 237 T_ZSR_EQUAL => T_ZSR_EQUAL,
Chris@17 238 ];
Chris@17 239
Chris@17 240 /**
Chris@17 241 * Tokens that represent equality comparisons.
Chris@17 242 *
Chris@17 243 * @var array<int, int>
Chris@17 244 */
Chris@17 245 public static $equalityTokens = [
Chris@17 246 T_IS_EQUAL => T_IS_EQUAL,
Chris@17 247 T_IS_NOT_EQUAL => T_IS_NOT_EQUAL,
Chris@17 248 T_IS_IDENTICAL => T_IS_IDENTICAL,
Chris@17 249 T_IS_NOT_IDENTICAL => T_IS_NOT_IDENTICAL,
Chris@17 250 T_IS_SMALLER_OR_EQUAL => T_IS_SMALLER_OR_EQUAL,
Chris@17 251 T_IS_GREATER_OR_EQUAL => T_IS_GREATER_OR_EQUAL,
Chris@17 252 ];
Chris@17 253
Chris@17 254 /**
Chris@17 255 * Tokens that represent comparison operator.
Chris@17 256 *
Chris@17 257 * @var array<int, int>
Chris@17 258 */
Chris@17 259 public static $comparisonTokens = [
Chris@17 260 T_IS_EQUAL => T_IS_EQUAL,
Chris@17 261 T_IS_IDENTICAL => T_IS_IDENTICAL,
Chris@17 262 T_IS_NOT_EQUAL => T_IS_NOT_EQUAL,
Chris@17 263 T_IS_NOT_IDENTICAL => T_IS_NOT_IDENTICAL,
Chris@17 264 T_LESS_THAN => T_LESS_THAN,
Chris@17 265 T_GREATER_THAN => T_GREATER_THAN,
Chris@17 266 T_IS_SMALLER_OR_EQUAL => T_IS_SMALLER_OR_EQUAL,
Chris@17 267 T_IS_GREATER_OR_EQUAL => T_IS_GREATER_OR_EQUAL,
Chris@17 268 T_SPACESHIP => T_SPACESHIP,
Chris@17 269 T_COALESCE => T_COALESCE,
Chris@17 270 ];
Chris@17 271
Chris@17 272 /**
Chris@17 273 * Tokens that represent arithmetic operators.
Chris@17 274 *
Chris@17 275 * @var array<int, int>
Chris@17 276 */
Chris@17 277 public static $arithmeticTokens = [
Chris@17 278 T_PLUS => T_PLUS,
Chris@17 279 T_MINUS => T_MINUS,
Chris@17 280 T_MULTIPLY => T_MULTIPLY,
Chris@17 281 T_DIVIDE => T_DIVIDE,
Chris@17 282 T_MODULUS => T_MODULUS,
Chris@17 283 T_POW => T_POW,
Chris@17 284 ];
Chris@17 285
Chris@17 286 /**
Chris@17 287 * Tokens that perform operations.
Chris@17 288 *
Chris@17 289 * @var array<int, int>
Chris@17 290 */
Chris@17 291 public static $operators = [
Chris@17 292 T_MINUS => T_MINUS,
Chris@17 293 T_PLUS => T_PLUS,
Chris@17 294 T_MULTIPLY => T_MULTIPLY,
Chris@17 295 T_DIVIDE => T_DIVIDE,
Chris@17 296 T_MODULUS => T_MODULUS,
Chris@17 297 T_POW => T_POW,
Chris@17 298 T_SPACESHIP => T_SPACESHIP,
Chris@17 299 T_COALESCE => T_COALESCE,
Chris@17 300 T_BITWISE_AND => T_BITWISE_AND,
Chris@17 301 T_BITWISE_OR => T_BITWISE_OR,
Chris@17 302 T_BITWISE_XOR => T_BITWISE_XOR,
Chris@17 303 T_SL => T_SL,
Chris@17 304 T_SR => T_SR,
Chris@17 305 ];
Chris@17 306
Chris@17 307 /**
Chris@17 308 * Tokens that perform boolean operations.
Chris@17 309 *
Chris@17 310 * @var array<int, int>
Chris@17 311 */
Chris@17 312 public static $booleanOperators = [
Chris@17 313 T_BOOLEAN_AND => T_BOOLEAN_AND,
Chris@17 314 T_BOOLEAN_OR => T_BOOLEAN_OR,
Chris@17 315 T_LOGICAL_AND => T_LOGICAL_AND,
Chris@17 316 T_LOGICAL_OR => T_LOGICAL_OR,
Chris@17 317 T_LOGICAL_XOR => T_LOGICAL_XOR,
Chris@17 318 ];
Chris@17 319
Chris@17 320 /**
Chris@17 321 * Tokens that represent casting.
Chris@17 322 *
Chris@17 323 * @var array<int, int>
Chris@17 324 */
Chris@17 325 public static $castTokens = [
Chris@17 326 T_INT_CAST => T_INT_CAST,
Chris@17 327 T_STRING_CAST => T_STRING_CAST,
Chris@17 328 T_DOUBLE_CAST => T_DOUBLE_CAST,
Chris@17 329 T_ARRAY_CAST => T_ARRAY_CAST,
Chris@17 330 T_BOOL_CAST => T_BOOL_CAST,
Chris@17 331 T_OBJECT_CAST => T_OBJECT_CAST,
Chris@17 332 T_UNSET_CAST => T_UNSET_CAST,
Chris@17 333 T_BINARY_CAST => T_BINARY_CAST,
Chris@17 334 ];
Chris@17 335
Chris@17 336 /**
Chris@17 337 * Token types that open parenthesis.
Chris@17 338 *
Chris@17 339 * @var array<int, int>
Chris@17 340 */
Chris@17 341 public static $parenthesisOpeners = [
Chris@17 342 T_ARRAY => T_ARRAY,
Chris@17 343 T_FUNCTION => T_FUNCTION,
Chris@17 344 T_CLOSURE => T_CLOSURE,
Chris@17 345 T_WHILE => T_WHILE,
Chris@17 346 T_FOR => T_FOR,
Chris@17 347 T_FOREACH => T_FOREACH,
Chris@17 348 T_SWITCH => T_SWITCH,
Chris@17 349 T_IF => T_IF,
Chris@17 350 T_ELSEIF => T_ELSEIF,
Chris@17 351 T_CATCH => T_CATCH,
Chris@17 352 T_DECLARE => T_DECLARE,
Chris@17 353 ];
Chris@17 354
Chris@17 355 /**
Chris@17 356 * Tokens that are allowed to open scopes.
Chris@17 357 *
Chris@17 358 * @var array<int, int>
Chris@17 359 */
Chris@17 360 public static $scopeOpeners = [
Chris@17 361 T_CLASS => T_CLASS,
Chris@17 362 T_ANON_CLASS => T_ANON_CLASS,
Chris@17 363 T_INTERFACE => T_INTERFACE,
Chris@17 364 T_TRAIT => T_TRAIT,
Chris@17 365 T_NAMESPACE => T_NAMESPACE,
Chris@17 366 T_FUNCTION => T_FUNCTION,
Chris@17 367 T_CLOSURE => T_CLOSURE,
Chris@17 368 T_IF => T_IF,
Chris@17 369 T_SWITCH => T_SWITCH,
Chris@17 370 T_CASE => T_CASE,
Chris@17 371 T_DECLARE => T_DECLARE,
Chris@17 372 T_DEFAULT => T_DEFAULT,
Chris@17 373 T_WHILE => T_WHILE,
Chris@17 374 T_ELSE => T_ELSE,
Chris@17 375 T_ELSEIF => T_ELSEIF,
Chris@17 376 T_FOR => T_FOR,
Chris@17 377 T_FOREACH => T_FOREACH,
Chris@17 378 T_DO => T_DO,
Chris@17 379 T_TRY => T_TRY,
Chris@17 380 T_CATCH => T_CATCH,
Chris@17 381 T_FINALLY => T_FINALLY,
Chris@17 382 T_PROPERTY => T_PROPERTY,
Chris@17 383 T_OBJECT => T_OBJECT,
Chris@17 384 T_USE => T_USE,
Chris@17 385 ];
Chris@17 386
Chris@17 387 /**
Chris@17 388 * Tokens that represent scope modifiers.
Chris@17 389 *
Chris@17 390 * @var array<int, int>
Chris@17 391 */
Chris@17 392 public static $scopeModifiers = [
Chris@17 393 T_PRIVATE => T_PRIVATE,
Chris@17 394 T_PUBLIC => T_PUBLIC,
Chris@17 395 T_PROTECTED => T_PROTECTED,
Chris@17 396 ];
Chris@17 397
Chris@17 398 /**
Chris@17 399 * Tokens that can prefix a method name
Chris@17 400 *
Chris@17 401 * @var array<int, int>
Chris@17 402 */
Chris@17 403 public static $methodPrefixes = [
Chris@17 404 T_PRIVATE => T_PRIVATE,
Chris@17 405 T_PUBLIC => T_PUBLIC,
Chris@17 406 T_PROTECTED => T_PROTECTED,
Chris@17 407 T_ABSTRACT => T_ABSTRACT,
Chris@17 408 T_STATIC => T_STATIC,
Chris@17 409 T_FINAL => T_FINAL,
Chris@17 410 ];
Chris@17 411
Chris@17 412 /**
Chris@17 413 * Tokens that open code blocks.
Chris@17 414 *
Chris@17 415 * @var array<int, int>
Chris@17 416 */
Chris@17 417 public static $blockOpeners = [
Chris@17 418 T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET,
Chris@17 419 T_OPEN_SQUARE_BRACKET => T_OPEN_SQUARE_BRACKET,
Chris@17 420 T_OPEN_PARENTHESIS => T_OPEN_PARENTHESIS,
Chris@17 421 T_OBJECT => T_OBJECT,
Chris@17 422 ];
Chris@17 423
Chris@17 424 /**
Chris@17 425 * Tokens that don't represent code.
Chris@17 426 *
Chris@17 427 * @var array<int, int>
Chris@17 428 */
Chris@17 429 public static $emptyTokens = [
Chris@17 430 T_WHITESPACE => T_WHITESPACE,
Chris@17 431 T_COMMENT => T_COMMENT,
Chris@17 432 T_DOC_COMMENT => T_DOC_COMMENT,
Chris@17 433 T_DOC_COMMENT_STAR => T_DOC_COMMENT_STAR,
Chris@17 434 T_DOC_COMMENT_WHITESPACE => T_DOC_COMMENT_WHITESPACE,
Chris@17 435 T_DOC_COMMENT_TAG => T_DOC_COMMENT_TAG,
Chris@17 436 T_DOC_COMMENT_OPEN_TAG => T_DOC_COMMENT_OPEN_TAG,
Chris@17 437 T_DOC_COMMENT_CLOSE_TAG => T_DOC_COMMENT_CLOSE_TAG,
Chris@17 438 T_DOC_COMMENT_STRING => T_DOC_COMMENT_STRING,
Chris@17 439 T_PHPCS_ENABLE => T_PHPCS_ENABLE,
Chris@17 440 T_PHPCS_DISABLE => T_PHPCS_DISABLE,
Chris@17 441 T_PHPCS_SET => T_PHPCS_SET,
Chris@17 442 T_PHPCS_IGNORE => T_PHPCS_IGNORE,
Chris@17 443 T_PHPCS_IGNORE_FILE => T_PHPCS_IGNORE_FILE,
Chris@17 444 ];
Chris@17 445
Chris@17 446 /**
Chris@17 447 * Tokens that are comments.
Chris@17 448 *
Chris@17 449 * @var array<int, int>
Chris@17 450 */
Chris@17 451 public static $commentTokens = [
Chris@17 452 T_COMMENT => T_COMMENT,
Chris@17 453 T_DOC_COMMENT => T_DOC_COMMENT,
Chris@17 454 T_DOC_COMMENT_STAR => T_DOC_COMMENT_STAR,
Chris@17 455 T_DOC_COMMENT_WHITESPACE => T_DOC_COMMENT_WHITESPACE,
Chris@17 456 T_DOC_COMMENT_TAG => T_DOC_COMMENT_TAG,
Chris@17 457 T_DOC_COMMENT_OPEN_TAG => T_DOC_COMMENT_OPEN_TAG,
Chris@17 458 T_DOC_COMMENT_CLOSE_TAG => T_DOC_COMMENT_CLOSE_TAG,
Chris@17 459 T_DOC_COMMENT_STRING => T_DOC_COMMENT_STRING,
Chris@17 460 T_PHPCS_ENABLE => T_PHPCS_ENABLE,
Chris@17 461 T_PHPCS_DISABLE => T_PHPCS_DISABLE,
Chris@17 462 T_PHPCS_SET => T_PHPCS_SET,
Chris@17 463 T_PHPCS_IGNORE => T_PHPCS_IGNORE,
Chris@17 464 T_PHPCS_IGNORE_FILE => T_PHPCS_IGNORE_FILE,
Chris@17 465 ];
Chris@17 466
Chris@17 467 /**
Chris@17 468 * Tokens that are comments containing PHPCS instructions.
Chris@17 469 *
Chris@17 470 * @var array<int, int>
Chris@17 471 */
Chris@17 472 public static $phpcsCommentTokens = [
Chris@17 473 T_PHPCS_ENABLE => T_PHPCS_ENABLE,
Chris@17 474 T_PHPCS_DISABLE => T_PHPCS_DISABLE,
Chris@17 475 T_PHPCS_SET => T_PHPCS_SET,
Chris@17 476 T_PHPCS_IGNORE => T_PHPCS_IGNORE,
Chris@17 477 T_PHPCS_IGNORE_FILE => T_PHPCS_IGNORE_FILE,
Chris@17 478 ];
Chris@17 479
Chris@17 480 /**
Chris@17 481 * Tokens that represent strings.
Chris@17 482 *
Chris@17 483 * Note that T_STRINGS are NOT represented in this list.
Chris@17 484 *
Chris@17 485 * @var array<int, int>
Chris@17 486 */
Chris@17 487 public static $stringTokens = [
Chris@17 488 T_CONSTANT_ENCAPSED_STRING => T_CONSTANT_ENCAPSED_STRING,
Chris@17 489 T_DOUBLE_QUOTED_STRING => T_DOUBLE_QUOTED_STRING,
Chris@17 490 ];
Chris@17 491
Chris@17 492 /**
Chris@17 493 * Tokens that represent text strings.
Chris@17 494 *
Chris@17 495 * @var array<int, int>
Chris@17 496 */
Chris@17 497 public static $textStringTokens = [
Chris@17 498 T_CONSTANT_ENCAPSED_STRING => T_CONSTANT_ENCAPSED_STRING,
Chris@17 499 T_DOUBLE_QUOTED_STRING => T_DOUBLE_QUOTED_STRING,
Chris@17 500 T_INLINE_HTML => T_INLINE_HTML,
Chris@17 501 T_HEREDOC => T_HEREDOC,
Chris@17 502 T_NOWDOC => T_NOWDOC,
Chris@17 503 ];
Chris@17 504
Chris@17 505 /**
Chris@17 506 * Tokens that represent brackets and parenthesis.
Chris@17 507 *
Chris@17 508 * @var array<int, int>
Chris@17 509 */
Chris@17 510 public static $bracketTokens = [
Chris@17 511 T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET,
Chris@17 512 T_CLOSE_CURLY_BRACKET => T_CLOSE_CURLY_BRACKET,
Chris@17 513 T_OPEN_SQUARE_BRACKET => T_OPEN_SQUARE_BRACKET,
Chris@17 514 T_CLOSE_SQUARE_BRACKET => T_CLOSE_SQUARE_BRACKET,
Chris@17 515 T_OPEN_PARENTHESIS => T_OPEN_PARENTHESIS,
Chris@17 516 T_CLOSE_PARENTHESIS => T_CLOSE_PARENTHESIS,
Chris@17 517 ];
Chris@17 518
Chris@17 519 /**
Chris@17 520 * Tokens that include files.
Chris@17 521 *
Chris@17 522 * @var array<int, int>
Chris@17 523 */
Chris@17 524 public static $includeTokens = [
Chris@17 525 T_REQUIRE_ONCE => T_REQUIRE_ONCE,
Chris@17 526 T_REQUIRE => T_REQUIRE,
Chris@17 527 T_INCLUDE_ONCE => T_INCLUDE_ONCE,
Chris@17 528 T_INCLUDE => T_INCLUDE,
Chris@17 529 ];
Chris@17 530
Chris@17 531 /**
Chris@17 532 * Tokens that make up a heredoc string.
Chris@17 533 *
Chris@17 534 * @var array<int, int>
Chris@17 535 */
Chris@17 536 public static $heredocTokens = [
Chris@17 537 T_START_HEREDOC => T_START_HEREDOC,
Chris@17 538 T_END_HEREDOC => T_END_HEREDOC,
Chris@17 539 T_HEREDOC => T_HEREDOC,
Chris@17 540 T_START_NOWDOC => T_START_NOWDOC,
Chris@17 541 T_END_NOWDOC => T_END_NOWDOC,
Chris@17 542 T_NOWDOC => T_NOWDOC,
Chris@17 543 ];
Chris@17 544
Chris@17 545 /**
Chris@17 546 * Tokens that represent the names of called functions.
Chris@17 547 *
Chris@17 548 * Mostly, these are just strings. But PHP tokenizes some language
Chris@17 549 * constructs and functions using their own tokens.
Chris@17 550 *
Chris@17 551 * @var array<int, int>
Chris@17 552 */
Chris@17 553 public static $functionNameTokens = [
Chris@17 554 T_STRING => T_STRING,
Chris@17 555 T_EVAL => T_EVAL,
Chris@17 556 T_EXIT => T_EXIT,
Chris@17 557 T_INCLUDE => T_INCLUDE,
Chris@17 558 T_INCLUDE_ONCE => T_INCLUDE_ONCE,
Chris@17 559 T_REQUIRE => T_REQUIRE,
Chris@17 560 T_REQUIRE_ONCE => T_REQUIRE_ONCE,
Chris@17 561 T_ISSET => T_ISSET,
Chris@17 562 T_UNSET => T_UNSET,
Chris@17 563 T_EMPTY => T_EMPTY,
Chris@17 564 T_SELF => T_SELF,
Chris@17 565 T_STATIC => T_STATIC,
Chris@17 566 ];
Chris@17 567
Chris@17 568 /**
Chris@17 569 * Tokens that open class and object scopes.
Chris@17 570 *
Chris@17 571 * @var array<int, int>
Chris@17 572 */
Chris@17 573 public static $ooScopeTokens = [
Chris@17 574 T_CLASS => T_CLASS,
Chris@17 575 T_ANON_CLASS => T_ANON_CLASS,
Chris@17 576 T_INTERFACE => T_INTERFACE,
Chris@17 577 T_TRAIT => T_TRAIT,
Chris@17 578 ];
Chris@17 579
Chris@17 580
Chris@17 581 /**
Chris@17 582 * Given a token, returns the name of the token.
Chris@17 583 *
Chris@17 584 * If passed an integer, the token name is sourced from PHP's token_name()
Chris@17 585 * function. If passed a string, it is assumed to be a PHPCS-supplied token
Chris@17 586 * that begins with PHPCS_T_, so the name is sourced from the token value itself.
Chris@17 587 *
Chris@17 588 * @param int|string $token The token to get the name for.
Chris@17 589 *
Chris@17 590 * @return string
Chris@17 591 */
Chris@17 592 public static function tokenName($token)
Chris@17 593 {
Chris@17 594 if (is_string($token) === false) {
Chris@17 595 // PHP-supplied token name.
Chris@17 596 return token_name($token);
Chris@17 597 }
Chris@17 598
Chris@17 599 return substr($token, 6);
Chris@17 600
Chris@17 601 }//end tokenName()
Chris@17 602
Chris@17 603
Chris@17 604 /**
Chris@17 605 * Returns the highest weighted token type.
Chris@17 606 *
Chris@17 607 * Tokens are weighted by their approximate frequency of appearance in code
Chris@17 608 * - the less frequently they appear in the code, the higher the weighting.
Chris@17 609 * For example T_CLASS tokens appear very infrequently in a file, and
Chris@17 610 * therefore have a high weighting.
Chris@17 611 *
Chris@17 612 * Returns false if there are no weightings for any of the specified tokens.
Chris@17 613 *
Chris@17 614 * @param array<int, int> $tokens The token types to get the highest weighted
Chris@17 615 * type for.
Chris@17 616 *
Chris@17 617 * @return int The highest weighted token.
Chris@17 618 */
Chris@17 619 public static function getHighestWeightedToken(array $tokens)
Chris@17 620 {
Chris@17 621 $highest = -1;
Chris@17 622 $highestType = false;
Chris@17 623
Chris@17 624 $weights = self::$weightings;
Chris@17 625
Chris@17 626 foreach ($tokens as $token) {
Chris@17 627 if (isset($weights[$token]) === true) {
Chris@17 628 $weight = $weights[$token];
Chris@17 629 } else {
Chris@17 630 $weight = 0;
Chris@17 631 }
Chris@17 632
Chris@17 633 if ($weight > $highest) {
Chris@17 634 $highest = $weight;
Chris@17 635 $highestType = $token;
Chris@17 636 }
Chris@17 637 }
Chris@17 638
Chris@17 639 return $highestType;
Chris@17 640
Chris@17 641 }//end getHighestWeightedToken()
Chris@17 642
Chris@17 643
Chris@17 644 }//end class