PluginProbe
Defender Security – Malware Scanner, Login Security & Firewall / 3.1.0
Defender Security – Malware Scanner, Login Security & Firewall v3.1.0
6.3.0 6.2.3 6.2.4 6.2.0 6.2.1 6.2.2 6.1.0 5.3.1 5.4.0 5.4.1 5.5.0 5.5.1 5.6.0 5.6.1 5.6.2 5.7.0 5.7.1 5.7.2 5.8.0 5.8.1 5.9.0 6.0.0 6.0.1 3.0.1 3.1.0 All 141 releases
defender-security / src / extra / php-codesniffer-php-token / Util / Tokens.php

Tokens.php in Defender Security – Malware Scanner, Login Security & Firewall 3.1.0, at src/extra/php-codesniffer-php-token/Util/Tokens.php

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