您的当前位置:首页正文

做自己的PHP语法解释器

来源:筏尚旅游网

PHP关键字异构化实验

PHP词法分析和语法分析

简单理解PHP代码执行过程:http:///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。

具体相关内容参考:

怎么构建自己的PHP语法规则

首先参考这一篇博文:

下面以将echo异构化为echo1为例进行介绍。首先修改zend_language_scanner.l文件,如下图所示,在返回标志符T_ECHO的地方将echo改为echo1。

 

 

再修改语义解析文件zend_language_parser.y,如下图所示,在token是T_ECHO的地方将表示修改为“echo1 (T_ECHO)”。

 

 

参考资料

 

转载于:https://www.cnblogs.com/KunLunSu/p/6817122.html

因篇幅问题不能全部显示,请点此查看更多更全内容