Skip to content

CheungChan/duang

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

自制编程语言 duang

安装duang

直接下载二进制解释器程序获取最新版

https://github.com/CheungChan/duang/releases

目前支持的语法demo脚本:

test_data/hello.duang

运行duang程序:

./duang test_data/hello.duang

demo里面支持的语法现在都支持。

程序运行输出截图:

语法设想

  1. 既有python的可读性
  2. 又有js的大括号
  3. 支持汉语标识符
  4. go语言的go关键字直接开协程,而不用async await
  5. 又没有if err != nil {return err}的困扰,恢复了好用的try catch
  6. 没有指针的概念,变量与变量所指向的值的关系跟python一样,列表字典和对象直接传引用,不会克隆一份,除非手动调用其clone方法
  7. 支持类型推断的静态类型编程语言
  8. 学习go的大道至简,关键字少
  9. 但是又不像go那样吝啬关键字
  10. 支持用with来加强异常处理
  11. 原生支持分布式,即支持在相互信任的机器上分布式执行代码,无序拷贝代码拷贝环境。
  12. 实用为主,如内置函数call("my cmd") 可以直接执行系统命令,把命令执行结果作为返回值。

目前正在开发中。语法方面完全根据最好的风格进行设计,摒弃现有 语言的糟粕。 欢迎提一些语法上的建议。

自己的兴趣的爱好,出于好奇,实现着玩的,没有远大理想。有一点应用场景就知足了。

为中国人设计,不搞英文版。

开发进度(打✅的为已完成):

  • 支持单行多行注释
  • 实现函数声明
  • 实现函数调用
  • 实现函数嵌套调用
  • 实现内置函数print printf call call可以直接调用系统命令获取返回值
  • 实现语句;可省略
  • demo可以运行起来
  • 实现识别更多关键字和字面量
  • 识别浮点数
  • 支持汉语作为标识符
  • 实现变量的存取
  • 实现变量类型
  • 实现表达式(其实这个最难)
  • 实现作用域
  • 支持在duang程序中直接import和调用go语言函数,扩展duang语言生态。
  • 支持任意位置导入import

开发者模式

verbose模式运行duang程序(会输出AST分析过程):

export DUANG_VERBOSE=1 && ./duang test_data/hello.duang