Php T_封装的_和_空白标记表示
我正在开发一个用于PHP的AST生成器,并查看了一些用于PHP的语法文件,我注意到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
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表示形式祝您好运。您需要在
“…”
中查找[''''''']
,除非它们被{…}
包围。