使用 Dart 实现一门简单的脚本语言 - Dash

一直想用 Dart 写点”有趣“的东西,但苦于没有合适的题材。偶然发现 Dart 项目组的 Bob Nystrom 正在编写他的开源新书 《Crafting Interpreters》,内容是用 Java/C 实现一门脚本语言,粗略翻看后,感觉通俗易懂,质量颇高。于是,以此书为蓝本,我也开始尝试编写一门简单的语言 - Dash


Dash 是一个使用 Dart 实现的解释器,它也是一门脚本语言,具备类似于 Dart 的语法和语言特性。

特性

Dash 的语言特性包括:

  • 类似于 Dart 的语法和关键字
  • 支持数字和算术表达式
  • 支持布尔量、字符串
  • 支持函数和闭包
  • 支持类和继承
  • 内置函数,如:print
  • 支持 REPL

组成

Dash 解释器的主要工作是分析和执行 Dash 语言, 它由以下主要模块组成:

  • 词法分析器 scanner (lexer/tokenizer)
  • 抽象语法树 AST
  • 语法分析器 parser
  • 解释器 interpreter (evaluator)

REPL 演示

dash-repl

进度

项目前半部分即解释器已基本完成,剩下第二部分是语言的字节码虚拟机,计划使用 Rust 编写…(非常遥远 :flushed:

仓库

粤ICP备15064550号-2