我想扩展php
语法,以便区分可变和不可变的变量。
$a
应声明为可变(如标准php中所示)
并且#b
应该被声明为不可变的。
我已阅读Hacking PHP syntax,
我无法弄清楚在哪里可以定义用#
声明的变量也应该被标记为T_VARIABLE
?
答案 0 :(得分:1)
我能够解决这个问题, 需要采取两个步骤:
PHP
不解析'#'
作为评论:变化:
<ST_IN_SCRIPTING>"#"|"//" {
要
<ST_IN_SCRIPTING>"//" {
中的第1901行
#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); }
;
的第1117行
现在这段代码有效:
#a=1;
echo (#a);//1
答案 1 :(得分:-2)
我的第一个猜测是看你是否可以在你的项目的php.ini文件中更改它,但是没有一个选项可以让你改变符号。 http://php.net/manual/en/ini.list.php
我最好的猜测是你需要查看实际的PHP代码库或询问PHP社区是否会为你添加此功能。