Def Lang 可扩展编程语言开源项目

我要开发同款
杨捷2015年07月08日
49阅读
开发技术C/C++
所属分类程序开发、脚本编程语言
授权协议MIT

作品详情

可扩展编程语言Def的目标是将C++的高效抽象和Lisp的强大表现力融为一体。

你可以通过阅读入门教程、源码或测试用例来简要或详细的了解Def到底是怎样的一门编程语言。

Def有着雄心勃勃的计划:在不损失效率的情况下达到现代脚本语言的高度抽象,并尽可能的减少程序员的负担。目前已经实现的部分为:类、泛型、函数重载、函数嵌套、函数模板、操作符绑定、完全类型推导、基于宏的元编程等,接下来需要您帮助实现的部分是:清晰友好的错误提示,lambda表达式等高级特征。

Def的前缀可扩展编程语言指的是:你可以创造原本不存在的语义、自定义符号绑定的语法、甚至修改语言的内核。这一切意味着,你可以亲手将Def打造成任何你想要的语言!

请看示例代码

;; 添加操作符绑定let ( a + b ) ( add a b )let ( a := b ) ( var a b )let ( a.b ) ( elmget a b );; 自定义类型type Point (    Int x    Int y);; 定义变量并初始化p1 := Point 1 2   ; 类型初始化语法与函数调用相同p2 := Point 3 4;; 重载 add 函数,利用函数模板tpf add(a b)(  ; tpf 定义函数模板    Point (a.x)+(a.y) (b.x)+(b.y));; 重载的模板函数调用p1 + p2

 

;; Def 多返回值函数fun getTuple()(    ret tuple (  ; 返回元组类型        10        9.9        'a'    ));; 得到元组并使用var tp getTuple  ; 是的,函数调用不需要括号var num elmget tp 0  ; num = tp[0] ;; 定义元组拆包宏 let upk(names val)(  ;  upk 为 unpack 的缩写    mcrfor(names)( var _v elmget val _i )    ; mcrfor 表示宏参数循环  _v 为值  _i 为循环索引);; 使用拆包宏upk(a b c) tp
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论