comparison vendor/squizlabs/php_codesniffer/CodeSniffer/Tokens.php @ 0:c75dbcec494b

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