标签:ghost 词法 解析 read 介绍 解释 csdn 虚拟 images
PHP关键字异构化实验
简单理解PHP代码执行过程:http://blog.csdn.net/risingsun001/article/details/22888861
PHP编译执行基本过程如下图:
目前PHP词法分析器采用re2c规则,在PHP源码中的位置是zend/zend_language_scanner.c,它是由词法规则文件zend_language_scanner.l经过re2c编译生成的,命令如下:
re2c –o zend_language_scanner.c zend_language_scanner.l
PHP语法分析器用bison来生成,在PHP源码中的位置是zend/zend_language_parser.c,它是由语法规则文件zend_language_parser.y经过bison编译生成,命令如下:
bison –o zend_language_parser.c zend_language_parser.y
zend虚拟机负责执行生成的opcode。
具体相关内容参考:http://rapheal.sinaapp.com/2013/11/20/php_zend_hello_world/
首先参考这一篇博文:http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=1806405&highlight=&page=1
下面以将echo异构化为echo1为例进行介绍。首先修改zend_language_scanner.l文件,如下图所示,在返回标志符T_ECHO的地方将echo改为echo1。
再修改语义解析文件zend_language_parser.y,如下图所示,在token是T_ECHO的地方将表示修改为“echo1 (T_ECHO)”。
最后删除zend目录下的zend_language_scanner.c和zend_language_parser.c两个文件,重新编译安装PHP即可。
标签:ghost 词法 解析 read 介绍 解释 csdn 虚拟 images
原文地址:http://www.cnblogs.com/KunLunSu/p/6817122.html