Hytl
mrsekut.iconの自作プログラミング言語
CLI
alex/happyの実行とビルド
$ ./scripts/build.sh
インタプリタの起動
$ stack exec -- hytl-exe repl
:quitで終了
コンパイラの使用
.hytlファイルをコンパイル
$ stack exec -- hytl-exe compile examples/ex1.hytl
もしくは--compile
.llファイルが作成される
バイナリまでのコンパイルをする
LLVM経由のインタプリタの起動
$ stack exec -- hytl-exe -i
未実装
.lliファイルを実行する
$ lli examples/ex1.ll
brewの場合は$ /usr/local/opt/llvm/bin/lli examples/ex1.ll
バイナリの作成
$ llc examples/ex1.ll
$ gcc examples/ex1.s -o examples/ex1
バイナリファイルの実行
$ ./examples/ex1
引数をコンパイル&実行
$ ./scripts/compile.sh "fac = n => if n > 1 then n * fac (n - 1) else 1"
helpを見る
$ stack exec -- hytl-exe -h
もしくは--help
ファイルをコンパイル&実行
$
未実装
インタプリタのコマンド
起動
$ stack exec -- hytl-exe repl
実行
ex. hytl> 1 + 1
ASTの確認
:aまたは:ast
ex. hytl>:a 1+1
型の確認
:tまたは:type
ex. hytl>:t 1+1
終了
:qまたは:quit
目的
「こういう言語を作りたい」ってなったときにパパット作れるぐらいの素養を培いたい
今は、parserつくるとか、evalを作るところでいちいち躓いているが、その辺のスピード感を改善したい
「こういう言語を作りたい」という小さなアイディアをたくさん出して、それをバンバン形にできるような、そういう感じにしたい
Rytlの反省を活かしてとりあえず自堕落なコンセプトである程度形にする
Rustが大変すぎて開発がストップしたまま時間が経ってしまった
色々忙しくて時間が取れなかった
でかい目標を掲げていてかつ、全部手書きでやろうとしてたのが良くなかった