Chapter 02

言語仕様

takl
takl
2020.12.22に更新

メインは Language Server Protocol なので、言語の機能は思い切り削ることにしました。

まず、作りやすくするため Lisp っぽい見た目の構文にしました。おなじみの階乗関数はこんな感じになります。

(defun fact (n)
  (if (= n 0)
      1
      (* n (fact (- n 1)))))

(print (fact 5)) ; => 120

構文は関数定義(defun NAME (PARAMS ...) BODY ...)、条件分岐(if CONDITION CONSEQUENCE ALTERNATE)、関数呼び出し(ID ARGS ...)だけです。値型は unit と bool と number だけ、組み込み関数は =, +, -, * だけです。値としての関数やネストした関数定義は禁止します。また、; から行末までがコメントです。