替换$in php变量声明

前端之家收集整理的这篇文章主要介绍了替换$in php变量声明前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想扩展PHP语法,以便分辨出可变和不可变的变量.

$a应声明为可变(如标准PHP中所示)
和#b应该声明为不可变的.

我读过Hacking PHP syntax,

我无法弄清楚在哪里可以定义用#声明的变量也应该被标记为T_VARIABLE?

我能够解决这个问题,
需要采取两个步骤:

PHP不解析’#’作为注释:

更改:

<ST_IN_SCRIPTING>"#"|"//" {

<ST_IN_SCRIPTING>"//" {

zend_language_scanner.l年的第1901行

Tokenize #a作为变量:

更改:

simple_variable:
T_VARIABLE { $$= $1; }
| '$' '{' expr '}' { $$= $3; }
| '$' simple_variable { $$= zend_ast_create(ZEND_AST_VAR,$2); }
;

至:

simple_variable:
T_VARIABLE { $$= $1; }
| '$' '{' expr '}' { $$= $3; }
| '$' simple_variable { $$= zend_ast_create(ZEND_AST_VAR,$2); }
| '#' '{' expr '}' { $$= $3; }
| '#' simple_variable { $$= zend_ast_create(ZEND_AST_VAR,$2); }
;

zend_language_parser.y的第1117行

而已

现在这段代码有效:

#a=1;
echo (#a);//1

猜你在找的PHP相关文章