昨日、駒込まで、往復5時間も電車に乗っていたので、その間に、先日のC言語パーサーを読んだ。
かなり面白い構造をしていて、特に演算優先順位の扱いなど、こういった書き方は中々思い浮かばない。
惜しいことに、左辺値と右辺値の切り分けはパーサーではやっていないので、左辺値になれない記述が左辺に来たときに弾くコードは別途作成要である。
単純な
foo();
のような呼び出しが、どのように処理されるか、パッと書かれておらず、ずっとシンタックスを追いかけていかないと分からない構造である。このほうがコンパクトに書けるのかな?
パーサー自体が小さいので、まずは簡単なCPUのアセンブラを出力する小さなコンパイラを作ることから始めると、構造が理解しやすいかもしれない。
かなり面白い構造をしていて、特に演算優先順位の扱いなど、こういった書き方は中々思い浮かばない。
惜しいことに、左辺値と右辺値の切り分けはパーサーではやっていないので、左辺値になれない記述が左辺に来たときに弾くコードは別途作成要である。
単純な
foo();
のような呼び出しが、どのように処理されるか、パッと書かれておらず、ずっとシンタックスを追いかけていかないと分からない構造である。このほうがコンパクトに書けるのかな?
パーサー自体が小さいので、まずは簡単なCPUのアセンブラを出力する小さなコンパイラを作ることから始めると、構造が理解しやすいかもしれない。