2014年10月18日土曜日

Dragon Book front-end

purple dragon bookのJava front-endって、2章で詳しく解説されているので、まずは2章を精読して全体の感じ(Lexer->Parser->AST->Syntax Directed Translation)を掴む事にしました。なのでコードを書きたいところを抑えて、2章の完全理解を目指します。

2章が全て理解できたらJulia版dragon book front-endを作ります(移植します)。
で、後で気がついたのですが、purple dragon bookのAppendix Aに全ソースコードが公開されていてかつstanfordのサイトでもtarファイルでソースコードが公開されているのですが、これってpublishedされた時点でcopyrightだなーと。

派生物としてJulia版を公開するとき、LICENSEは結構デリケートな問題になりそうなので、必要なコード断片をgist経由で本blogに掲載するに止め、公開はやめとくことにしました。すみません。ただコード断片で重要な箇所は提示できると思いますし、実際に動いてできたLLVM IRや実行結果もコンソール表示として確認できるので、まぁ、公開してほしい人がコンタクトを取ってこない 限りいいかなぁ、と。

というわけで、priority listは次の通りです♡


  1. purple dragon book 2章の完全理解
  2. Julia版dragon book front-end作成(出力はLLVM IR)
  3. purple dragon book 3章の理解(を進めながら)
  4. (2.)のfront-endを上から下まで(ソースコード入力からELF(Linux,MacOS X)までのパスを通す仕組みを作る(C/C++のコーディングの必要があるかもしれません)
  5. 3章の理解を元に、Lexical scanner generatorの作成
    1. flex(1)のソースコードリーディング(NFA/DFAの求め方、テーブルの作り方、UTF-8対応)
    2. JLexのソースコードリーディング(RegExpのdescendant parser周りを見ながら、正規表現parserをどうやって作るか学習する
  6. 4章を理解する
    1. LL(1)
    2. SLR(1)
    3. LALR(1)
  7. 以上三つのどれか一つを作ってみる!
    1. bisonなどを参考にする

こんな感じでしょうかー。
なんだか作業メモみたいになっちゃってすみません。
次のエントリーでは2章でどんなことを学んだか展開できるといいなと思います。


0 件のコメント:

コメントを投稿