синтаксис — заменить объявление переменной $ in php

Я хотел бы продлить php синтаксис, чтобы отличить изменчивые и неизменные переменные.

$a должен быть объявлен изменяемым (как в стандартном php)
а также #b должен быть объявлен неизменным.

я прочел Взлом PHP-синтаксиса,

и я не мог понять, где я могу определить, что переменные объявлены с # также следует маркировать как T_VARIABLE ?

8

Решение

Я смог решить эту проблему,
Необходимо сделать два шага:

Изменить:

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

к

<ST_IN_SCRIPTING>"//" {

По линии 1901 г. zend_language_scanner.l

Изменить:

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 из zend_language_parser.y

Теперь этот код работает:

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

Другие решения

Моим первым предположением было посмотреть, сможете ли вы изменить это в своем файле php.ini для своего проекта, однако нет опции, позволяющей изменить знак. http://php.net/manual/en/ini.list.php

Моим лучшим предположением будет то, что вам нужно будет изучить реальную базу PHP-кода или спросить сообщество PHP, добавят ли они эту функцию для вас.

-2