hjs: Javascript Parser in Haskell + Parsec

hjs: Javascript Parser http://www.haskell.org/haskellwiki/Libraries_and_tools/HJS JavaScript 実装、始め…るかも… と書き、あーそろそろぼちぼち手を付けてみんべかな、ここはやっぱりコンパイラは Haskell + Parsec で書くべかな, と思ってちらりとリサーチしたところ、 やはり世界は広い. すでに Haskell による JS のパーサがありました. しかも Parsec を利用! Interpreter も用意されているみたいなので、あとはこれに LLVM codegen を作ってくっつければ完成かッ!? ところで、この hjs が実装の参考にしている, Monad Transformers and Modular Interpreters http://web.cecs.pdx.edu/~mpj/pubs/modinterp.html は知らなかったのですが、これ、Haskell でコンパイラのたぐいを書くときの設計流儀として非常に参考になりますね. Write yourself a Scheme in 48 hours もこのような感じでコンパイラ実装が設計されているような気がしています. Haskeller にとっては, このような設計流儀でコンパイラを書くのがデファクトスタンダードなのかな? Monad Transformers and Modular Interpreters のような、 「Haskell でのコンパイラを作るときは、こう書けば簡潔で美しいしモジュラーになるしメンテしやすくなるよ」Continue reading “hjs: Javascript Parser in Haskell + Parsec”