Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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

AltStyle によって変換されたページ (->オリジナル) /