なんもわからんな

RDBMSを作る - 構文解析

今、やりたことが多すぎて複数TrsNiumに分裂したいTrsNiumです。

タイトル通りに現在RDMBSを作成しています。(erlangで。) なぜerlangでRDMBSなのか?ですが、以下の理由があります。

erlang

  • 関数型言語をまた触りたくなった
  • 以前分散システムについて勉強したが、erlangのOTPを使えばいい感じに実践編に持ち込めそうだと思った。
  • 一貫性プログラミングに適している
  • 構文解析と字句解析がデフォルトで用意されている

RDBMS

  • 一貫性の勉強をRDMBSを作ることを通して勉強できると思った。
  • RDBMSを作ることで、RDBMSの高速化などの仕組みが理解できると思った。

などです。

さて理由はわかりましたが、RDBMSのことを知らなくては作れません。 そこで以下の本を選び、参考にしてみることにしました。

www.amazon.co.jp

この本は解剖学と歌うだけあり、字句解析のことから、オプティマイザ、プランナ、トランザクションまで幅広く紹介しています。 ※理論を理解したい人は別途で、そのトピックに関する専門書や論文を読むと良さそう

字句解析・構文解析

erlangにはleexとyeccという字句解析と構文解析モジュールが用意されています。 これらを用いて構文解析をおこなっています。

流れは leexにsql文を流しトークンを取得し、yeccにトークンを流し構文解析をする感じです。 まだ作成途中で不完全ですが、このツイートのように徐々に構文を解析できるようになっています。

作業はこのレポジトリの中で地道にやっていこうと思います。

github.com