List of Parser Tokens

Various parts of the PHP language are represented internally by types like T_SR. PHP outputs identifiers like this one in parse errors, like "Parse error: unexpected T_SR, expecting ',' or ';' in script.php on line 10."

You're supposed to know what T_SR means. For everybody who doesn't know that, here is a table with those identifiers, PHP-syntax and references to the appropriate places in the manual.

Tokens
Token Syntax Reference
T_ABSTRACT abstract Абстрактные классы (available since PHP 5.0.0)
T_AND_EQUAL &= assignment operators
T_ARRAY array() array(), array syntax
T_ARRAY_CAST (array) type-casting
T_AS as foreach
T_BAD_CHARACTER   anything below ASCII 32 except \t (0x09), \n (0x0a) and \r (0x0d)
T_BOOLEAN_AND && logical operators
T_BOOLEAN_OR || logical operators
T_BOOL_CAST (bool) or (boolean) type-casting
T_BREAK break break
T_CASE case switch
T_CATCH catch Исключения (available since PHP 5.0.0)
T_CHARACTER    
T_CLASS class classes and objects
T_CLASS_C __CLASS__ magic constants (available since PHP 4.3.0)
T_CLONE clone classes and objects (available since PHP 5.0.0)
T_CLOSE_TAG ?> or %>  
T_COMMENT // or #, and /* */ in PHP 5 comments
T_CONCAT_EQUAL .= assignment operators
T_CONST const  
T_CONSTANT_ENCAPSED_STRING "foo" or 'bar' string syntax
T_CONTINUE continue  
T_CURLY_OPEN    
T_DEC -- incrementing/decrementing operators
T_DECLARE declare declare
T_DEFAULT default switch
T_DIR __DIR__ magic constants (available since PHP 5.3.0)
T_DIV_EQUAL /= assignment operators
T_DNUMBER 0.12, etc floating point numbers
T_DOC_COMMENT /** */ PHPDoc style comments (available since PHP 5.0.0)
T_DO do do..while
T_DOLLAR_OPEN_CURLY_BRACES ${ complex variable parsed syntax
T_DOUBLE_ARROW => array syntax
T_DOUBLE_CAST (real), (double) or (float) type-casting
T_DOUBLE_COLON :: see T_PAAMAYIM_NEKUDOTAYIM below
T_ECHO echo echo()
T_ELSE else else
T_ELSEIF elseif elseif
T_EMPTY empty empty()
T_ENCAPSED_AND_WHITESPACE    
T_ENDDECLARE enddeclare declare, alternative syntax
T_ENDFOR endfor for, alternative syntax
T_ENDFOREACH endforeach foreach, alternative syntax
T_ENDIF endif if, alternative syntax
T_ENDSWITCH endswitch switch, alternative syntax
T_ENDWHILE endwhile while, alternative syntax
T_END_HEREDOC   heredoc syntax
T_EVAL eval() eval()
T_EXIT exit or die exit(), die()
T_EXTENDS extends extends, classes and objects
T_FILE __FILE__ magic constants
T_FINAL final Ключевое слово "final" (available since PHP 5.0.0)
T_FOR for for
T_FOREACH foreach foreach
T_FUNCTION function or cfunction functions
T_FUNC_C __FUNCTION__ magic constants (available since PHP 4.3.0)
T_GLOBAL global variable scope
T_HALT_COMPILER __halt_compiler() __halt_compiler (available since PHP 5.1.0)
T_IF if if
T_IMPLEMENTS implements Интерфейсы объектов (available since PHP 5.0.0)
T_INC ++ incrementing/decrementing operators
T_INCLUDE include() include()
T_INCLUDE_ONCE include_once() include_once()
T_INLINE_HTML    
T_INSTANCEOF instanceof type operators (available since PHP 5.0.0)
T_INT_CAST (int) or (integer) type-casting
T_INTERFACE interface Интерфейсы объектов (available since PHP 5.0.0)
T_ISSET isset() isset()
T_IS_EQUAL == comparison operators
T_IS_GREATER_OR_EQUAL >= comparison operators
T_IS_IDENTICAL === comparison operators
T_IS_NOT_EQUAL != or <> comparison operators
T_IS_NOT_IDENTICAL !== comparison operators
T_IS_SMALLER_OR_EQUAL <= comparison operators
T_LINE __LINE__ magic constants
T_LIST list() list()
T_LNUMBER 123, 012, 0x1ac, etc integers
T_LOGICAL_AND and logical operators
T_LOGICAL_OR or logical operators
T_LOGICAL_XOR xor logical operators
T_METHOD_C __METHOD__ magic constants (available since PHP 5.0.0)
T_MINUS_EQUAL -= assignment operators
T_ML_COMMENT /* and */ comments (PHP 4 only)
T_MOD_EQUAL %= assignment operators
T_MUL_EQUAL *= assignment operators
T_NS_C __NAMESPACE__ namespaces. Also defined as T_NAMESPACE (available since PHP 5.3.0)
T_NEW new classes and objects
T_NUM_STRING    
T_OBJECT_CAST (object) type-casting
T_OBJECT_OPERATOR -> classes and objects
T_OLD_FUNCTION old_function  
T_OPEN_TAG <?php, <? or <% escaping from HTML
T_OPEN_TAG_WITH_ECHO <?= or <%= escaping from HTML
T_OR_EQUAL |= assignment operators
T_PAAMAYIM_NEKUDOTAYIM :: ::. Also defined as T_DOUBLE_COLON.
T_PLUS_EQUAL += assignment operators
T_PRINT print() print()
T_PRIVATE private classes and objects (available since PHP 5.0.0)
T_PUBLIC public classes and objects (available since PHP 5.0.0)
T_PROTECTED protected classes and objects (available since PHP 5.0.0)
T_REQUIRE require() require()
T_REQUIRE_ONCE require_once() require_once()
T_RETURN return returning values
T_SL << bitwise operators
T_SL_EQUAL <<= assignment operators
T_SR >> bitwise operators
T_SR_EQUAL >>= assignment operators
T_START_HEREDOC <<< heredoc syntax
T_STATIC static variable scope
T_STRING    
T_STRING_CAST (string) type-casting
T_STRING_VARNAME    
T_SWITCH switch switch
T_THROW throw Исключения (available since PHP 5.0.0)
T_TRY try Исключения (available since PHP 5.0.0)
T_UNSET unset() unset()
T_UNSET_CAST (unset) (not documented; casts to NULL)
T_USE use namespaces (available since PHP 5.3.0)
T_VAR var classes and objects
T_VARIABLE $foo variables
T_WHILE while while, do..while
T_WHITESPACE    
T_XOR_EQUAL ^= assignment operators

See also token_name().

Коментарии

T_ENCAPSED_AND_WHITESPACE is whitespace which intersects a group of tokens. For example, an "unexpected T_ENCAPSED_AND_WHITESPACE" error is produced by the following code:

<?php
$main_output_world 
'snakes!';
echo(
'There are' 10 $main_output_world);
?>

Note the missing concatenation operator between the two strings leads to the whitespace error that is so named above. The concatenation operator instructs PHP to ignore the whitespace between the two code tokens (the so named "encapsed" data"), rather than parse it as a token itself.

The correct code would be:

<?php
$main_output_world 
'snakes!';
echo(
'There are' 10 $main_output_world);
?>

Note the addition of the concatenation operator between each token.
2008-09-22 08:52:07
http://php5.kiev.ua/manual/ru/tokens.html
T_ENCAPSED_AND_WHITESPACED is returned when parsing strings with evaluated content, like "some $value" or this example from the Strings reference page:

<?php
echo <<<EOT
My name is "$name". I am printing some $foo->foo.
Now, I am printing some 
{$foo->bar[1]}.
This should print a capital 'A': \x41
EOT;
?>

This last example is tokenized as:
T_ECHO 
  echo
T_WHITESPACE 
  %20 (a space character)
T_START_HEREDOC 
  << 
T_ENCAPSED_AND_WHITESPACE 
  My name is "
T_VARIABLE
  $name
T_ENCAPSED_AND_WHITESPACE   
  ". I am printing some 
T_VARIABLE   
  $foo
T_OBJECT_OPERATOR   
  ->
T_STRING   
  foo
T_ENCAPSED_AND_WHITESPACE   
  . Now, I am printing some 
T_CURLY_OPEN   
  {
T_VARIABLE   
  $foo
T_OBJECT_OPERATOR   
  ->
T_STRING   
  bar
(terminal)
  [
T_LNUMBER   
  1
(terminal)
  ]
(terminal)
  }
T_ENCAPSED_AND_WHITESPACE   
  . This should print a capital 'A': \x41
T_END_HEREDOC
  EOT
(terminal)
  ;
2008-09-22 16:08:52
http://php5.kiev.ua/manual/ru/tokens.html
In the above table of Tokens, it's worth noting that the bracketed text of "available as of PHP x.y.z" can mean one of two things:

[] This *parser token* is available as of PHP x.y.z
    {eg. T_BAD_CHARACTER, T_NAME_QUALIFIED}

[] This *language feature* is available as of PHP x.y.z
    {eg. T_ATTRIBUTE, T_COALESCE_EQUAL}
2024-03-28 22:41:33
http://php5.kiev.ua/manual/ru/tokens.html

    Поддержать сайт на родительском проекте КГБ