Viewing file: Tokens.php (15.16 KB) -rw-rw-rw- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php /** * The Tokens class contains weightings for tokens based on their * probability of occurance in a file. * * PHP version 5 * * @category PHP * @package PHP_CodeSniffer * @author Greg Sherwood <gsherwood@squiz.net> * @author Marc McIntyre <mmcintyre@squiz.net> * @copyright 2006-2011 Squiz Pty Ltd (ABN 77 084 670 600) * @license http://matrix.squiz.net/developer/tools/php_cs/licence BSD Licence * @link http://pear.php.net/package/PHP_CodeSniffer */
define('T_NONE', 0); define('T_OPEN_CURLY_BRACKET', 1000); define('T_CLOSE_CURLY_BRACKET', 1001); define('T_OPEN_SQUARE_BRACKET', 1002); define('T_CLOSE_SQUARE_BRACKET', 1003); define('T_OPEN_PARENTHESIS', 1004); define('T_CLOSE_PARENTHESIS', 1005); define('T_COLON', 1006); define('T_STRING_CONCAT', 1007); define('T_INLINE_THEN', 1008); define('T_NULL', 1009); define('T_FALSE', 1010); define('T_TRUE', 1011); define('T_SEMICOLON', 1012); define('T_EQUAL', 1013); define('T_MULTIPLY', 1015); define('T_DIVIDE', 1016); define('T_PLUS', 1017); define('T_MINUS', 1018); define('T_MODULUS', 1019); define('T_POWER', 1020); define('T_BITWISE_AND', 1021); define('T_BITWISE_OR', 1022); define('T_ARRAY_HINT', 1023); define('T_GREATER_THAN', 1024); define('T_LESS_THAN', 1025); define('T_BOOLEAN_NOT', 1026); define('T_SELF', 1027); define('T_PARENT', 1028); define('T_DOUBLE_QUOTED_STRING', 1029); define('T_COMMA', 1030); define('T_HEREDOC', 1031); define('T_PROTOTYPE', 1032); define('T_THIS', 1033); define('T_REGULAR_EXPRESSION', 1034); define('T_PROPERTY', 1035); define('T_LABEL', 1036); define('T_OBJECT', 1037); define('T_COLOUR', 1038); define('T_HASH', 1039); define('T_URL', 1040); define('T_STYLE', 1041); define('T_ASPERAND', 1042); define('T_DOLLAR', 1043); define('T_TYPEOF', 1044); define('T_CLOSURE', 1045); define('T_BACKTICK', 1046); define('T_START_NOWDOC', 1047); define('T_NOWDOC', 1048); define('T_END_NOWDOC', 1049);
// Some PHP 5.3 tokens, replicated for lower versions. if (defined('T_NAMESPACE') === false) { define('T_NAMESPACE', 1050); }
if (defined('T_NS_SEPARATOR') === false) { define('T_NS_SEPARATOR', 1051); }
/** * The Tokens class contains weightings for tokens based on their * probability of occurance in a file. * * The less the chance of a high occurance of an abitrary token, the higher * the weighting. * * @category PHP * @package PHP_CodeSniffer * @author Greg Sherwood <gsherwood@squiz.net> * @author Marc McIntyre <mmcintyre@squiz.net> * @copyright 2006-2011 Squiz Pty Ltd (ABN 77 084 670 600) * @license http://matrix.squiz.net/developer/tools/php_cs/licence BSD Licence * @version Release: 1.3.3 * @link http://pear.php.net/package/PHP_CodeSniffer */ final class PHP_CodeSniffer_Tokens {
/** * The token weightings. * * @var array(int => int) */ public static $weightings = array( T_CLASS => 1000, T_INTERFACE => 1000, T_NAMESPACE => 1000, T_FUNCTION => 100, T_CLOSURE => 100,
/* Conditions. */
T_WHILE => 50, T_FOR => 50, T_FOREACH => 50, T_IF => 50, T_ELSE => 50, T_ELSEIF => 50, T_WHILE => 50, T_DO => 50, T_TRY => 50, T_CATCH => 50, T_SWITCH => 50,
T_SELF => 25, T_PARENT => 25,
/* Operators and arithmetic. */
T_BITWISE_AND => 8, T_BITWISE_OR => 8,
T_MULTIPLY => 5, T_DIVIDE => 5, T_PLUS => 5, T_MINUS => 5, T_MODULUS => 5, T_POWER => 5,
T_EQUAL => 5, T_AND_EQUAL => 5, T_CONCAT_EQUAL => 5, T_DIV_EQUAL => 5, T_MINUS_EQUAL => 5, T_MOD_EQUAL => 5, T_MUL_EQUAL => 5, T_OR_EQUAL => 5, T_PLUS_EQUAL => 5, T_XOR_EQUAL => 5,
T_BOOLEAN_AND => 5, T_BOOLEAN_OR => 5,
/* Equality. */
T_IS_EQUAL => 5, T_IS_NOT_EQUAL => 5, T_IS_IDENTICAL => 5, T_IS_NOT_IDENTICAL => 5, T_IS_SMALLER_OR_EQUAL => 5, T_IS_GREATER_OR_EQUAL => 5, );
/** * Tokens that represent assignments. * * @var array(int) */ public static $assignmentTokens = array( T_EQUAL, T_AND_EQUAL, T_CONCAT_EQUAL, T_DIV_EQUAL, T_MINUS_EQUAL, T_MOD_EQUAL, T_MUL_EQUAL, T_PLUS_EQUAL, T_XOR_EQUAL, T_DOUBLE_ARROW, );
/** * Tokens that represent equality comparisons. * * @var array(int) */ public static $equalityTokens = array( T_IS_EQUAL, T_IS_NOT_EQUAL, T_IS_IDENTICAL, T_IS_NOT_IDENTICAL, T_IS_SMALLER_OR_EQUAL, T_IS_GREATER_OR_EQUAL, );
/** * Tokens that represent comparison operator. * * @var array(int) */ public static $comparisonTokens = array( T_IS_EQUAL, T_IS_IDENTICAL, T_IS_NOT_EQUAL, T_IS_NOT_IDENTICAL, T_LESS_THAN, T_GREATER_THAN, T_IS_SMALLER_OR_EQUAL, T_IS_GREATER_OR_EQUAL, );
/** * Tokens that represent arithmetic operators. * * @var array(int) */ public static $arithmeticTokens = array( T_PLUS, T_MINUS, T_MULTIPLY, T_DIVIDE, T_MODULUS, );
/** * Tokens that represent casting. * * @var array(int) */ public static $castTokens = array( T_INT_CAST, T_STRING_CAST, T_DOUBLE_CAST, T_ARRAY_CAST, T_BOOL_CAST, T_OBJECT_CAST, T_UNSET_CAST, );
/** * Token types that open parethesis. * * @var array(int) */ public static $parenthesisOpeners = array( T_ARRAY, T_FUNCTION, T_CLOSURE, T_WHILE, T_FOR, T_FOREACH, T_SWITCH, T_IF, T_ELSEIF, T_CATCH, );
/** * Tokens that are allowed to open scopes. * * @var array(int) */ public static $scopeOpeners = array( T_CLASS, T_INTERFACE, T_NAMESPACE, T_FUNCTION, T_CLOSURE, T_IF, T_SWITCH, T_CASE, T_DEFAULT, T_WHILE, T_ELSE, T_ELSEIF, T_FOR, T_FOREACH, T_DO, T_TRY, T_CATCH, );
/** * Tokens that represent scope modifiers. * * @var array(int) */ public static $scopeModifiers = array( T_PRIVATE, T_PUBLIC, T_PROTECTED, );
/** * Tokens that perform operations. * * @var array(int) */ public static $operators = array( T_MINUS, T_PLUS, T_MULTIPLY, T_DIVIDE, T_MODULUS, T_POWER, T_BITWISE_AND, T_BITWISE_OR, );
/** * Tokens that perform boolean operations. * * @var array(int) */ public static $booleanOperators = array( T_BOOLEAN_AND, T_BOOLEAN_OR, T_LOGICAL_AND, T_LOGICAL_OR, T_LOGICAL_XOR, );
/** * Tokens that open code blocks. * * @var array(int) */ public static $blockOpeners = array( T_OPEN_CURLY_BRACKET, T_OPEN_SQUARE_BRACKET, T_OPEN_PARENTHESIS, );
/** * Tokens that don't represent code. * * @var array(int) */ public static $emptyTokens = array( T_WHITESPACE, T_COMMENT, T_DOC_COMMENT, );
/** * Tokens that are comments. * * @var array(int) */ public static $commentTokens = array( T_COMMENT, T_DOC_COMMENT, );
/** * Tokens that represent strings. * * Note that T_STRINGS are NOT represented in this list. * * @var array(int) */ public static $stringTokens = array( T_CONSTANT_ENCAPSED_STRING, T_DOUBLE_QUOTED_STRING, );
/** * Tokens that represent brackets and parenthesis. * * @var array(int) */ public static $bracketTokens = array( T_OPEN_CURLY_BRACKET, T_CLOSE_CURLY_BRACKET, T_OPEN_SQUARE_BRACKET, T_CLOSE_SQUARE_BRACKET, T_OPEN_PARENTHESIS, T_CLOSE_PARENTHESIS, );
/** * Tokens that include files. * * @var array(int) */ public static $includeTokens = array( T_REQUIRE_ONCE, T_REQUIRE, T_INCLUDE_ONCE, T_INCLUDE, );
/** * Tokens that make up a heredoc string. * * @var array(int) */ public static $heredocTokens = array( T_START_HEREDOC, T_END_HEREDOC, T_HEREDOC, );
/** * A PHP_CodeSniffer_Tokens class cannot be constructed. * * Only static calls are allowed. */ private function __construct() {
}//end __construct()
/** * Returns the highest weighted token type. * * Tokens are weighted by their approximate frequency of appearance in code * - the less frequently they appear in the code, the higher the weighting. * For example T_CLASS tokens apprear very infrequently in a file, and * therefore have a high weighting. * * Returns false if there are no weightings for any of the specified tokens. * * @param array(int) $tokens The token types to get the highest weighted * type for. * * @return int The highest weighted token. */ public static function getHighestWeightedToken(array $tokens) { $highest = -1; $highestType = false;
$weights = self::$weightings;
foreach ($tokens as $token) { if (isset($weights[$token]) === true) { $weight = $weights[$token]; } else { $weight = 0; }
if ($weight > $highest) { $highest = $weight; $highestType = $token; } }
return $highestType;
}//end getHighestWeightedToken()
}//end class
?>
|