誕生日おめ、俺!

大学(院)生活最後の誕生日を迎えましたが、やってることは修論のプログラムです。さっさと終わらして、BMW作業に戻らねば。

わりと順調にやれて、ノルマ達成。という直前に、うひょー!、なことが・・・。boost::spirit*1の仕様を正しく理解していなかった・・・。スキップパーサーは、完全なデリミタとしては働かない罠。よって、状況によっては、トークン分解が正しく行われねー!! デバッグ前の予備実験で判明。まぁ、良く考えてみれば、当然な仕様なわけですが・・・。
 対応方針は二つ。

  1. 今のままにして、トークン分解用の処理を挟む
  2. スキップパーサー使用を諦めて、スキップ処理込みで構文解析器を作る

今のところ2で行く方針。詳細に構文解析をする方向です。場所によってはスキップしたトークンを数え上げないといけないしね*2。ようは、普通のLLパーサーになるだけなんですがね。これによる書き換え作業で、半日は遅れるだろうなー。最悪、一日遅れるかもしれぬ・・・。
 今日構文解析系終わらせて、明日実行系終わらせて、明後日デバッグで、3日で最低限の仕様を満たそうと思ったのに・・・。木曜にゼミ発表だから、その状態で水曜に発表資料作って、先生に報告する、というのが理想だったんだけどなー。

*1:C++用の構文解析器を作るためのライブラリ

*2:本当はこの処理をスキップパーサーにやらせていたのですが・・・