Hatena::ブログ(Diary)

じゅんいち☆かとうの技術日誌 このページをアンテナに追加 RSSフィード


はてなブログに引っ越しました。

2009-10-27

[] コンパイラは作らないけど字句解析や構文解析は役に立つかも

今日、アキバにいったら、調子に乗ってこんな本を買ってしまいました。

ふつうのコンパイラをつくろう

ふつうのコンパイラをつくろう

コンパイラかー、うーん作ってみてもよいかな。一生のうち1回なら言語のひとつぐらい作っていてもよいか。。。あ、いや、そこまでしなくてもテキストを解析するような字句解析や構文解析は知っているとよいことがあるかも知れない。

ちょうどid:ashigeruからLL(k)のパーサとはってことで勉強会に参加していたので、勢いで買ってみた。手のひらサイズなのに600ページ超え超大作というのは間違いないw読み応えありそうw

この書籍ではパーサジェネレータとしてJavaCCを使ってLinux/x86ターゲットのバイナリコンパイルできるCb言語*1コンパイラを実装します。目次の後半は、アセンブリ言語関数呼び出しや変数スタックフレームとかハードウェアにより近い分野のキーワードであふれているが、前半のパーサで構文を解析して抽象構文木(AST)を作るところは勉強会で学んだ知識で読めそう。

自分もJavaCCを使ってスクリプト言語的な何かを実装してみようかなと。

とりあえず、作ってみたいもの

  1. CROND形式の文字列のパース
  2. コマンドラインパラメータパース
  3. トランスレータ(Java<-->PHP5, Java<-->Ruby)

1,2はすでにあるもの使えばよいのですが、勉強の意味も込めてやるといいかもしれない。トランスレータは妄想w

追記:

数日JavaCCでEBNFを弄ってみてCRONDの文字列の解析をEBNFで表現するのは向いてないことがわかった。単純に文字の形式で分解したほうがメリットがあるw

*1C言語拡張