c'dent-一种可移植的模块编程语言

cdent的Python项目详细描述


C'dent-一种便携式模块编程语言

c'dent是一种编程语言,它:

  1. 主要用于编写可移植的oo模块。凹痕模块 一次写入,然后编译为任何 支持的编程语言数。
  2. 有多个输入语法。包括定义的子集: -Perl和Perl 6 -Python和Python3000 -红宝石 -javascript -Java
  3. 编译成一种称为“c”dent的共同“分母”树形式。丹特是 具有模块、类、方法和 表达。
  4. 向现有的几种编程语言发射凹坑树, 包括: -c'dent-已编译的树形式,序列化为yaml或xml -Perl和Perl 6 -Python和Python3000 -菲律宾比索 -红宝石 -javascript -斯卡拉 -爪哇 -动作脚本 -去吧 -PIR(鹦鹉中间运行时) -C和C++ -CIL(.NET通用中间语言)
  5. 使用静态隐式类型将类型分配给 编译时,为类型冲突抛出语法错误。强的 需要键入以生成 发出的端口语言。

安装

目前安装c'dent的最佳方法是获取源代码并安装 就像这样:

> git clone git://github.com/ingydotnet/cdent.git
> cd cdent
> sudo python setup.py install

您将需要setuptools for python来运行最后一个命令。在基于Debian的系统上,可以使用以下命令安装:

> sudo apt-get install python-setuptools

用法

安装c'dent之后,您的unix路径中将有一个cdent编译器。 尝试运行此命令:

cdent --help

你需要一个用c'dent编写的程序。你的凹坑里有些 存储库克隆。一个例子是tests/modules/world.cd.py,它看起来像 这个:

"""\
This is World class :)
"""

class World():
    def greet(self):
        print "Hello, world"

您可以使用以下命令编译成ruby:

cdent --compile --in=tests/modules/world.cd.py --to=rb

产生:

# *** DO NOT EDIT ***  This is a C'Dent generated Ruby module.
###
# This is World class :)
###

class World
    def greet
        puts("Hello, world")
    end
end

通过更改--to=的值,可以将其编译为许多其他语言。

开发状态

目前,c'dent可以用简单的module/classes/methods/print/comments语法将模块解析为ast表单,并用多种语言生成等效的输出模块:

C'dent当前可以解析:

  • Python
  • javascript
  • Perl 6
  • PIR
  • c'dent/yaml(yaml形式的c'dent ast)

凹痕目前可以产生:

  • Perl
  • Python
  • php
  • 红宝石
  • javascript
  • 斯卡拉
  • Java
  • 动作脚本
  • Perl 6
  • Python3
  • 前进
  • PIR
  • c'dent/yaml

下一步:

  • 添加变量和赋值
  • 添加类型检测
  • 添加ruby和perl作为输入
  • Add Scala和C++作为输出
  • 很多其他东西

社区

加入irc.freenode.net上的内容。

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

推荐PyPI第三方库


热门话题
java如何删除列表中的重复项并将列表复制到另一个列表中   Java如何在非UI应用程序中检测tab键按下?   java无法在未调用Looper的线程内创建处理程序。警报对话框线程上的prepare()   java Jaxb将XML转换为ElementNSImpl类型,而不是正确的类型   基于java标记的过滤实现Firestore   我们可以使用Java和Eclipse使用YouTube分析Api吗?   JavaSpring注释在多个选项卡中同时打开多个视图   java Hibernate不使用JBOSS检索数据   矩阵如何从Apache Commons数学Java库中找到伪逆   对象Java打印“null”作为字符串引用!=使无效   java中的图形慢映射   java用户界面:操作栏和上下文操作栏,新趋势   java Infinispan,版本化操作返回不正确的结果   java调整保存在父JFrame中的JInternalFrame的大小,并且该父JFrame使用ComponentMover API注册   java如何防止会话属性在服务器上持久化?   java如何为SpringBoot 2创建自定义嵌入式servlet容器   使用Robolectric进行单元测试时,在片段类内调用getString()时发生java IllegalStateException