caper

はい、今日から日記更新開始です。

テキストエディタを作り始める→
結構できてきたので、スクリプトを搭載しよう→
spidermonkeyとかsquirrelとかいろいろ試す→
イマイチ満足いかない→
昔作ったschemeインタプリタを使おうかとも思うが、いまさらschemeもなァ→
しょうがねえせっかく最適化コンパイラの勉強したことだし、作るか→
おおむねできたけど、パーサジェネレータがどれもイマイチだなあ→
5年ほど前にパーサジェネレータを作りかけて放置したことを思い出す→
全然覚えてないがほじくりだしてみてみる→
おや、意外と完成近くまで作ってあるじゃないのさ→
よし、じゃあ理想のパーサジェネレータを作ろう→

というわけでできたのが、LALR(1)パーサジェネレータ caperです。
われながら結構いいものになった気がするので、
tutorialとかも結構がんばって作ってみました。
安定度にはまだ自信がありませんが、
仕様的にはパーサジェネレータを使ったことがある人なら
納得してもらえるものになったような気がしますので、
ぜひ遊んでみてください。

コンパイラインタプリタはもちろん、
コンフィグファイルやらネットワークのプロトコルやら
格闘ゲームのコマンド解析にも使えるようなパーサジェネレータとして
育てていければいいな、と思います。