パーサ

MoshGauche 由来の read.c をパーサとして使わせて頂いていた。開発当初、すぐ再利用できるパーサがあれば VM 本体の開発に専念できる。という意図。
R6RS を実装するにあたり数値表現などでパーサに手を入れる必要が出てきた。


せっかくなので Flex & Bison でパーサを生成してみようと決意。(コンパイラコンパイラ的なものを使うのは初めて)
いろいろ試行錯誤して今日やっと新パーサが旧パーサが同じように read できるようになった。


実際に動かしてみたが悪くない。

  • 手を入れやすい
  • そこまで遅くない(旧パーサの2倍遅いがあまり問題にはなっていない)

ふむ。入れ換えるかな。
そういやエラー処理まだやってない。

追記

2倍遅いのはとても大きな S式の場合。
通常はほとんど差がない。

追記2

と思ったが遅い場合もあるな調査中。