Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用令牌“u get”u all()时,如何确定;“孤独”;T_字符串是函数调用、常量还是其他?_Php_Parsing_Token_Php Parser - Fatal编程技术网

Php 使用令牌“u get”u all()时,如何确定;“孤独”;T_字符串是函数调用、常量还是其他?

Php 使用令牌“u get”u all()时,如何确定;“孤独”;T_字符串是函数调用、常量还是其他?,php,parsing,token,php-parser,Php,Parsing,Token,Php Parser,最小示例代码: token\u get\u all实际返回的是以下内容(使用已后期处理的令牌名称): token\u get\u all只进行标记化,它不会将部分解析为逻辑AST。这之后的下一步将是查看令牌如何组合在一起以及它们形成了什么逻辑单元。在这里,您可以将三个连续的标记“a_function\u name”、“(”和“)”解析为函数调用的含义 您可能希望使用现有的,而不是从头开始重新设计这个步骤。这就是标记器和解析器之间的区别。一个是把代码分成几个部分。另一个必须看上下文和关系。 <

最小示例代码:


token\u get\u all
实际返回的是以下内容(使用已后期处理的令牌名称):

token\u get\u all
只进行标记化,它不会将部分解析为逻辑AST。这之后的下一步将是查看令牌如何组合在一起以及它们形成了什么逻辑单元。在这里,您可以将三个连续的标记“
a_function\u name
”、“
”和“
”解析为函数调用的含义


您可能希望使用现有的,而不是从头开始重新设计这个步骤。

这就是标记器和解析器之间的区别。一个是把代码分成几个部分。另一个必须看上下文和关系。
<?php

    $avarname = 'a var value';

    function a_function_name($a_parameter = true)
    {
        // a comment
    }

    a_function_name();
T_OPEN_TAG: <?php
T_WHITESPACE:
T_VARIABLE: $avarname
T_WHITESPACE:
T_WHITESPACE:
T_CONSTANT_ENCAPSED_STRING: 'a var value'
T_WHITESPACE:
T_FUNCTION: function
T_WHITESPACE:
T_STRING: a_function_name
T_VARIABLE: $a_parameter
T_WHITESPACE:
T_WHITESPACE:
T_STRING: true
T_WHITESPACE:
T_WHITESPACE:
T_COMMENT: // a comment
T_WHITESPACE:
T_WHITESPACE:
T_STRING: a_function_name
T_WHITESPACE:
  ...,
  [26]=>
  array(3) {
    [0]=>
    string(8) "T_STRING"
    [1]=>
    string(15) "a_function_name"
    [2]=>
    int(10)
  }
  [27]=>
  string(1) "("
  [28]=>
  string(1) ")"