annotate vendor/squizlabs/php_codesniffer/CodeSniffer/Tokens.php @ 2:5311817fb629

Theme updates
author Chris Cannam
date Tue, 10 Jul 2018 13:19:18 +0000
parents c75dbcec494b
children
rev   line source
Chris@0 1 <?php
Chris@0 2 /**
Chris@0 3 * The Tokens class contains weightings for tokens based on their
Chris@0 4 * probability of occurrence in a file.
Chris@0 5 *
Chris@0 6 * PHP version 5
Chris@0 7 *
Chris@0 8 * @category PHP
Chris@0 9 * @package PHP_CodeSniffer
Chris@0 10 * @author Greg Sherwood <gsherwood@squiz.net>
Chris@0 11 * @author Marc McIntyre <mmcintyre@squiz.net>
Chris@0 12 * @copyright 2006-2014 Squiz Pty Ltd (ABN 77 084 670 600)
Chris@0 13 * @license https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence
Chris@0 14 * @link http://pear.php.net/package/PHP_CodeSniffer
Chris@0 15 */
Chris@0 16
Chris@0 17 define('T_NONE', 'PHPCS_T_NONE');
Chris@0 18 define('T_OPEN_CURLY_BRACKET', 'PHPCS_T_OPEN_CURLY_BRACKET');
Chris@0 19 define('T_CLOSE_CURLY_BRACKET', 'PHPCS_T_CLOSE_CURLY_BRACKET');
Chris@0 20 define('T_OPEN_SQUARE_BRACKET', 'PHPCS_T_OPEN_SQUARE_BRACKET');
Chris@0 21 define('T_CLOSE_SQUARE_BRACKET', 'PHPCS_T_CLOSE_SQUARE_BRACKET');
Chris@0 22 define('T_OPEN_PARENTHESIS', 'PHPCS_T_OPEN_PARENTHESIS');
Chris@0 23 define('T_CLOSE_PARENTHESIS', 'PHPCS_T_CLOSE_PARENTHESIS');
Chris@0 24 define('T_COLON', 'PHPCS_T_COLON');
Chris@0 25 define('T_NULLABLE', 'PHPCS_T_NULLABLE');
Chris@0 26 define('T_STRING_CONCAT', 'PHPCS_T_STRING_CONCAT');
Chris@0 27 define('T_INLINE_THEN', 'PHPCS_T_INLINE_THEN');
Chris@0 28 define('T_INLINE_ELSE', 'PHPCS_T_INLINE_ELSE');
Chris@0 29 define('T_NULL', 'PHPCS_T_NULL');
Chris@0 30 define('T_FALSE', 'PHPCS_T_FALSE');
Chris@0 31 define('T_TRUE', 'PHPCS_T_TRUE');
Chris@0 32 define('T_SEMICOLON', 'PHPCS_T_SEMICOLON');
Chris@0 33 define('T_EQUAL', 'PHPCS_T_EQUAL');
Chris@0 34 define('T_MULTIPLY', 'PHPCS_T_MULTIPLY');
Chris@0 35 define('T_DIVIDE', 'PHPCS_T_DIVIDE');
Chris@0 36 define('T_PLUS', 'PHPCS_T_PLUS');
Chris@0 37 define('T_MINUS', 'PHPCS_T_MINUS');
Chris@0 38 define('T_MODULUS', 'PHPCS_T_MODULUS');
Chris@0 39 define('T_BITWISE_AND', 'PHPCS_T_BITWISE_AND');
Chris@0 40 define('T_BITWISE_OR', 'PHPCS_T_BITWISE_OR');
Chris@0 41 define('T_BITWISE_XOR', 'PHPCS_T_BITWISE_XOR');
Chris@0 42 define('T_ARRAY_HINT', 'PHPCS_T_ARRAY_HINT');
Chris@0 43 define('T_GREATER_THAN', 'PHPCS_T_GREATER_THAN');
Chris@0 44 define('T_LESS_THAN', 'PHPCS_T_LESS_THAN');
Chris@0 45 define('T_BOOLEAN_NOT', 'PHPCS_T_BOOLEAN_NOT');
Chris@0 46 define('T_SELF', 'PHPCS_T_SELF');
Chris@0 47 define('T_PARENT', 'PHPCS_T_PARENT');
Chris@0 48 define('T_DOUBLE_QUOTED_STRING', 'PHPCS_T_DOUBLE_QUOTED_STRING');
Chris@0 49 define('T_COMMA', 'PHPCS_T_COMMA');
Chris@0 50 define('T_HEREDOC', 'PHPCS_T_HEREDOC');
Chris@0 51 define('T_PROTOTYPE', 'PHPCS_T_PROTOTYPE');
Chris@0 52 define('T_THIS', 'PHPCS_T_THIS');
Chris@0 53 define('T_REGULAR_EXPRESSION', 'PHPCS_T_REGULAR_EXPRESSION');
Chris@0 54 define('T_PROPERTY', 'PHPCS_T_PROPERTY');
Chris@0 55 define('T_LABEL', 'PHPCS_T_LABEL');
Chris@0 56 define('T_OBJECT', 'PHPCS_T_OBJECT');
Chris@0 57 define('T_CLOSE_OBJECT', 'PHPCS_T_CLOSE_OBJECT');
Chris@0 58 define('T_COLOUR', 'PHPCS_T_COLOUR');
Chris@0 59 define('T_HASH', 'PHPCS_T_HASH');
Chris@0 60 define('T_URL', 'PHPCS_T_URL');
Chris@0 61 define('T_STYLE', 'PHPCS_T_STYLE');
Chris@0 62 define('T_ASPERAND', 'PHPCS_T_ASPERAND');
Chris@0 63 define('T_DOLLAR', 'PHPCS_T_DOLLAR');
Chris@0 64 define('T_TYPEOF', 'PHPCS_T_TYPEOF');
Chris@0 65 define('T_CLOSURE', 'PHPCS_T_CLOSURE');
Chris@0 66 define('T_ANON_CLASS', 'PHPCS_T_ANON_CLASS');
Chris@0 67 define('T_BACKTICK', 'PHPCS_T_BACKTICK');
Chris@0 68 define('T_START_NOWDOC', 'PHPCS_T_START_NOWDOC');
Chris@0 69 define('T_NOWDOC', 'PHPCS_T_NOWDOC');
Chris@0 70 define('T_END_NOWDOC', 'PHPCS_T_END_NOWDOC');
Chris@0 71 define('T_OPEN_SHORT_ARRAY', 'PHPCS_T_OPEN_SHORT_ARRAY');
Chris@0 72 define('T_CLOSE_SHORT_ARRAY', 'PHPCS_T_CLOSE_SHORT_ARRAY');
Chris@0 73 define('T_GOTO_LABEL', 'PHPCS_T_GOTO_LABEL');
Chris@0 74 define('T_BINARY_CAST', 'PHPCS_T_BINARY_CAST');
Chris@0 75 define('T_EMBEDDED_PHP', 'PHPCS_T_EMBEDDED_PHP');
Chris@0 76 define('T_RETURN_TYPE', 'PHPCS_T_RETURN_TYPE');
Chris@0 77 define('T_OPEN_USE_GROUP', 'PHPCS_T_OPEN_USE_GROUP');
Chris@0 78 define('T_CLOSE_USE_GROUP', 'PHPCS_T_CLOSE_USE_GROUP');
Chris@0 79 define('T_ZSR', 'PHPCS_T_ZSR');
Chris@0 80 define('T_ZSR_EQUAL', 'PHPCS_T_ZSR_EQUAL');
Chris@0 81
Chris@0 82 // Some PHP 5.3 tokens, replicated for lower versions.
Chris@0 83 if (defined('T_NAMESPACE') === false) {
Chris@0 84 define('T_NAMESPACE', 'PHPCS_T_NAMESPACE');
Chris@0 85 }
Chris@0 86
Chris@0 87 if (defined('T_NS_C') === false) {
Chris@0 88 define('T_NS_C', 'PHPCS_T_NS_C');
Chris@0 89 }
Chris@0 90
Chris@0 91 if (defined('T_NS_SEPARATOR') === false) {
Chris@0 92 define('T_NS_SEPARATOR', 'PHPCS_T_NS_SEPARATOR');
Chris@0 93 }
Chris@0 94
Chris@0 95 if (defined('T_GOTO') === false) {
Chris@0 96 define('T_GOTO', 'PHPCS_T_GOTO');
Chris@0 97 }
Chris@0 98
Chris@0 99 if (defined('T_DIR') === false) {
Chris@0 100 define('T_DIR', 'PHPCS_T_DIR');
Chris@0 101 }
Chris@0 102
Chris@0 103 // Some PHP 5.4 tokens, replicated for lower versions.
Chris@0 104 if (defined('T_TRAIT') === false) {
Chris@0 105 define('T_TRAIT', 'PHPCS_T_TRAIT');
Chris@0 106 }
Chris@0 107
Chris@0 108 if (defined('T_TRAIT_C') === false) {
Chris@0 109 define('T_TRAIT_C', 'PHPCS_T_TRAIT_C');
Chris@0 110 }
Chris@0 111
Chris@0 112 if (defined('T_INSTEADOF') === false) {
Chris@0 113 define('T_INSTEADOF', 'PHPCS_T_INSTEADOF');
Chris@0 114 }
Chris@0 115
Chris@0 116 if (defined('T_CALLABLE') === false) {
Chris@0 117 define('T_CALLABLE', 'PHPCS_T_CALLABLE');
Chris@0 118 }
Chris@0 119
Chris@0 120 // Some PHP 5.5 tokens, replicated for lower versions.
Chris@0 121 if (defined('T_FINALLY') === false) {
Chris@0 122 define('T_FINALLY', 'PHPCS_T_FINALLY');
Chris@0 123 }
Chris@0 124
Chris@0 125 if (defined('T_YIELD') === false) {
Chris@0 126 define('T_YIELD', 'PHPCS_T_YIELD');
Chris@0 127 }
Chris@0 128
Chris@0 129 // Some PHP 5.6 tokens, replicated for lower versions.
Chris@0 130 if (defined('T_ELLIPSIS') === false) {
Chris@0 131 define('T_ELLIPSIS', 'PHPCS_T_ELLIPSIS');
Chris@0 132 }
Chris@0 133
Chris@0 134 if (defined('T_POW') === false) {
Chris@0 135 define('T_POW', 'PHPCS_T_POW');
Chris@0 136 }
Chris@0 137
Chris@0 138 if (defined('T_POW_EQUAL') === false) {
Chris@0 139 define('T_POW_EQUAL', 'PHPCS_T_POW_EQUAL');
Chris@0 140 }
Chris@0 141
Chris@0 142 // Some PHP 7 tokens, replicated for lower versions.
Chris@0 143 if (defined('T_SPACESHIP') === false) {
Chris@0 144 define('T_SPACESHIP', 'PHPCS_T_SPACESHIP');
Chris@0 145 }
Chris@0 146
Chris@0 147 if (defined('T_COALESCE') === false) {
Chris@0 148 define('T_COALESCE', 'PHPCS_T_COALESCE');
Chris@0 149 }
Chris@0 150
Chris@0 151 if (defined('T_COALESCE_EQUAL') === false) {
Chris@0 152 define('T_COALESCE_EQUAL', 'PHPCS_T_COALESCE_EQUAL');
Chris@0 153 }
Chris@0 154
Chris@2 155 if (defined('T_YIELD_FROM') === false) {
Chris@2 156 define('T_YIELD_FROM', 'PHPCS_T_YIELD_FROM');
Chris@2 157 }
Chris@2 158
Chris@0 159 // Tokens used for parsing doc blocks.
Chris@0 160 define('T_DOC_COMMENT_STAR', 'PHPCS_T_DOC_COMMENT_STAR');
Chris@0 161 define('T_DOC_COMMENT_WHITESPACE', 'PHPCS_T_DOC_COMMENT_WHITESPACE');
Chris@0 162 define('T_DOC_COMMENT_TAG', 'PHPCS_T_DOC_COMMENT_TAG');
Chris@0 163 define('T_DOC_COMMENT_OPEN_TAG', 'PHPCS_T_DOC_COMMENT_OPEN_TAG');
Chris@0 164 define('T_DOC_COMMENT_CLOSE_TAG', 'PHPCS_T_DOC_COMMENT_CLOSE_TAG');
Chris@0 165 define('T_DOC_COMMENT_STRING', 'PHPCS_T_DOC_COMMENT_STRING');
Chris@0 166
Chris@0 167 /**
Chris@0 168 * The Tokens class contains weightings for tokens based on their
Chris@0 169 * probability of occurrence in a file.
Chris@0 170 *
Chris@0 171 * The less the chance of a high occurrence of an arbitrary token, the higher
Chris@0 172 * the weighting.
Chris@0 173 *
Chris@0 174 * @category PHP
Chris@0 175 * @package PHP_CodeSniffer
Chris@0 176 * @author Greg Sherwood <gsherwood@squiz.net>
Chris@0 177 * @author Marc McIntyre <mmcintyre@squiz.net>
Chris@0 178 * @copyright 2006-2014 Squiz Pty Ltd (ABN 77 084 670 600)
Chris@0 179 * @license https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence
Chris@0 180 * @version Release: @package_version@
Chris@0 181 * @link http://pear.php.net/package/PHP_CodeSniffer
Chris@0 182 */
Chris@0 183 final class PHP_CodeSniffer_Tokens
Chris@0 184 {
Chris@0 185
Chris@0 186 /**
Chris@0 187 * The token weightings.
Chris@0 188 *
Chris@0 189 * @var array(int => int)
Chris@0 190 */
Chris@0 191 public static $weightings = array(
Chris@0 192 T_CLASS => 1000,
Chris@0 193 T_INTERFACE => 1000,
Chris@0 194 T_TRAIT => 1000,
Chris@0 195 T_NAMESPACE => 1000,
Chris@0 196 T_FUNCTION => 100,
Chris@0 197 T_CLOSURE => 100,
Chris@0 198
Chris@0 199 /*
Chris@0 200 Conditions.
Chris@0 201 */
Chris@0 202
Chris@0 203 T_WHILE => 50,
Chris@0 204 T_FOR => 50,
Chris@0 205 T_FOREACH => 50,
Chris@0 206 T_IF => 50,
Chris@0 207 T_ELSE => 50,
Chris@0 208 T_ELSEIF => 50,
Chris@0 209 T_DO => 50,
Chris@0 210 T_TRY => 50,
Chris@0 211 T_CATCH => 50,
Chris@0 212 T_FINALLY => 50,
Chris@0 213 T_SWITCH => 50,
Chris@0 214
Chris@0 215 T_SELF => 25,
Chris@0 216 T_PARENT => 25,
Chris@0 217
Chris@0 218 /*
Chris@0 219 Operators and arithmetic.
Chris@0 220 */
Chris@0 221
Chris@0 222 T_BITWISE_AND => 8,
Chris@0 223 T_BITWISE_OR => 8,
Chris@0 224 T_BITWISE_XOR => 8,
Chris@0 225
Chris@0 226 T_MULTIPLY => 5,
Chris@0 227 T_DIVIDE => 5,
Chris@0 228 T_PLUS => 5,
Chris@0 229 T_MINUS => 5,
Chris@0 230 T_MODULUS => 5,
Chris@0 231 T_POW => 5,
Chris@0 232 T_SPACESHIP => 5,
Chris@0 233 T_COALESCE => 5,
Chris@0 234 T_COALESCE_EQUAL => 5,
Chris@0 235
Chris@0 236 T_SL => 5,
Chris@0 237 T_SR => 5,
Chris@0 238 T_SL_EQUAL => 5,
Chris@0 239 T_SR_EQUAL => 5,
Chris@0 240
Chris@0 241 T_EQUAL => 5,
Chris@0 242 T_AND_EQUAL => 5,
Chris@0 243 T_CONCAT_EQUAL => 5,
Chris@0 244 T_DIV_EQUAL => 5,
Chris@0 245 T_MINUS_EQUAL => 5,
Chris@0 246 T_MOD_EQUAL => 5,
Chris@0 247 T_MUL_EQUAL => 5,
Chris@0 248 T_OR_EQUAL => 5,
Chris@0 249 T_PLUS_EQUAL => 5,
Chris@0 250 T_XOR_EQUAL => 5,
Chris@0 251
Chris@0 252 T_BOOLEAN_AND => 5,
Chris@0 253 T_BOOLEAN_OR => 5,
Chris@0 254
Chris@0 255 /*
Chris@0 256 Equality.
Chris@0 257 */
Chris@0 258
Chris@0 259 T_IS_EQUAL => 5,
Chris@0 260 T_IS_NOT_EQUAL => 5,
Chris@0 261 T_IS_IDENTICAL => 5,
Chris@0 262 T_IS_NOT_IDENTICAL => 5,
Chris@0 263 T_IS_SMALLER_OR_EQUAL => 5,
Chris@0 264 T_IS_GREATER_OR_EQUAL => 5,
Chris@0 265 );
Chris@0 266
Chris@0 267 /**
Chris@0 268 * The token weightings.
Chris@0 269 *
Chris@0 270 * @var array(int => int)
Chris@0 271 */
Chris@0 272 public static $knownLengths = array(
Chris@0 273 T_ABSTRACT => 8,
Chris@0 274 T_AND_EQUAL => 2,
Chris@0 275 T_ARRAY => 5,
Chris@0 276 T_AS => 2,
Chris@0 277 T_BOOLEAN_AND => 2,
Chris@0 278 T_BOOLEAN_OR => 2,
Chris@0 279 T_BREAK => 5,
Chris@0 280 T_CALLABLE => 8,
Chris@0 281 T_CASE => 4,
Chris@0 282 T_CATCH => 5,
Chris@0 283 T_CLASS => 5,
Chris@0 284 T_CLASS_C => 9,
Chris@0 285 T_CLONE => 5,
Chris@0 286 T_CONCAT_EQUAL => 2,
Chris@0 287 T_CONST => 5,
Chris@0 288 T_CONTINUE => 8,
Chris@0 289 T_CURLY_OPEN => 2,
Chris@0 290 T_DEC => 2,
Chris@0 291 T_DECLARE => 7,
Chris@0 292 T_DEFAULT => 7,
Chris@0 293 T_DIR => 7,
Chris@0 294 T_DIV_EQUAL => 2,
Chris@0 295 T_DO => 2,
Chris@0 296 T_DOLLAR_OPEN_CURLY_BRACES => 2,
Chris@0 297 T_DOUBLE_ARROW => 2,
Chris@0 298 T_DOUBLE_COLON => 2,
Chris@0 299 T_ECHO => 4,
Chris@0 300 T_ELSE => 4,
Chris@0 301 T_ELSEIF => 6,
Chris@0 302 T_EMPTY => 5,
Chris@0 303 T_ENDDECLARE => 10,
Chris@0 304 T_ENDFOR => 6,
Chris@0 305 T_ENDFOREACH => 10,
Chris@0 306 T_ENDIF => 5,
Chris@0 307 T_ENDSWITCH => 9,
Chris@0 308 T_ENDWHILE => 8,
Chris@0 309 T_EVAL => 4,
Chris@0 310 T_EXTENDS => 7,
Chris@0 311 T_FILE => 8,
Chris@0 312 T_FINAL => 5,
Chris@0 313 T_FINALLY => 7,
Chris@0 314 T_FOR => 3,
Chris@0 315 T_FOREACH => 7,
Chris@0 316 T_FUNCTION => 8,
Chris@0 317 T_FUNC_C => 12,
Chris@0 318 T_GLOBAL => 6,
Chris@0 319 T_GOTO => 4,
Chris@0 320 T_HALT_COMPILER => 15,
Chris@0 321 T_IF => 2,
Chris@0 322 T_IMPLEMENTS => 10,
Chris@0 323 T_INC => 2,
Chris@0 324 T_INCLUDE => 7,
Chris@0 325 T_INCLUDE_ONCE => 12,
Chris@0 326 T_INSTANCEOF => 10,
Chris@0 327 T_INSTEADOF => 9,
Chris@0 328 T_INTERFACE => 9,
Chris@0 329 T_ISSET => 5,
Chris@0 330 T_IS_EQUAL => 2,
Chris@0 331 T_IS_GREATER_OR_EQUAL => 2,
Chris@0 332 T_IS_IDENTICAL => 3,
Chris@0 333 T_IS_NOT_EQUAL => 2,
Chris@0 334 T_IS_NOT_IDENTICAL => 3,
Chris@0 335 T_IS_SMALLER_OR_EQUAL => 2,
Chris@0 336 T_LINE => 8,
Chris@0 337 T_LIST => 4,
Chris@0 338 T_LOGICAL_AND => 3,
Chris@0 339 T_LOGICAL_OR => 2,
Chris@0 340 T_LOGICAL_XOR => 3,
Chris@0 341 T_METHOD_C => 10,
Chris@0 342 T_MINUS_EQUAL => 2,
Chris@0 343 T_POW_EQUAL => 3,
Chris@0 344 T_MOD_EQUAL => 2,
Chris@0 345 T_MUL_EQUAL => 2,
Chris@0 346 T_NAMESPACE => 9,
Chris@0 347 T_NS_C => 13,
Chris@0 348 T_NS_SEPARATOR => 1,
Chris@0 349 T_NEW => 3,
Chris@0 350 T_OBJECT_OPERATOR => 2,
Chris@0 351 T_OPEN_TAG_WITH_ECHO => 3,
Chris@0 352 T_OR_EQUAL => 2,
Chris@0 353 T_PLUS_EQUAL => 2,
Chris@0 354 T_PRINT => 5,
Chris@0 355 T_PRIVATE => 7,
Chris@0 356 T_PUBLIC => 6,
Chris@0 357 T_PROTECTED => 9,
Chris@0 358 T_REQUIRE => 7,
Chris@0 359 T_REQUIRE_ONCE => 12,
Chris@0 360 T_RETURN => 6,
Chris@0 361 T_STATIC => 6,
Chris@0 362 T_SWITCH => 6,
Chris@0 363 T_THROW => 5,
Chris@0 364 T_TRAIT => 5,
Chris@0 365 T_TRAIT_C => 9,
Chris@0 366 T_TRY => 3,
Chris@0 367 T_UNSET => 5,
Chris@0 368 T_USE => 3,
Chris@0 369 T_VAR => 3,
Chris@0 370 T_WHILE => 5,
Chris@0 371 T_XOR_EQUAL => 2,
Chris@0 372 T_YIELD => 5,
Chris@0 373 T_OPEN_CURLY_BRACKET => 1,
Chris@0 374 T_CLOSE_CURLY_BRACKET => 1,
Chris@0 375 T_OPEN_SQUARE_BRACKET => 1,
Chris@0 376 T_CLOSE_SQUARE_BRACKET => 1,
Chris@0 377 T_OPEN_PARENTHESIS => 1,
Chris@0 378 T_CLOSE_PARENTHESIS => 1,
Chris@0 379 T_COLON => 1,
Chris@0 380 T_NULLABLE => 1,
Chris@0 381 T_STRING_CONCAT => 1,
Chris@0 382 T_INLINE_THEN => 1,
Chris@0 383 T_INLINE_ELSE => 1,
Chris@0 384 T_NULL => 4,
Chris@0 385 T_FALSE => 5,
Chris@0 386 T_TRUE => 4,
Chris@0 387 T_SEMICOLON => 1,
Chris@0 388 T_EQUAL => 1,
Chris@0 389 T_MULTIPLY => 1,
Chris@0 390 T_DIVIDE => 1,
Chris@0 391 T_PLUS => 1,
Chris@0 392 T_MINUS => 1,
Chris@0 393 T_MODULUS => 1,
Chris@0 394 T_POW => 2,
Chris@0 395 T_SPACESHIP => 3,
Chris@0 396 T_COALESCE => 2,
Chris@0 397 T_COALESCE_EQUAL => 3,
Chris@0 398 T_BITWISE_AND => 1,
Chris@0 399 T_BITWISE_OR => 1,
Chris@0 400 T_BITWISE_XOR => 1,
Chris@0 401 T_SL => 2,
Chris@0 402 T_SR => 2,
Chris@0 403 T_SL_EQUAL => 3,
Chris@0 404 T_SR_EQUAL => 3,
Chris@0 405 T_ARRAY_HINT => 5,
Chris@0 406 T_GREATER_THAN => 1,
Chris@0 407 T_LESS_THAN => 1,
Chris@0 408 T_BOOLEAN_NOT => 1,
Chris@0 409 T_SELF => 4,
Chris@0 410 T_PARENT => 6,
Chris@0 411 T_COMMA => 1,
Chris@0 412 T_THIS => 4,
Chris@0 413 T_CLOSURE => 8,
Chris@0 414 T_BACKTICK => 1,
Chris@0 415 T_OPEN_SHORT_ARRAY => 1,
Chris@0 416 T_CLOSE_SHORT_ARRAY => 1,
Chris@0 417 );
Chris@0 418
Chris@0 419 /**
Chris@0 420 * Tokens that represent assignments.
Chris@0 421 *
Chris@0 422 * @var array(int)
Chris@0 423 */
Chris@0 424 public static $assignmentTokens = array(
Chris@2 425 T_EQUAL => T_EQUAL,
Chris@2 426 T_AND_EQUAL => T_AND_EQUAL,
Chris@2 427 T_OR_EQUAL => T_OR_EQUAL,
Chris@2 428 T_CONCAT_EQUAL => T_CONCAT_EQUAL,
Chris@2 429 T_DIV_EQUAL => T_DIV_EQUAL,
Chris@2 430 T_MINUS_EQUAL => T_MINUS_EQUAL,
Chris@2 431 T_POW_EQUAL => T_POW_EQUAL,
Chris@2 432 T_MOD_EQUAL => T_MOD_EQUAL,
Chris@2 433 T_MUL_EQUAL => T_MUL_EQUAL,
Chris@2 434 T_PLUS_EQUAL => T_PLUS_EQUAL,
Chris@2 435 T_XOR_EQUAL => T_XOR_EQUAL,
Chris@2 436 T_DOUBLE_ARROW => T_DOUBLE_ARROW,
Chris@2 437 T_SL_EQUAL => T_SL_EQUAL,
Chris@2 438 T_SR_EQUAL => T_SR_EQUAL,
Chris@2 439 T_COALESCE_EQUAL => T_COALESCE_EQUAL,
Chris@0 440 );
Chris@0 441
Chris@0 442 /**
Chris@0 443 * Tokens that represent equality comparisons.
Chris@0 444 *
Chris@0 445 * @var array(int)
Chris@0 446 */
Chris@0 447 public static $equalityTokens = array(
Chris@0 448 T_IS_EQUAL => T_IS_EQUAL,
Chris@0 449 T_IS_NOT_EQUAL => T_IS_NOT_EQUAL,
Chris@0 450 T_IS_IDENTICAL => T_IS_IDENTICAL,
Chris@0 451 T_IS_NOT_IDENTICAL => T_IS_NOT_IDENTICAL,
Chris@0 452 T_IS_SMALLER_OR_EQUAL => T_IS_SMALLER_OR_EQUAL,
Chris@0 453 T_IS_GREATER_OR_EQUAL => T_IS_GREATER_OR_EQUAL,
Chris@0 454 );
Chris@0 455
Chris@0 456 /**
Chris@0 457 * Tokens that represent comparison operator.
Chris@0 458 *
Chris@0 459 * @var array(int)
Chris@0 460 */
Chris@0 461 public static $comparisonTokens = array(
Chris@0 462 T_IS_EQUAL => T_IS_EQUAL,
Chris@0 463 T_IS_IDENTICAL => T_IS_IDENTICAL,
Chris@0 464 T_IS_NOT_EQUAL => T_IS_NOT_EQUAL,
Chris@0 465 T_IS_NOT_IDENTICAL => T_IS_NOT_IDENTICAL,
Chris@0 466 T_LESS_THAN => T_LESS_THAN,
Chris@0 467 T_GREATER_THAN => T_GREATER_THAN,
Chris@0 468 T_IS_SMALLER_OR_EQUAL => T_IS_SMALLER_OR_EQUAL,
Chris@0 469 T_IS_GREATER_OR_EQUAL => T_IS_GREATER_OR_EQUAL,
Chris@2 470 T_SPACESHIP => T_SPACESHIP,
Chris@2 471 T_COALESCE => T_COALESCE,
Chris@0 472 );
Chris@0 473
Chris@0 474 /**
Chris@0 475 * Tokens that represent arithmetic operators.
Chris@0 476 *
Chris@0 477 * @var array(int)
Chris@0 478 */
Chris@0 479 public static $arithmeticTokens = array(
Chris@0 480 T_PLUS => T_PLUS,
Chris@0 481 T_MINUS => T_MINUS,
Chris@0 482 T_MULTIPLY => T_MULTIPLY,
Chris@0 483 T_DIVIDE => T_DIVIDE,
Chris@0 484 T_MODULUS => T_MODULUS,
Chris@2 485 T_POW => T_POW,
Chris@0 486 );
Chris@0 487
Chris@0 488 /**
Chris@0 489 * Tokens that represent casting.
Chris@0 490 *
Chris@0 491 * @var array(int)
Chris@0 492 */
Chris@0 493 public static $castTokens = array(
Chris@0 494 T_INT_CAST => T_INT_CAST,
Chris@0 495 T_STRING_CAST => T_STRING_CAST,
Chris@0 496 T_DOUBLE_CAST => T_DOUBLE_CAST,
Chris@0 497 T_ARRAY_CAST => T_ARRAY_CAST,
Chris@0 498 T_BOOL_CAST => T_BOOL_CAST,
Chris@0 499 T_OBJECT_CAST => T_OBJECT_CAST,
Chris@0 500 T_UNSET_CAST => T_UNSET_CAST,
Chris@0 501 T_BINARY_CAST => T_BINARY_CAST,
Chris@0 502 );
Chris@0 503
Chris@0 504 /**
Chris@0 505 * Token types that open parenthesis.
Chris@0 506 *
Chris@0 507 * @var array(int)
Chris@0 508 */
Chris@0 509 public static $parenthesisOpeners = array(
Chris@0 510 T_ARRAY => T_ARRAY,
Chris@0 511 T_FUNCTION => T_FUNCTION,
Chris@0 512 T_CLOSURE => T_CLOSURE,
Chris@0 513 T_WHILE => T_WHILE,
Chris@0 514 T_FOR => T_FOR,
Chris@0 515 T_FOREACH => T_FOREACH,
Chris@0 516 T_SWITCH => T_SWITCH,
Chris@0 517 T_IF => T_IF,
Chris@0 518 T_ELSEIF => T_ELSEIF,
Chris@0 519 T_CATCH => T_CATCH,
Chris@0 520 T_DECLARE => T_DECLARE,
Chris@0 521 );
Chris@0 522
Chris@0 523 /**
Chris@0 524 * Tokens that are allowed to open scopes.
Chris@0 525 *
Chris@0 526 * @var array(int)
Chris@0 527 */
Chris@0 528 public static $scopeOpeners = array(
Chris@0 529 T_CLASS => T_CLASS,
Chris@0 530 T_ANON_CLASS => T_ANON_CLASS,
Chris@0 531 T_INTERFACE => T_INTERFACE,
Chris@0 532 T_TRAIT => T_TRAIT,
Chris@0 533 T_NAMESPACE => T_NAMESPACE,
Chris@0 534 T_FUNCTION => T_FUNCTION,
Chris@0 535 T_CLOSURE => T_CLOSURE,
Chris@0 536 T_IF => T_IF,
Chris@0 537 T_SWITCH => T_SWITCH,
Chris@0 538 T_CASE => T_CASE,
Chris@0 539 T_DECLARE => T_DECLARE,
Chris@0 540 T_DEFAULT => T_DEFAULT,
Chris@0 541 T_WHILE => T_WHILE,
Chris@0 542 T_ELSE => T_ELSE,
Chris@0 543 T_ELSEIF => T_ELSEIF,
Chris@0 544 T_FOR => T_FOR,
Chris@0 545 T_FOREACH => T_FOREACH,
Chris@0 546 T_DO => T_DO,
Chris@0 547 T_TRY => T_TRY,
Chris@0 548 T_CATCH => T_CATCH,
Chris@0 549 T_FINALLY => T_FINALLY,
Chris@0 550 T_PROPERTY => T_PROPERTY,
Chris@0 551 T_OBJECT => T_OBJECT,
Chris@0 552 T_USE => T_USE,
Chris@0 553 );
Chris@0 554
Chris@0 555 /**
Chris@0 556 * Tokens that represent scope modifiers.
Chris@0 557 *
Chris@0 558 * @var array(int)
Chris@0 559 */
Chris@0 560 public static $scopeModifiers = array(
Chris@0 561 T_PRIVATE => T_PRIVATE,
Chris@0 562 T_PUBLIC => T_PUBLIC,
Chris@0 563 T_PROTECTED => T_PROTECTED,
Chris@0 564 );
Chris@0 565
Chris@0 566 /**
Chris@0 567 * Tokens that can prefix a method name
Chris@0 568 *
Chris@0 569 * @var array(int)
Chris@0 570 */
Chris@0 571 public static $methodPrefixes = array(
Chris@0 572 T_PRIVATE => T_PRIVATE,
Chris@0 573 T_PUBLIC => T_PUBLIC,
Chris@0 574 T_PROTECTED => T_PROTECTED,
Chris@0 575 T_ABSTRACT => T_ABSTRACT,
Chris@0 576 T_STATIC => T_STATIC,
Chris@0 577 T_FINAL => T_FINAL,
Chris@0 578 );
Chris@0 579
Chris@0 580 /**
Chris@0 581 * Tokens that perform operations.
Chris@0 582 *
Chris@0 583 * @var array(int)
Chris@0 584 */
Chris@0 585 public static $operators = array(
Chris@2 586 T_MINUS => T_MINUS,
Chris@2 587 T_PLUS => T_PLUS,
Chris@2 588 T_MULTIPLY => T_MULTIPLY,
Chris@2 589 T_DIVIDE => T_DIVIDE,
Chris@2 590 T_MODULUS => T_MODULUS,
Chris@2 591 T_POW => T_POW,
Chris@2 592 T_SPACESHIP => T_SPACESHIP,
Chris@2 593 T_COALESCE => T_COALESCE,
Chris@2 594 T_BITWISE_AND => T_BITWISE_AND,
Chris@2 595 T_BITWISE_OR => T_BITWISE_OR,
Chris@2 596 T_BITWISE_XOR => T_BITWISE_XOR,
Chris@2 597 T_SL => T_SL,
Chris@2 598 T_SR => T_SR,
Chris@0 599 );
Chris@0 600
Chris@0 601 /**
Chris@0 602 * Tokens that perform boolean operations.
Chris@0 603 *
Chris@0 604 * @var array(int)
Chris@0 605 */
Chris@0 606 public static $booleanOperators = array(
Chris@0 607 T_BOOLEAN_AND => T_BOOLEAN_AND,
Chris@0 608 T_BOOLEAN_OR => T_BOOLEAN_OR,
Chris@0 609 T_LOGICAL_AND => T_LOGICAL_AND,
Chris@0 610 T_LOGICAL_OR => T_LOGICAL_OR,
Chris@0 611 T_LOGICAL_XOR => T_LOGICAL_XOR,
Chris@0 612 );
Chris@0 613
Chris@0 614 /**
Chris@0 615 * Tokens that open code blocks.
Chris@0 616 *
Chris@0 617 * @var array(int)
Chris@0 618 */
Chris@0 619 public static $blockOpeners = array(
Chris@0 620 T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET,
Chris@0 621 T_OPEN_SQUARE_BRACKET => T_OPEN_SQUARE_BRACKET,
Chris@0 622 T_OPEN_PARENTHESIS => T_OPEN_PARENTHESIS,
Chris@0 623 T_OBJECT => T_OBJECT,
Chris@0 624 );
Chris@0 625
Chris@0 626 /**
Chris@0 627 * Tokens that don't represent code.
Chris@0 628 *
Chris@0 629 * @var array(int)
Chris@0 630 */
Chris@0 631 public static $emptyTokens = array(
Chris@0 632 T_WHITESPACE => T_WHITESPACE,
Chris@0 633 T_COMMENT => T_COMMENT,
Chris@0 634 T_DOC_COMMENT => T_DOC_COMMENT,
Chris@0 635 T_DOC_COMMENT_STAR => T_DOC_COMMENT_STAR,
Chris@0 636 T_DOC_COMMENT_WHITESPACE => T_DOC_COMMENT_WHITESPACE,
Chris@0 637 T_DOC_COMMENT_TAG => T_DOC_COMMENT_TAG,
Chris@0 638 T_DOC_COMMENT_OPEN_TAG => T_DOC_COMMENT_OPEN_TAG,
Chris@0 639 T_DOC_COMMENT_CLOSE_TAG => T_DOC_COMMENT_CLOSE_TAG,
Chris@0 640 T_DOC_COMMENT_STRING => T_DOC_COMMENT_STRING,
Chris@0 641 );
Chris@0 642
Chris@0 643 /**
Chris@0 644 * Tokens that are comments.
Chris@0 645 *
Chris@0 646 * @var array(int)
Chris@0 647 */
Chris@0 648 public static $commentTokens = array(
Chris@0 649 T_COMMENT => T_COMMENT,
Chris@0 650 T_DOC_COMMENT => T_DOC_COMMENT,
Chris@0 651 T_DOC_COMMENT_STAR => T_DOC_COMMENT_STAR,
Chris@0 652 T_DOC_COMMENT_WHITESPACE => T_DOC_COMMENT_WHITESPACE,
Chris@0 653 T_DOC_COMMENT_TAG => T_DOC_COMMENT_TAG,
Chris@0 654 T_DOC_COMMENT_OPEN_TAG => T_DOC_COMMENT_OPEN_TAG,
Chris@0 655 T_DOC_COMMENT_CLOSE_TAG => T_DOC_COMMENT_CLOSE_TAG,
Chris@0 656 T_DOC_COMMENT_STRING => T_DOC_COMMENT_STRING,
Chris@0 657 );
Chris@0 658
Chris@0 659 /**
Chris@0 660 * Tokens that represent strings.
Chris@0 661 *
Chris@0 662 * Note that T_STRINGS are NOT represented in this list.
Chris@0 663 *
Chris@0 664 * @var array(int)
Chris@0 665 */
Chris@0 666 public static $stringTokens = array(
Chris@0 667 T_CONSTANT_ENCAPSED_STRING => T_CONSTANT_ENCAPSED_STRING,
Chris@0 668 T_DOUBLE_QUOTED_STRING => T_DOUBLE_QUOTED_STRING,
Chris@0 669 );
Chris@0 670
Chris@0 671 /**
Chris@2 672 * Tokens that represent text strings.
Chris@2 673 *
Chris@2 674 * @var array(int)
Chris@2 675 */
Chris@2 676 public static $textStringTokens = array(
Chris@2 677 T_CONSTANT_ENCAPSED_STRING => T_CONSTANT_ENCAPSED_STRING,
Chris@2 678 T_DOUBLE_QUOTED_STRING => T_DOUBLE_QUOTED_STRING,
Chris@2 679 T_INLINE_HTML => T_INLINE_HTML,
Chris@2 680 T_HEREDOC => T_HEREDOC,
Chris@2 681 T_NOWDOC => T_NOWDOC,
Chris@2 682 );
Chris@2 683
Chris@2 684 /**
Chris@0 685 * Tokens that represent brackets and parenthesis.
Chris@0 686 *
Chris@0 687 * @var array(int)
Chris@0 688 */
Chris@0 689 public static $bracketTokens = array(
Chris@0 690 T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET,
Chris@0 691 T_CLOSE_CURLY_BRACKET => T_CLOSE_CURLY_BRACKET,
Chris@0 692 T_OPEN_SQUARE_BRACKET => T_OPEN_SQUARE_BRACKET,
Chris@0 693 T_CLOSE_SQUARE_BRACKET => T_CLOSE_SQUARE_BRACKET,
Chris@0 694 T_OPEN_PARENTHESIS => T_OPEN_PARENTHESIS,
Chris@0 695 T_CLOSE_PARENTHESIS => T_CLOSE_PARENTHESIS,
Chris@0 696 );
Chris@0 697
Chris@0 698 /**
Chris@0 699 * Tokens that include files.
Chris@0 700 *
Chris@0 701 * @var array(int)
Chris@0 702 */
Chris@0 703 public static $includeTokens = array(
Chris@0 704 T_REQUIRE_ONCE => T_REQUIRE_ONCE,
Chris@0 705 T_REQUIRE => T_REQUIRE,
Chris@0 706 T_INCLUDE_ONCE => T_INCLUDE_ONCE,
Chris@0 707 T_INCLUDE => T_INCLUDE,
Chris@0 708 );
Chris@0 709
Chris@0 710 /**
Chris@0 711 * Tokens that make up a heredoc string.
Chris@0 712 *
Chris@0 713 * @var array(int)
Chris@0 714 */
Chris@0 715 public static $heredocTokens = array(
Chris@0 716 T_START_HEREDOC => T_START_HEREDOC,
Chris@0 717 T_END_HEREDOC => T_END_HEREDOC,
Chris@0 718 T_HEREDOC => T_HEREDOC,
Chris@0 719 T_START_NOWDOC => T_START_NOWDOC,
Chris@0 720 T_END_NOWDOC => T_END_NOWDOC,
Chris@0 721 T_NOWDOC => T_NOWDOC,
Chris@0 722 );
Chris@0 723
Chris@0 724 /**
Chris@0 725 * Tokens that represent the names of called functions.
Chris@0 726 *
Chris@2 727 * Mostly, these are just strings. But PHP tokenizes some language
Chris@0 728 * constructs and functions using their own tokens.
Chris@0 729 *
Chris@0 730 * @var array(int)
Chris@0 731 */
Chris@0 732 public static $functionNameTokens = array(
Chris@0 733 T_STRING => T_STRING,
Chris@0 734 T_EVAL => T_EVAL,
Chris@0 735 T_EXIT => T_EXIT,
Chris@0 736 T_INCLUDE => T_INCLUDE,
Chris@0 737 T_INCLUDE_ONCE => T_INCLUDE_ONCE,
Chris@0 738 T_REQUIRE => T_REQUIRE,
Chris@0 739 T_REQUIRE_ONCE => T_REQUIRE_ONCE,
Chris@0 740 T_ISSET => T_ISSET,
Chris@0 741 T_UNSET => T_UNSET,
Chris@0 742 T_EMPTY => T_EMPTY,
Chris@0 743 );
Chris@0 744
Chris@0 745
Chris@0 746 /**
Chris@0 747 * A PHP_CodeSniffer_Tokens class cannot be constructed.
Chris@0 748 *
Chris@0 749 * Only static calls are allowed.
Chris@0 750 */
Chris@0 751 private function __construct()
Chris@0 752 {
Chris@0 753
Chris@0 754 }//end __construct()
Chris@0 755
Chris@0 756
Chris@0 757 /**
Chris@0 758 * Returns the highest weighted token type.
Chris@0 759 *
Chris@0 760 * Tokens are weighted by their approximate frequency of appearance in code
Chris@0 761 * - the less frequently they appear in the code, the higher the weighting.
Chris@0 762 * For example T_CLASS tokens appear very infrequently in a file, and
Chris@0 763 * therefore have a high weighting.
Chris@0 764 *
Chris@0 765 * Returns false if there are no weightings for any of the specified tokens.
Chris@0 766 *
Chris@0 767 * @param array(int) $tokens The token types to get the highest weighted
Chris@0 768 * type for.
Chris@0 769 *
Chris@0 770 * @return int The highest weighted token.
Chris@0 771 */
Chris@0 772 public static function getHighestWeightedToken(array $tokens)
Chris@0 773 {
Chris@0 774 $highest = -1;
Chris@0 775 $highestType = false;
Chris@0 776
Chris@0 777 $weights = self::$weightings;
Chris@0 778
Chris@0 779 foreach ($tokens as $token) {
Chris@0 780 if (isset($weights[$token]) === true) {
Chris@0 781 $weight = $weights[$token];
Chris@0 782 } else {
Chris@0 783 $weight = 0;
Chris@0 784 }
Chris@0 785
Chris@0 786 if ($weight > $highest) {
Chris@0 787 $highest = $weight;
Chris@0 788 $highestType = $token;
Chris@0 789 }
Chris@0 790 }
Chris@0 791
Chris@0 792 return $highestType;
Chris@0 793
Chris@0 794 }//end getHighestWeightedToken()
Chris@0 795
Chris@0 796
Chris@0 797 }//end class