用于构建本地化的类python语言的框架。

transpyler的Python项目详细描述


…图片::https://travis-ci.org/transpyler/transpyler.svg?branch=master
:目标:https://travis ci.org/transpyler/transpyler

…图像::https://codecov.io/gh/transtyler/transtyler/branch/master/graph/badge.svg
:目标:https://codecov.io/gh/transtyler/transtyler

…图片::https://ci.appveyor.com/api/projects/status/it45pshyqi76irbx?svg=true
:目标:https://ci.appveyor.com/project/fabiomendes/transtyler



transtyler是创建简单本地化版本的python的基础结构。它最初是作为pytugu_s语言(python
葡萄牙语)的一部分创建的,但现在它被抽象为处理任何翻译。这类专门语言的目标是为英语不流利的新来者、儿童和成人提供一个更友好的环境。

假设我们想创建一个
py克林贡来帮助我们统治银河系。幸运的是,克林贡语的结构与英语并没有太大的不同,我们可以通过翻译标记来走很长的路。在Transpyler中,它看起来是这样的:

…代码块:python


"meh":"for"、
"chugh":"if"、
"latlh":"else"、
"qap":"def"、
"nobha":"return"、
"……你知道了;—)
}



int(fib(10))它创建了一个python函数!



由于主要目标是教育性的,支持transpyler的语言会自动支持一系列从原始pytugu_继承来的好的教育工具
runtume:

*对jupyter/ipython的支持:我们可以很容易地从transpyler inst创建jupyter内核嗯。这使得漂亮的控制台和笔记本在教授新的编程语言时非常方便。
*qcode支持和语法突出显示:qcode是一个基于qt的小部件,用于编码
编辑。
*pygments插件:pygments是一个源代码高亮显示程序,通常用于生成
源代码的彩色html。
*qturtle应用程序:qturtle类似于python自己在qt中重写的turtle模块。这对孩子们的教学很好,所有的透明语言都支持
免费:)




它是如何工作的?
---------


编译是将代码从一种编程语言翻译到另一种编程语言(与编译相反,编译是将源代码翻译到机器代码)。一个**转换**更简单:它将类似python的语言翻译回python(有时直接执行)。这项任务并不困难,因为这两种语言都是相似的,我们可以重用很多python的
自己的机器来分析和修改自己的源代码。


transpyler只在令牌级别工作:它将令牌流从原始翻译语言修改为一个新的令牌流,然后必须
生成语法上有效的python程序。实际上,我们甚至都没有实现自己的标记赋予器,而是使用python自己的"tokenize"模块为我们处理这一部分。第一个
过程只执行直接转换,如上面py klingon
示例中所示。第二个过程将把一组令牌映射到一个python
令牌(例如:我们可以生成一个"for each"命令,该命令被转换为"for")。

passes可以查找特定的令牌模式,并执行更多复杂的转换。例如,pytugu_s实现了一个"repeat"命令。
在英语中应该是这样的:



。代码块::transpyler

重复4次:
向前(100)
向左(90)


这将被传输到python,如下所示:

……忽略下一个块
…代码块::python

请注意,标记仍然
来自python标记赋予器,因此存在某些硬词法
约束(包括作为块分隔符语义的缩进,在
python中,它是在标记赋予器级别实现的,而不是在语法中实现的)。

transpyler不实现souRCE代码映射,因为
pytugu_s不需要它们,而且我们认为简单的本地化蟒蛇不需要
。也就是说,新的语法结构应该保持行号不变。

我们在
python运行时中进行了一些肮脏的攻击,但它不需要任何特殊风格的解释器
,而且不需要额外的编译。



and the standard lib?
----


我很高兴你这么问:)。这是目前为止做一个像样的
python翻译最费力的部分。transpyler提供了一些有用的工具,但是大部分工作都是将每个函数的名称和文档字符串转换为它们的本地化对应函数的不可避免的任务。提供一个使用google translate为标准lib函数创建样板文件的工具。google translate是一个很好的工具,但我们都知道它对于严肃的翻译来说有多糟糕。请记住这一点。

这里有一个使用transtyler的所有项目的列表。

*pytugu_s:python到葡萄牙语的原始版本。
*pykor:韩文版本。
*pytu_ol:对portu_ol的非严肃翻译。这是一个最小的项目,可以用作新翻译的模板。





内置类型如何?
----


python内置组件带来了挑战。它们不能在python级别进行猴子修补,
,但我们需要修改它们。在py klingon中,我们希望"teh"常量(true)被表示为"teh",而不是"true"。我们还希望
列表、字符串等的方法名完全转换。

该模块建议不要使用自己,除非您想做危险的事情或愚蠢的事情:)


他在诅咒我。我们提供了一个工具,可以轻松有效地诅咒python的内置代码。
----

实例,大多数python代码也是有效的pytugu_s代码。这使得语言更易于实现,因为我们不必黑名单原始的python关键字,但它也为从教育性的pythonesque语言到实际应用中使用的普通python创建了一条道路。

e python内部和python
原始语法不是一个bug,而是一个特性!< BR>

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Clojure关键字在内存中的大小是多少?   Java中有固定长度的通用数组对象吗?   PostgreSQL:通过Java更新我的用户表   错误:使用java解析xml   java Json显示列表中对象的名称   java比较JodaTime时区   与JAVA中的API和包的区别?   java的int值在for循环中不改变   谷歌应用引擎中的java RSA   迁移到spring 5后出现java非法字符错误   java Websphere管理控制台不工作   JavaGSON如何始终在json中包含毫秒?   带有空格和双引号的windows Java ProcessBuilder命令参数失败   java错误:重复的zip条目[43.jar:org/apache/http/annotation/NotThreadSafe.class]