https://github.com/tyfkda/lisp2js
Lisp to JavaScript translator running on JavaScript
https://github.com/tyfkda/lisp2js
Last synced: about 1 year ago
JSON representation
Lisp to JavaScript translator running on JavaScript
- Host: GitHub
- URL: https://github.com/tyfkda/lisp2js
- Owner: tyfkda
- Archived: true
- Created: 2014-11-08T05:45:28.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2019-10-16T00:11:08.000Z (over 6 years ago)
- Last Synced: 2025-03-02T20:32:20.027Z (over 1 year ago)
- Language: Common Lisp
- Size: 977 KB
- Stars: 3
- Watchers: 3
- Forks: 2
- Open Issues: 5
-
Metadata Files:
- Readme: README.ja.md
Awesome Lists containing this project
README
lisp2js
=======
[](https://travis-ci.org/tyfkda/lisp2js)
Lispコード→JavaScriptトランスレータ
[デモ](https://tyfkda.github.io/lisp2js/)
## 特徴
* コンパイルによって直接実行できるJSコードが吐き出される(VMではない)
* JSの関数やオブジェクトに簡単にアクセスできる(逆もしかり)
* セルフホスティングコンパイラ
* Lisp-1(関数と変数の名前空間が同じ)
* (衛生的ではない)マクロ
### サポートしない機能
* 継続
* 末尾呼び出し最適化(JSに依存)
* 引数チェック(JavaScriptに変換され実行されるので)
* 多値
## マッピング
Lispコードは下のルールでJSにコンパイルされる:
| Lisp | JavaScript |
|------------|-----------------|
| `()` | `false` |
| nil | `false` |
| t | `true` |
| Pair | `Cons` object |
| symbol | `Symbol` object |
| string | String |
| lambda | Function |
| hash table | Object |
| vector | Array |
## ビルドの方法
Node.jsとnpmがインストールされている必要がある。
* `npm install` で、必要なモジュールをインストール
* ソースを修正した場合、 `make` で `lisp2js.js` が更新される
* 圧縮したコードを更新するには、 `make release` を実行
## 履歴
* v0.1
* 基本的なセルフホスティングコンパイラ