Skip to content

Commit 4a11001

Browse files
committed
bit.
1 parent 782f182 commit 4a11001

File tree

1 file changed

+21
-8
lines changed

1 file changed

+21
-8
lines changed

README.md

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,9 @@
11

22
# my-lisp -- A small Lisp interpreter
33

4-
非常に小さな Lisp インタプリタ。
5-
6-
参考:
7-
<a href="https://github.com/kanaka/mal/blob/master/process/guide.md">The Make-A-Lisp Process</a>
8-
ただ, MAL は Clojure に近く、Lisp らしい感じとは若干異なる。
9-
10-
Common Lisp か Scheme が有力。とりあえず Common Lisp のサブセットを実装。S式の構築部分だけ, 独立して使える。
4+
非常に小さな Lisp インタプリタ。Common Lisp か Scheme が有力。
5+
- とりあえず Common Lisp のサブセットを実装。
6+
- S式の構築部分だけ, 独立して使える。
117

128
C++17
139
- `variant` で数値は特別扱い
@@ -21,7 +17,7 @@ C++17
2117

2218
- REPL Read-Eval-Print-Loop
2319
+ ✅ GNU Readline はライセンスが GPLv3 なので使えない。libedit-devel を利用
24-
+ `repl()`, `main()`
20+
+ `repl()`, `main()`
2521

2622
- Reader, Print -- ファイルからの読み込み `READ()` 関数, S式の構築、画面への表示 `PRINT()` 関数. 文法をユーザが拡張できるので, bison/flex は使えない。手書き。
2723
+ ✅ Standard Macro Characters
@@ -109,3 +105,20 @@ Common Lisp は, クラス名に `-` を含まなければ `P` を, そうでな
109105
|pathnamep | |PATHNAME | |
110106
| |bytevector? | | |
111107

108+
109+
110+
## 参考
111+
112+
<a href="https://github.com/kanaka/mal/blob/master/process/guide.md">The Make-A-Lisp Process</a>
113+
ただ, MAL は Clojure に近く、Lisp らしい感じとは若干異なる。
114+
115+
116+
そのほか興味深い:
117+
118+
<a href="https://github.com/seven1m/malcc/">seven1m/malcc: Mal (Make A Lisp) Compiler in C</a>
119+
Lisp を C言語にコンパイル。後は gcc でバイナリを作れる。
120+
121+
そのままではビルドに失敗する。`__malloc_hook` undeclared. 組み込みの tinycc を `dev` ブランチに切り替えてやれば動く。
122+
123+
出力されるCのソースは, それぞれの関数末尾で継続を返すスタイルになっている。
124+

0 commit comments

Comments
 (0)