Token类型
PHP 7 的 Token
是在代码 zend_language_parser.h
里面定义的,具体如下:
enum yytokentype
{
END = 0,
T_INCLUDE = 258, //对应include关键字
T_INCLUDE_ONCE = 259, //对应include_once关键字
T_EVAL = 260, //对应eval关键字
T_REQUIRE = 261, //对应require关键字
T_REQUIRE_ONCE = 262, //对应require_once关键字
T_LOGICAL_OR = 263, //对应or关键字
//代码省略//
这些 Token
对应的表达可以参见 zend_language_scanner.l
,比如 T_INCLUDE
对应的内容如下:
<ST_IN_SCRIPTING>"include" {
RETURN_TOKEN(T_INCLUDE);
}
PHP 7.1.0 共定义了 136 种 Token
。在对 PHP
代码进行词法分析时,可根据正则找到对应的 Token
。
为了更好地理解 Token
,下面举个例子:
<?php
$a = 1;
-
“<? php”
对应的Token
为T_OPEN_TAG
。 -
“$a”
与“=”
之间的空格对应的Token
为T_WHITESPACE
。 -
文件末尾对应的是
END
。
PHP 7 中所有的 Token
的对应关系见附录B。