免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4564 | 回复: 10
打印 上一主题 下一主题

汉化php,实现中文编程 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-10-27 19:55 |只看该作者 |倒序浏览
php做为一门热门编程语言且简单易学,为了让php变得更亲切,我们也尝试让php编程中文化.

做为一门脚本语言,php经历了语法解析,转换为opcode并由zend引擎执行的过程,那么"汉化"
则主要集中在语法解析环节.

php采用的语法解析是使用re2c,即正则描述转为C语言代码的过程,主要依据php源码文件中的
zend_language_scanner.l(位于zend目录下),在php编译安装过程中生成zend_language_scanner.c(大多情况下已自带此文件).

故,我们仅需要修改zend_language_scanner.l这个语法文件,大概位于第860行的位置,看到如下内容:

  1. ....
  2. <ST_IN_SCRIPTING>"exit" {
  3.         return T_EXIT;
  4. }

  5. <ST_IN_SCRIPTING>"die" {
  6.         return T_EXIT;
  7. }

  8. <ST_IN_SCRIPTING>"function" {
  9.         return T_FUNCTION;
  10. }

  11. <ST_IN_SCRIPTING>"const" {
  12.         return T_CONST;
  13. }

  14. <ST_IN_SCRIPTING>"return" {
  15.         return T_RETURN;
  16. }
  17. .....
复制代码
这边定义了php所有的语法,我们在保留原英文语法的同时加入中文:

  1. ....
  2. <ST_IN_SCRIPTING>"function" {
  3.         return T_FUNCTION;
  4. }

  5. <ST_IN_SCRIPTING>"函数" {
  6.         return T_FUNCTION;
  7. }
  8. ....
  9. <ST_IN_SCRIPTING>"返回" {
  10.         return T_RETURN;
  11. }
  12. .....

  13. <ST_IN_SCRIPTING>"if" {
  14.         return T_IF;
  15. }

  16. <ST_IN_SCRIPTING>"如果" {
  17.         return T_IF;
  18. }

  19. <ST_IN_SCRIPTING>"elseif" {
  20.         return T_ELSEIF;
  21. }

  22. <ST_IN_SCRIPTING>"否则如果" {
  23.         return T_ELSEIF;
  24. }

  25. <ST_IN_SCRIPTING>"endif" {
  26.         return T_ENDIF;
  27. }

  28. <ST_IN_SCRIPTING>"结束如果" {
  29.         return T_ENDIF;
  30. }

  31. <ST_IN_SCRIPTING>"否则" {
  32.         return T_ELSE;
  33. }

  34. <ST_IN_SCRIPTING>"else" {
  35.         return T_ELSE;
  36. }

  37. <ST_IN_SCRIPTING>"echo" {
  38.         return T_ECHO;
  39. }

  40. <ST_IN_SCRIPTING>"输出" {
  41.         return T_ECHO;
  42. }
  43. ....
复制代码
注意定义中的return内容要与原英文语法一致.
修改完成后,删除目标文件zend_language_scanner.c

另外如果没有安装re2c,请到http://re2c.org下载安装,完成后重新编译php,即可.


以下代码示例test.php:

  1. <?php

  2. 函数 测试($打印)
  3. {
  4.         如果($打印)
  5.         {
  6.                 输出 'php中文版,汉化';
  7.         }
  8.         否则
  9.         {
  10.                 返回 'php中文版,汉化';
  11.         }
  12. }

  13. 输出 测试();
  14. ?>
复制代码
#php  -f test.php
php中文版,汉化

汉化成功,另外使用时注意编码问题.

php总共有100多个语法关键字,可根据各自喜好定义中文语法,仅此抛砖引玉,希望国人也会有更好的中文编程语法.

论坛徽章:
0
2 [报告]
发表于 2010-10-27 20:48 |只看该作者
仅仅好玩而已,输入麻烦了

论坛徽章:
0
3 [报告]
发表于 2010-10-27 21:42 |只看该作者
这个绝对是有价值的,而且很大
往相反的方向走一下
我指的不是让程序更易懂,而是更难懂,就是加密!

论坛徽章:
1
IT运维版块每日发帖之星
日期:2016-03-01 06:20:00
4 [报告]
发表于 2010-10-27 21:42 |只看该作者
  ,总觉得那样别扭啊

论坛徽章:
0
5 [报告]
发表于 2010-10-27 22:52 |只看该作者
我就见过一个老程序员写过一个apache的解析模块用的是中文编程,他也是好玩!

论坛徽章:
0
6 [报告]
发表于 2010-10-27 23:19 |只看该作者
怎么解决编码问题呢?
一路征程一路笑 该用户已被删除
7 [报告]
发表于 2010-10-27 23:43 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
8 [报告]
发表于 2010-10-28 09:36 |只看该作者
这个绝对是有价值的,而且很大
往相反的方向走一下
我指的不是让程序更易懂,而是更难懂,就是加密!
kee212 发表于 2010-10-27 21:42



   

论坛徽章:
0
9 [报告]
发表于 2010-10-28 10:33 |只看该作者
不错 用来加密比较好噢

论坛徽章:
0
10 [报告]
发表于 2010-10-28 10:56 |只看该作者
不错 用来加密比较好噢
黑胡子 发表于 2010-10-28 10:33


对加密一点用也没有,反解时本来就是直接处理OPCODE~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP