PluginProbe
Defender Security – Malware Scanner, Login Security & Firewall / 6.3.0
Defender Security – Malware Scanner, Login Security & Firewall v6.3.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 6.3.0, at src/extra/php-codesniffer-php-token/Util/Tokens.php

654 lines 17.9 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 * The token weightings.
146 *
147 * @var array<int|string, int>
148 */
149 public static $weightings = [
150 T_CLASS => 1000,
151 T_INTERFACE => 1000,
152 T_TRAIT => 1000,
153 T_NAMESPACE => 1000,
154 T_FUNCTION => 100,
155 T_CLOSURE => 100,
156
157 /*
158 * Conditions.
159 */
160
161 T_WHILE => 50,
162 T_FOR => 50,
163 T_FOREACH => 50,
164 T_IF => 50,
165 T_ELSE => 50,
166 T_ELSEIF => 50,
167 T_DO => 50,
168 T_TRY => 50,
169 T_CATCH => 50,
170 T_FINALLY => 50,
171 T_SWITCH => 50,
172
173 T_SELF => 25,
174 T_PARENT => 25,
175
176 /*
177 * Operators and arithmetic.
178 */
179
180 T_BITWISE_AND => 8,
181 T_BITWISE_OR => 8,
182 T_BITWISE_XOR => 8,
183
184 T_MULTIPLY => 5,
185 T_DIVIDE => 5,
186 T_PLUS => 5,
187 T_MINUS => 5,
188 T_MODULUS => 5,
189 T_POW => 5,
190 T_SPACESHIP => 5,
191 T_COALESCE => 5,
192 T_COALESCE_EQUAL => 5,
193
194 T_SL => 5,
195 T_SR => 5,
196 T_SL_EQUAL => 5,
197 T_SR_EQUAL => 5,
198
199 T_EQUAL => 5,
200 T_AND_EQUAL => 5,
201 T_CONCAT_EQUAL => 5,
202 T_DIV_EQUAL => 5,
203 T_MINUS_EQUAL => 5,
204 T_MOD_EQUAL => 5,
205 T_MUL_EQUAL => 5,
206 T_OR_EQUAL => 5,
207 T_PLUS_EQUAL => 5,
208 T_XOR_EQUAL => 5,
209
210 T_BOOLEAN_AND => 5,
211 T_BOOLEAN_OR => 5,
212
213 /*
214 * Equality.
215 */
216
217 T_IS_EQUAL => 5,
218 T_IS_NOT_EQUAL => 5,
219 T_IS_IDENTICAL => 5,
220 T_IS_NOT_IDENTICAL => 5,
221 T_IS_SMALLER_OR_EQUAL => 5,
222 T_IS_GREATER_OR_EQUAL => 5,
223 ];
224
225 /**
226 * Tokens that represent assignments.
227 *
228 * @var array<int|string, int|string>
229 */
230 public static $assignmentTokens = [
231 T_EQUAL => T_EQUAL,
232 T_AND_EQUAL => T_AND_EQUAL,
233 T_OR_EQUAL => T_OR_EQUAL,
234 T_CONCAT_EQUAL => T_CONCAT_EQUAL,
235 T_DIV_EQUAL => T_DIV_EQUAL,
236 T_MINUS_EQUAL => T_MINUS_EQUAL,
237 T_POW_EQUAL => T_POW_EQUAL,
238 T_MOD_EQUAL => T_MOD_EQUAL,
239 T_MUL_EQUAL => T_MUL_EQUAL,
240 T_PLUS_EQUAL => T_PLUS_EQUAL,
241 T_XOR_EQUAL => T_XOR_EQUAL,
242 T_DOUBLE_ARROW => T_DOUBLE_ARROW,
243 T_SL_EQUAL => T_SL_EQUAL,
244 T_SR_EQUAL => T_SR_EQUAL,
245 T_COALESCE_EQUAL => T_COALESCE_EQUAL,
246 T_ZSR_EQUAL => T_ZSR_EQUAL,
247 ];
248
249 /**
250 * Tokens that represent equality comparisons.
251 *
252 * @var array<int|string, int|string>
253 */
254 public static $equalityTokens = [
255 T_IS_EQUAL => T_IS_EQUAL,
256 T_IS_NOT_EQUAL => T_IS_NOT_EQUAL,
257 T_IS_IDENTICAL => T_IS_IDENTICAL,
258 T_IS_NOT_IDENTICAL => T_IS_NOT_IDENTICAL,
259 T_IS_SMALLER_OR_EQUAL => T_IS_SMALLER_OR_EQUAL,
260 T_IS_GREATER_OR_EQUAL => T_IS_GREATER_OR_EQUAL,
261 ];
262
263 /**
264 * Tokens that represent comparison operator.
265 *
266 * @var array<int|string, int|string>
267 */
268 public static $comparisonTokens = [
269 T_IS_EQUAL => T_IS_EQUAL,
270 T_IS_IDENTICAL => T_IS_IDENTICAL,
271 T_IS_NOT_EQUAL => T_IS_NOT_EQUAL,
272 T_IS_NOT_IDENTICAL => T_IS_NOT_IDENTICAL,
273 T_LESS_THAN => T_LESS_THAN,
274 T_GREATER_THAN => T_GREATER_THAN,
275 T_IS_SMALLER_OR_EQUAL => T_IS_SMALLER_OR_EQUAL,
276 T_IS_GREATER_OR_EQUAL => T_IS_GREATER_OR_EQUAL,
277 T_SPACESHIP => T_SPACESHIP,
278 T_COALESCE => T_COALESCE,
279 ];
280
281 /**
282 * Tokens that represent arithmetic operators.
283 *
284 * @var array<int|string, int|string>
285 */
286 public static $arithmeticTokens = [
287 T_PLUS => T_PLUS,
288 T_MINUS => T_MINUS,
289 T_MULTIPLY => T_MULTIPLY,
290 T_DIVIDE => T_DIVIDE,
291 T_MODULUS => T_MODULUS,
292 T_POW => T_POW,
293 ];
294
295 /**
296 * Tokens that perform operations.
297 *
298 * @var array<int|string, int|string>
299 */
300 public static $operators = [
301 T_MINUS => T_MINUS,
302 T_PLUS => T_PLUS,
303 T_MULTIPLY => T_MULTIPLY,
304 T_DIVIDE => T_DIVIDE,
305 T_MODULUS => T_MODULUS,
306 T_POW => T_POW,
307 T_SPACESHIP => T_SPACESHIP,
308 T_COALESCE => T_COALESCE,
309 T_BITWISE_AND => T_BITWISE_AND,
310 T_BITWISE_OR => T_BITWISE_OR,
311 T_BITWISE_XOR => T_BITWISE_XOR,
312 T_SL => T_SL,
313 T_SR => T_SR,
314 ];
315
316 /**
317 * Tokens that perform boolean operations.
318 *
319 * @var array<int|string, int|string>
320 */
321 public static $booleanOperators = [
322 T_BOOLEAN_AND => T_BOOLEAN_AND,
323 T_BOOLEAN_OR => T_BOOLEAN_OR,
324 T_LOGICAL_AND => T_LOGICAL_AND,
325 T_LOGICAL_OR => T_LOGICAL_OR,
326 T_LOGICAL_XOR => T_LOGICAL_XOR,
327 ];
328
329 /**
330 * Tokens that represent casting.
331 *
332 * @var array<int|string, int|string>
333 */
334 public static $castTokens = [
335 T_INT_CAST => T_INT_CAST,
336 T_STRING_CAST => T_STRING_CAST,
337 T_DOUBLE_CAST => T_DOUBLE_CAST,
338 T_ARRAY_CAST => T_ARRAY_CAST,
339 T_BOOL_CAST => T_BOOL_CAST,
340 T_OBJECT_CAST => T_OBJECT_CAST,
341 T_UNSET_CAST => T_UNSET_CAST,
342 T_BINARY_CAST => T_BINARY_CAST,
343 ];
344
345 /**
346 * Token types that open parenthesis.
347 *
348 * @var array<int|string, int|string>
349 */
350 public static $parenthesisOpeners = [
351 T_ARRAY => T_ARRAY,
352 T_LIST => T_LIST,
353 T_FUNCTION => T_FUNCTION,
354 T_CLOSURE => T_CLOSURE,
355 T_ANON_CLASS => T_ANON_CLASS,
356 T_WHILE => T_WHILE,
357 T_FOR => T_FOR,
358 T_FOREACH => T_FOREACH,
359 T_SWITCH => T_SWITCH,
360 T_IF => T_IF,
361 T_ELSEIF => T_ELSEIF,
362 T_CATCH => T_CATCH,
363 T_DECLARE => T_DECLARE,
364 ];
365
366 /**
367 * Tokens that are allowed to open scopes.
368 *
369 * @var array<int|string, int|string>
370 */
371 public static $scopeOpeners = [
372 T_CLASS => T_CLASS,
373 T_ANON_CLASS => T_ANON_CLASS,
374 T_INTERFACE => T_INTERFACE,
375 T_TRAIT => T_TRAIT,
376 T_NAMESPACE => T_NAMESPACE,
377 T_FUNCTION => T_FUNCTION,
378 T_CLOSURE => T_CLOSURE,
379 T_IF => T_IF,
380 T_SWITCH => T_SWITCH,
381 T_CASE => T_CASE,
382 T_DECLARE => T_DECLARE,
383 T_DEFAULT => T_DEFAULT,
384 T_WHILE => T_WHILE,
385 T_ELSE => T_ELSE,
386 T_ELSEIF => T_ELSEIF,
387 T_FOR => T_FOR,
388 T_FOREACH => T_FOREACH,
389 T_DO => T_DO,
390 T_TRY => T_TRY,
391 T_CATCH => T_CATCH,
392 T_FINALLY => T_FINALLY,
393 T_PROPERTY => T_PROPERTY,
394 T_OBJECT => T_OBJECT,
395 T_USE => T_USE,
396 ];
397
398 /**
399 * Tokens that represent scope modifiers.
400 *
401 * @var array<int|string, int|string>
402 */
403 public static $scopeModifiers = [
404 T_PRIVATE => T_PRIVATE,
405 T_PUBLIC => T_PUBLIC,
406 T_PROTECTED => T_PROTECTED,
407 ];
408
409 /**
410 * Tokens that can prefix a method name
411 *
412 * @var array<int|string, int|string>
413 */
414 public static $methodPrefixes = [
415 T_PRIVATE => T_PRIVATE,
416 T_PUBLIC => T_PUBLIC,
417 T_PROTECTED => T_PROTECTED,
418 T_ABSTRACT => T_ABSTRACT,
419 T_STATIC => T_STATIC,
420 T_FINAL => T_FINAL,
421 ];
422
423 /**
424 * Tokens that open code blocks.
425 *
426 * @var array<int|string, int|string>
427 */
428 public static $blockOpeners = [
429 T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET,
430 T_OPEN_SQUARE_BRACKET => T_OPEN_SQUARE_BRACKET,
431 T_OPEN_PARENTHESIS => T_OPEN_PARENTHESIS,
432 T_OBJECT => T_OBJECT,
433 ];
434
435 /**
436 * Tokens that don't represent code.
437 *
438 * @var array<int|string, int|string>
439 */
440 public static $emptyTokens = [
441 T_WHITESPACE => T_WHITESPACE,
442 T_COMMENT => T_COMMENT,
443 T_DOC_COMMENT => T_DOC_COMMENT,
444 T_DOC_COMMENT_STAR => T_DOC_COMMENT_STAR,
445 T_DOC_COMMENT_WHITESPACE => T_DOC_COMMENT_WHITESPACE,
446 T_DOC_COMMENT_TAG => T_DOC_COMMENT_TAG,
447 T_DOC_COMMENT_OPEN_TAG => T_DOC_COMMENT_OPEN_TAG,
448 T_DOC_COMMENT_CLOSE_TAG => T_DOC_COMMENT_CLOSE_TAG,
449 T_DOC_COMMENT_STRING => T_DOC_COMMENT_STRING,
450 T_PHPCS_ENABLE => T_PHPCS_ENABLE,
451 T_PHPCS_DISABLE => T_PHPCS_DISABLE,
452 T_PHPCS_SET => T_PHPCS_SET,
453 T_PHPCS_IGNORE => T_PHPCS_IGNORE,
454 T_PHPCS_IGNORE_FILE => T_PHPCS_IGNORE_FILE,
455 ];
456
457 /**
458 * Tokens that are comments.
459 *
460 * @var array<int|string, int|string>
461 */
462 public static $commentTokens = [
463 T_COMMENT => T_COMMENT,
464 T_DOC_COMMENT => T_DOC_COMMENT,
465 T_DOC_COMMENT_STAR => T_DOC_COMMENT_STAR,
466 T_DOC_COMMENT_WHITESPACE => T_DOC_COMMENT_WHITESPACE,
467 T_DOC_COMMENT_TAG => T_DOC_COMMENT_TAG,
468 T_DOC_COMMENT_OPEN_TAG => T_DOC_COMMENT_OPEN_TAG,
469 T_DOC_COMMENT_CLOSE_TAG => T_DOC_COMMENT_CLOSE_TAG,
470 T_DOC_COMMENT_STRING => T_DOC_COMMENT_STRING,
471 T_PHPCS_ENABLE => T_PHPCS_ENABLE,
472 T_PHPCS_DISABLE => T_PHPCS_DISABLE,
473 T_PHPCS_SET => T_PHPCS_SET,
474 T_PHPCS_IGNORE => T_PHPCS_IGNORE,
475 T_PHPCS_IGNORE_FILE => T_PHPCS_IGNORE_FILE,
476 ];
477
478 /**
479 * Tokens that are comments containing PHPCS instructions.
480 *
481 * @var array<int|string, int|string>
482 */
483 public static $phpcsCommentTokens = [
484 T_PHPCS_ENABLE => T_PHPCS_ENABLE,
485 T_PHPCS_DISABLE => T_PHPCS_DISABLE,
486 T_PHPCS_SET => T_PHPCS_SET,
487 T_PHPCS_IGNORE => T_PHPCS_IGNORE,
488 T_PHPCS_IGNORE_FILE => T_PHPCS_IGNORE_FILE,
489 ];
490
491 /**
492 * Tokens that represent strings.
493 *
494 * Note that T_STRINGS are NOT represented in this list.
495 *
496 * @var array<int|string, int|string>
497 */
498 public static $stringTokens = [
499 T_CONSTANT_ENCAPSED_STRING => T_CONSTANT_ENCAPSED_STRING,
500 T_DOUBLE_QUOTED_STRING => T_DOUBLE_QUOTED_STRING,
501 ];
502
503 /**
504 * Tokens that represent text strings.
505 *
506 * @var array<int|string, int|string>
507 */
508 public static $textStringTokens = [
509 T_CONSTANT_ENCAPSED_STRING => T_CONSTANT_ENCAPSED_STRING,
510 T_DOUBLE_QUOTED_STRING => T_DOUBLE_QUOTED_STRING,
511 T_INLINE_HTML => T_INLINE_HTML,
512 T_HEREDOC => T_HEREDOC,
513 T_NOWDOC => T_NOWDOC,
514 ];
515
516 /**
517 * Tokens that represent brackets and parenthesis.
518 *
519 * @var array<int|string, int|string>
520 */
521 public static $bracketTokens = [
522 T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET,
523 T_CLOSE_CURLY_BRACKET => T_CLOSE_CURLY_BRACKET,
524 T_OPEN_SQUARE_BRACKET => T_OPEN_SQUARE_BRACKET,
525 T_CLOSE_SQUARE_BRACKET => T_CLOSE_SQUARE_BRACKET,
526 T_OPEN_PARENTHESIS => T_OPEN_PARENTHESIS,
527 T_CLOSE_PARENTHESIS => T_CLOSE_PARENTHESIS,
528 ];
529
530 /**
531 * Tokens that include files.
532 *
533 * @var array<int|string, int|string>
534 */
535 public static $includeTokens = [
536 T_REQUIRE_ONCE => T_REQUIRE_ONCE,
537 T_REQUIRE => T_REQUIRE,
538 T_INCLUDE_ONCE => T_INCLUDE_ONCE,
539 T_INCLUDE => T_INCLUDE,
540 ];
541
542 /**
543 * Tokens that make up a heredoc string.
544 *
545 * @var array<int|string, int|string>
546 */
547 public static $heredocTokens = [
548 T_START_HEREDOC => T_START_HEREDOC,
549 T_END_HEREDOC => T_END_HEREDOC,
550 T_HEREDOC => T_HEREDOC,
551 T_START_NOWDOC => T_START_NOWDOC,
552 T_END_NOWDOC => T_END_NOWDOC,
553 T_NOWDOC => T_NOWDOC,
554 ];
555
556 /**
557 * Tokens that represent the names of called functions.
558 *
559 * Mostly, these are just strings. But PHP tokenizes some language
560 * constructs and functions using their own tokens.
561 *
562 * @var array<int|string, int|string>
563 */
564 public static $functionNameTokens = [
565 T_STRING => T_STRING,
566 T_EVAL => T_EVAL,
567 T_EXIT => T_EXIT,
568 T_INCLUDE => T_INCLUDE,
569 T_INCLUDE_ONCE => T_INCLUDE_ONCE,
570 T_REQUIRE => T_REQUIRE,
571 T_REQUIRE_ONCE => T_REQUIRE_ONCE,
572 T_ISSET => T_ISSET,
573 T_UNSET => T_UNSET,
574 T_EMPTY => T_EMPTY,
575 T_SELF => T_SELF,
576 T_STATIC => T_STATIC,
577 ];
578
579 /**
580 * Tokens that open class and object scopes.
581 *
582 * @var array<int|string, int|string>
583 */
584 public static $ooScopeTokens = [
585 T_CLASS => T_CLASS,
586 T_ANON_CLASS => T_ANON_CLASS,
587 T_INTERFACE => T_INTERFACE,
588 T_TRAIT => T_TRAIT,
589 ];
590
591
592 /**
593 * Given a token, returns the name of the token.
594 *
595 * If passed an integer, the token name is sourced from PHP's token_name()
596 * function. If passed a string, it is assumed to be a PHPCS-supplied token
597 * that begins with PHPCS_T_, so the name is sourced from the token value itself.
598 *
599 * @param int|string $token The token to get the name for.
600 *
601 * @return string
602 */
603 public static function tokenName( $token ) {
604 if ( is_string( $token ) === false ) {
605 // PHP-supplied token name.
606 return token_name( $token );
607 }
608
609 return substr( $token, 6 );
610
611 }//end tokenName()
612
613
614 /**
615 * Returns the highest weighted token type.
616 *
617 * Tokens are weighted by their approximate frequency of appearance in code
618 * - the less frequently they appear in the code, the higher the weighting.
619 * For example T_CLASS tokens appear very infrequently in a file, and
620 * therefore have a high weighting.
621 *
622 * Returns false if there are no weightings for any of the specified tokens.
623 *
624 * @param array<int|string> $tokens The token types to get the highest weighted
625 * type for.
626 *
627 * @return int|false The highest weighted token.
628 */
629 public static function getHighestWeightedToken( array $tokens ) {
630 $highest = - 1;
631 $highestType = false;
632
633 $weights = self::$weightings;
634
635 foreach ( $tokens as $token ) {
636 if ( isset( $weights[ $token ] ) === true ) {
637 $weight = $weights[ $token ];
638 } else {
639 $weight = 0;
640 }
641
642 if ( $weight > $highest ) {
643 $highest = $weight;
644 $highestType = $token;
645 }
646 }
647
648 return $highestType;
649
650 }//end getHighestWeightedToken()
651
652
653 }//end class
654