Python 板


LINE

之前有个中蟒计画,不过已经停了很久,版本停在 2.1 另外还有个希伯来文的 hpython ,也可以找得到。但这些方式其实都有很多缺点。 (其实中蟒应该叫做蟒,而不是中蟒,就像 Python 也不是 English Python) 这里提供另外一个方式,可以用在 python 2.5 之上, 因为我的一个计画打算用类似 camlp4 的功能,但是我对 python 比较熟, 所以打算用 Python 试试看,顺便处理了一下中文 Programming 当练习。 Python 本身欠缺语言扩充性的功能,本身的 Parser 也不能处理 unicode。 可以考虑的套件有 EasyExtend, Logix, 还有 PyPy ,但是我这里打算自己 写一个,简单的转换器。关於中文编译讯息显示的部份,应该用普通 L10n 来处理。 我们只处理程式码的转换。比较理想的是 AST 到 AST 的转换,但是 python 的 parser 是 c 写的。还好 python 有提供一个 tokenize 模组。虽然这个也不能处理 unicode,但是我们可以作下面一个简单的 hack: # 不用这个hack 也行,把 tokenize.py 直接 copy 过来,然後修改 import re from token import * import tokenize tokenize.pseudoprog=re.compile(tokenize.Whitespace + tokenize.group(tokenize.PseudoExtras, tokenize.Number, tokenize.Funny, tokenize.ContStr, r"\w+"),re.UNICODE) # end of hack 这样, unicode 的 token 会被看成是 operator 或 name。我们就能不用担心 " , ' """ , \ 这些东西,很简单的翻译,然後组合成原始码。这个部份跟 hpython 很像,不过他的程式码写了一大堆,而起跟中蟒一样都写死在程式里。 我们其实只要用一个 translation_dict 就能翻译了。 接下来问题是如果只跟 hpython 一样,那也不行,所以我们还要改掉 import。这里我是用 installer 的 iu.py 来处理。 我们先把 __builtin__.compile 换成我们的先翻译再 compile 版本,再把 __import__ 换成 iu 的版本,因为 iu 里面用到 compile,所以这时 import 进来的档案也可以使用中文写程式码了。 当然我们也可以选择把 eval 和 execfile 换成中文的版本。 不过还有更多的,我们还可以配合这个 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/384122 自订运算元,而且配合我们的翻译器,可以自动把 translation_dict["<<op>>"]="op" 加入翻译列表,这样就可以不用那些 讨厌的 << >>符号,变成真正可以自订符号了。 exec 也可以换成中文的版本,不过这里就要用到一点简单的 parser 了。 如果加上复杂一点的 parser,那可以作一般性质的语言扩充。 所以技术上没有什麽问题,主要的就是一些设计上得决定了。 如果是写好一种语言延伸,然後一直用到底,那没有什麽问题,但是如果 加入像是 ximport 这样的语句,或者 # -*- extension: big5 -*- # -*- extension: set_operator -*- 这样的东西,就要考虑一下整个设计了。比方语言的延伸是否可以被 import 或者 exec 传下去等等。 这个也不会太难,但是比修改 python 本身的 source 要简单多了。 不过我後来决定改用 nemerle 或 boo,所以这个东西就不弄了。 如果有兴趣的人,可以照这个方式来弄,我可以提供弄一半的程式码。 虽然这个东西本身不是很有用的东西,但是 python 和 turtle 配合起来, 似乎对於小朋友的程式学习有点用处,弄一套蟒+龟当成小学生的程式入门环境, 应该是还不错的。 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.115.200.35 ※ 编辑: weijr 来自: 59.115.200.35 (01/15 15:06)
1F:推 huggie:中蟒计画目的是什麽呀? 01/15 17:18
2F:推 Baudelaire:跟丙正正一样? XD 01/18 07:39
3F:推 weijr:目的差不多,但这种没用的东西,弄到要改 python source 01/18 11:28
4F:→ weijr:有点小题大作。 01/18 11:30







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP