Udon VM 向けのコンパイラを作る[5]

中間言語ができたので高級言語を作っていきます
1
𝚌𝚊𝚗𝚗𝚘𝚛𝚒𝚗 @cannorin3

SAnuki IL の Web エディタ&コンパイラは私が Monaco と和解し次第リリースします(明日やる)

2019-12-27 20:30:32

そして10日が経過

𝚌𝚊𝚗𝚗𝚘𝚛𝚒𝚗 @cannorin3

SAnuki Online Compiler を公開しました.SAnuki は Udon Assembly にコンパイルされる中間言語です. 7colou.red/sanuki/ #MadeWithUdon

2020-01-05 22:47:17
𝚌𝚊𝚗𝚗𝚘𝚛𝚒𝚗 @cannorin3

コンパイラを作っていく & ブラウザで動くようにする上での色々な周辺ツール・ライブラリを用意したのと,Monaco の扱い方を覚えたのが主な進捗となります.シンタックスハイライトとかはなぜか動いていない(だめじゃん)

2020-01-05 22:54:48
𝚌𝚊𝚗𝚗𝚘𝚛𝚒𝚗 @cannorin3

高級言語はまともな型推論を積むし,エディタもシンタックスハイライトや補完がしっかり効くようにするから期待していいよ

2020-01-05 22:58:27
𝚌𝚊𝚗𝚗𝚘𝚛𝚒𝚗 @cannorin3

と言っておけばやらざるを得なくなり,結果的にできる

2020-01-05 22:58:41
𝚌𝚊𝚗𝚗𝚘𝚛𝚒𝚗 @cannorin3

"手書き用の構文を定義して,パーサと Web のガワを付けてリリース" に一番時間がかかりましたが…… pic.twitter.com/BsCHwaJIxM

2020-01-05 23:11:36
拡大
𝚌𝚊𝚗𝚗𝚘𝚛𝚒𝚗 @cannorin3

ボトムアップで作ってるとトップダウン勢に見た目の進捗抜かれまくってしんどいね

2020-01-05 23:20:48
𝚌𝚊𝚗𝚗𝚘𝚛𝚒𝚗 @cannorin3

最初から完璧なものをお出ししようとして先越されて敗北することを繰り返してきている

2020-01-05 23:21:42
𝚌𝚊𝚗𝚗𝚘𝚛𝚒𝚗 @cannorin3

Hindley-Milner オーバーロード解決 決定可能 簡単 裏技 ワザップ

2020-01-05 23:23:27
𝚌𝚊𝚗𝚗𝚘𝚛𝚒𝚗 @cannorin3

途中まで作って気付いたんですが,UdonVM には malloc がないので reference cell を自由に作れたらまずい

2020-01-06 16:55:31
𝚌𝚊𝚗𝚗𝚘𝚛𝚒𝚗 @cannorin3

クロージャ変換を書こうとして気付いた

2020-01-06 16:56:11
𝚌𝚊𝚗𝚗𝚘𝚛𝚒𝚗 @cannorin3

ふつうの ML は素直にコンパイルできんなこれ

2020-01-06 16:56:45
𝚌𝚊𝚗𝚗𝚘𝚛𝚒𝚗 @cannorin3

reference cell を生成するような関数を全てインライン展開強制して再帰関数にできなくすれば malloc 解決するな

2020-01-06 18:34:55
𝚌𝚊𝚗𝚗𝚘𝚛𝚒𝚗 @cannorin3

最初から理想のものをお出ししようとして永遠に完成しないマンになっとる

2020-01-06 18:35:58
𝚌𝚊𝚗𝚗𝚘𝚛𝚒𝚗 @cannorin3

スタックの扱いだるすぎるんで再帰関数より単純なループの方が入れたいんだよな

2020-01-06 18:36:47
Ram.Type-0@VRC @RamType0

@cannorin_vrc 動的に生成したアドレスをスタックにプッシュできればOKだったのに アドレスが定数値限定なの本当になんの意味があったのか

2020-01-06 21:31:13
Ram.Type-0@VRC @RamType0

@cannorin_vrc 定数値限定ならただの変数なので JITフェイズ挟んでStrongBox生成してスタックにはStrongBoxの参照積んで欲しかった あとまあ一応理論上の話なら全部object配列に詰めれば動的確保はできそう

2020-01-06 21:39:30