php强制变量声明,替换$in php变量声明

本文介绍了如何通过修改PHP解析器的规则,使得'#'能被用作变量名的一部分,同时保持其在注释中的功能。通过调整PHP的词法和语法分析,实现了在代码中使用如'#a=1;'这样的表达式,并且仍能正确解析'//1'这样的单行注释。
摘要由CSDN通过智能技术生成

我能够解决这个问题,

需要采取两个步骤:

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

更改:

"#"|"//" {

"//" {

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); }

;

而已

现在这段代码有效:

#a=1;

echo (#a);//1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值