LISc Scala中的列表解释概述

这是一个用纯Scala编写的玩具LISP解释器。当前项目还处于早期阶段,缺少一些语言功能,但代码已实现基本的运行功能,包含非常基础的REPL。

用法:

启动SBT并运行,将进入一个简单的REPL环境:


$ sbt run

...

Welcome to LISc!

This is a toy Lisp interpreter, written in Scala.

Type :q to leave



lisc> (defn fact [x] (if (<= x 1) 1 (* x (fact (- x 1)))))

==> ()



lisc> (fact 5)

==> 120

退出:

输入:q退出REPL。

当前支持的特殊表格:

目前支持四种特殊语法结构,命名灵感来源于Clojure:

  • (if test then else) - 条件表达式

  • (def name expression) - 定义

  • (defn name [args] expression) - 函数定义

  • (quote expression) - 引用表达式

上述结构帮助实现了基础的函数和条件语句功能。