#[repr(u8)]pub enum TokenKind {
Show 169 variants
FloatLiteral = 0,
FloatLiteralSimple = 1,
FloatLiteralLeadingDot = 2,
HexIntLiteral = 3,
BinIntLiteral = 4,
OctIntLiteralNew = 5,
OctIntLiteral = 6,
IntLiteral = 7,
SingleQuotedString = 8,
DoubleQuotedString = 9,
BacktickString = 10,
Variable = 11,
Dollar = 12,
Identifier = 13,
Plus = 14,
Minus = 15,
Star = 16,
Slash = 17,
Percent = 18,
StarStar = 19,
Dot = 20,
Equals = 21,
PlusEquals = 22,
MinusEquals = 23,
StarEquals = 24,
SlashEquals = 25,
PercentEquals = 26,
StarStarEquals = 27,
DotEquals = 28,
AmpersandEquals = 29,
PipeEquals = 30,
CaretEquals = 31,
ShiftLeftEquals = 32,
ShiftRightEquals = 33,
CoalesceEquals = 34,
EqualsEquals = 35,
BangEquals = 36,
EqualsEqualsEquals = 37,
BangEqualsEquals = 38,
LessThan = 39,
GreaterThan = 40,
LessThanEquals = 41,
GreaterThanEquals = 42,
Spaceship = 43,
AmpersandAmpersand = 44,
PipePipe = 45,
Bang = 46,
Ampersand = 47,
Pipe = 48,
Caret = 49,
Tilde = 50,
ShiftLeft = 51,
ShiftRight = 52,
PlusPlus = 53,
MinusMinus = 54,
Question = 55,
QuestionQuestion = 56,
Colon = 57,
FatArrow = 58,
PipeArrow = 59,
LeftParen = 60,
RightParen = 61,
LeftBracket = 62,
RightBracket = 63,
LeftBrace = 64,
RightBrace = 65,
Semicolon = 66,
Comma = 67,
DoubleColon = 68,
Arrow = 69,
NullsafeArrow = 70,
Backslash = 71,
At = 72,
HashBracket = 73,
Ellipsis = 74,
If = 75,
Else = 76,
ElseIf = 77,
While = 78,
Do = 79,
For = 80,
Foreach = 81,
As = 82,
Function = 83,
Return = 84,
Echo = 85,
Print = 86,
True = 87,
False = 88,
Null = 89,
And = 90,
Or = 91,
Xor = 92,
Break = 93,
Continue = 94,
Switch = 95,
Case = 96,
Default = 97,
EndIf = 98,
EndWhile = 99,
EndFor = 100,
EndForeach = 101,
Throw = 102,
Try = 103,
Catch = 104,
Finally = 105,
Instanceof = 106,
Array = 107,
List = 108,
Goto = 109,
Declare = 110,
Unset = 111,
Global = 112,
EndDeclare = 113,
EndSwitch = 114,
Isset = 115,
Empty = 116,
Include = 117,
IncludeOnce = 118,
Require = 119,
RequireOnce = 120,
Eval = 121,
Exit = 122,
Die = 123,
Clone = 124,
New = 125,
Class = 126,
Abstract = 127,
Final = 128,
Interface = 129,
Trait = 130,
Extends = 131,
Implements = 132,
Public = 133,
Protected = 134,
Private = 135,
Static = 136,
Const = 137,
Fn_ = 138,
Match_ = 139,
Namespace = 140,
Use = 141,
Readonly = 142,
Enum_ = 143,
Yield_ = 144,
From = 145,
Self_ = 146,
Parent_ = 147,
MagicClass = 148,
MagicDir = 149,
MagicFile = 150,
MagicFunction = 151,
MagicLine = 152,
MagicMethod = 153,
MagicNamespace = 154,
MagicTrait = 155,
MagicProperty = 156,
HaltCompiler = 157,
OpenTag = 158,
CloseTag = 159,
InlineHtml = 160,
Heredoc = 161,
Nowdoc = 162,
InvalidNumericLiteral = 163,
LineComment = 164,
HashComment = 165,
BlockComment = 166,
DocComment = 167,
Eof = 168,
}Expand description
All token types produced by the PHP lexer.
The variants are grouped by category in source order; the #[repr(u8)]
guarantees a compact discriminant layout used by TokenKind::is_assignment_op.
Variants§
FloatLiteral = 0
Float in scientific notation: 1e10, 1.5e-3, 1E+10.
FloatLiteralSimple = 1
Float with digits on both sides of the decimal point: 1.5, 0.0.
FloatLiteralLeadingDot = 2
Float starting with a leading dot: .5, .001.
HexIntLiteral = 3
Hexadecimal integer literal: 0x1A, 0xFF.
BinIntLiteral = 4
Binary integer literal: 0b1010, 0B0011.
OctIntLiteralNew = 5
Octal integer literal in the new 0o prefix form: 0o17 (PHP 8.1+).
OctIntLiteral = 6
Octal integer literal in the legacy leading-zero form: 017.
IntLiteral = 7
Decimal integer literal: 0, 42, 1_000_000.
SingleQuotedString = 8
Single-quoted string literal: 'hello'. Optional b/B prefix allowed.
DoubleQuotedString = 9
Double-quoted string literal: "hello $name". Triggers interpolation processing.
BacktickString = 10
Backtick string (shell execution): `ls -la`.
Variable = 11
A $-prefixed variable name: $foo, $myVar.
Dollar = 12
A bare $ not followed by a valid identifier start (variable-variable prefix).
Identifier = 13
A bare identifier or keyword that has not yet been resolved. PHP keywords are case-insensitive and are resolved from this token.
Plus = 14
+
Minus = 15
-
Star = 16
*
Slash = 17
/
Percent = 18
%
StarStar = 19
** — exponentiation.
Dot = 20
. — string concatenation.
Equals = 21
=
PlusEquals = 22
+=
MinusEquals = 23
-=
StarEquals = 24
*=
SlashEquals = 25
/=
PercentEquals = 26
%=
StarStarEquals = 27
**=
DotEquals = 28
.=
AmpersandEquals = 29
&=
PipeEquals = 30
|=
CaretEquals = 31
^=
ShiftLeftEquals = 32
<<=
ShiftRightEquals = 33
>>=
CoalesceEquals = 34
??=
EqualsEquals = 35
== — loose equality.
BangEquals = 36
!= or <> — loose inequality.
EqualsEqualsEquals = 37
=== — strict equality.
BangEqualsEquals = 38
!== — strict inequality.
LessThan = 39
<
GreaterThan = 40
>
LessThanEquals = 41
<=
GreaterThanEquals = 42
>=
Spaceship = 43
<=> — spaceship / three-way comparison.
AmpersandAmpersand = 44
&& — short-circuit boolean AND.
PipePipe = 45
|| — short-circuit boolean OR.
Bang = 46
! — boolean NOT.
Ampersand = 47
& — bitwise AND (also reference marker in declarations).
Pipe = 48
| — bitwise OR.
Caret = 49
^ — bitwise XOR.
Tilde = 50
~ — bitwise NOT.
ShiftLeft = 51
<< — left bit-shift.
ShiftRight = 52
>> — right bit-shift.
PlusPlus = 53
++
MinusMinus = 54
--
Question = 55
? — ternary operator or nullable type-hint prefix.
QuestionQuestion = 56
?? — null coalescing.
Colon = 57
: — ternary separator, named argument separator, or return type separator.
FatArrow = 58
=> — key-value separator in arrays and match arms.
PipeArrow = 59
|> — pipe operator (PHP 8.5+).
LeftParen = 60
(
RightParen = 61
)
LeftBracket = 62
[
RightBracket = 63
]
LeftBrace = 64
{
RightBrace = 65
}
Semicolon = 66
;
Comma = 67
,
DoubleColon = 68
:: — static access separator.
Arrow = 69
-> — object property / method access.
NullsafeArrow = 70
?-> — nullsafe property / method access.
Backslash = 71
\ — namespace separator.
At = 72
@ — error-suppression operator.
HashBracket = 73
#[ — attribute syntax opener.
Ellipsis = 74
... — splat / variadic operator.
If = 75
if
Else = 76
else
ElseIf = 77
elseif
While = 78
while
Do = 79
do
For = 80
for
Foreach = 81
foreach
As = 82
as
Function = 83
function
Return = 84
return
Echo = 85
echo
Print = 86
print
True = 87
true
False = 88
false
Null = 89
null
And = 90
and — low-precedence boolean AND.
Or = 91
or — low-precedence boolean OR.
Xor = 92
xor — low-precedence boolean XOR.
Break = 93
break
Continue = 94
continue
Switch = 95
switch
Case = 96
case
Default = 97
default
EndIf = 98
endif — alternative if syntax terminator.
EndWhile = 99
endwhile — alternative while syntax terminator.
EndFor = 100
endfor — alternative for syntax terminator.
EndForeach = 101
endforeach — alternative foreach syntax terminator.
Throw = 102
throw
Try = 103
try
Catch = 104
catch
Finally = 105
finally
Instanceof = 106
instanceof
Array = 107
array — as a keyword (e.g. array(1, 2) or array type hint).
List = 108
list — destructuring construct: list($a, $b) = ....
Goto = 109
goto
Declare = 110
declare
Unset = 111
unset
Global = 112
global
EndDeclare = 113
enddeclare — alternative declare syntax terminator.
EndSwitch = 114
endswitch — alternative switch syntax terminator.
Isset = 115
isset
Empty = 116
empty
Include = 117
include
IncludeOnce = 118
include_once
Require = 119
require
RequireOnce = 120
require_once
Eval = 121
eval
Exit = 122
exit
Die = 123
die — alias for exit.
Clone = 124
clone
New = 125
new
Class = 126
class
Abstract = 127
abstract
Final = 128
final
Interface = 129
interface
Trait = 130
trait
Extends = 131
extends
Implements = 132
implements
Public = 133
public
Protected = 134
protected
Private = 135
private
Static = 136
static
Const = 137
const
Fn_ = 138
fn — arrow function keyword.
Match_ = 139
match — match expression keyword (PHP 8.0+).
Namespace = 140
namespace
Use = 141
use
Readonly = 142
readonly (PHP 8.1+).
Enum_ = 143
enum (PHP 8.1+).
Yield_ = 144
yield
From = 145
from — used in yield from.
Self_ = 146
self
Parent_ = 147
parent
MagicClass = 148
__CLASS__
MagicDir = 149
__DIR__
MagicFile = 150
__FILE__
MagicFunction = 151
__FUNCTION__
MagicLine = 152
__LINE__
MagicMethod = 153
__METHOD__
MagicNamespace = 154
__NAMESPACE__
MagicTrait = 155
__TRAIT__
MagicProperty = 156
__PROPERTY__ (PHP 8.4+)
HaltCompiler = 157
__halt_compiler — stops the parser; remaining bytes are raw data.
OpenTag = 158
<?php or <?= opening tag.
CloseTag = 159
?> closing tag; switches the lexer back to inline-HTML mode.
InlineHtml = 160
Raw HTML text between PHP tags (produced by the Lexer wrapper, not the inner scanner).
Heredoc = 161
<<<LABEL … LABEL; — heredoc string (supports interpolation).
Nowdoc = 162
<<<'LABEL' … LABEL; — nowdoc string (no interpolation).
InvalidNumericLiteral = 163
An invalid numeric literal, e.g. 1_000_ (trailing underscore).
The lexer emits this token and records a LexerError for it.
LineComment = 164
// … single-line slash comment.
HashComment = 165
# … single-line hash comment.
BlockComment = 166
/* … */ block comment.
DocComment = 167
/** … */ doc-block comment (first non-whitespace char after /* is *).
Eof = 168
Sentinel token emitted once all source bytes have been consumed.