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
|