Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.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 T_封装的_和_空白标记表示_Php_Compiler Construction_Abstract Syntax Tree - Fatal编程技术网

Php T_封装的_和_空白标记表示

Php T_封装的_和_空白标记表示,php,compiler-construction,abstract-syntax-tree,Php,Compiler Construction,Abstract Syntax Tree,我正在开发一个用于PHP的AST生成器,并查看了一些用于PHP的语法文件,我注意到 T_ENCAPSED_AND_WHITESPACE 我的AST生成器在使用令牌的HEREDOCS/NOWDOCS中失败。我似乎找不到该标记的表示形式,也找不到什么类型的正则表达式与之匹配,这是由于在双引号字符串中使用带引号的数组键引起的。e、 g $foo['bar'] = 'baz'; echo "$foo['bar']"; PHP Parse error: syntax error, unexpected

我正在开发一个用于PHP的AST生成器,并查看了一些用于PHP的语法文件,我注意到

T_ENCAPSED_AND_WHITESPACE

我的AST生成器在使用令牌的HEREDOCS/NOWDOCS中失败。我似乎找不到该标记的表示形式,也找不到什么类型的正则表达式与之匹配,这是由于在双引号字符串中使用带引号的数组键引起的。e、 g

$foo['bar'] = 'baz';
echo "$foo['bar']";
PHP Parse error:  syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING
正确的语法是:

echo "$foo[bar]"; // no quotes on the array key
echo "{$foo['bar']}"; // extended {} notation

您需要发布导致错误的代码,我们不是读心术的人。我强烈建议您看看PHP解析器项目,它可能会重复您在这里尝试的一些操作:@Barmar:我正在编写一个编译器AST生成器,在其他语法中,它们引用T_ENCAPSED_和_whitespace标记,我没有抛出此错误的php代码。@Daskwuff:我一直在研究该项目,但我正在使用ANTLR语法构建我的项目,以避免使用PHPI编写。我在寻找该标记的(缺少更好的单词)regex表示形式祝您好运。您需要在
“…”
中查找
[''''''']
,除非它们被
{…}
包围。