パーザーを作ってみた

ソフトウェア設計とコンパイラの講義を聞きつつパーザーの残りを作った.とりあえず最初のパーザーは数値は一桁しか対応していないし逆ポーランドでやっているので面倒というのがあるのでほぼ全部作り直すことにしました.まずは "12.3*(2^2+(5/2)-10)+2" のような文字列をトークンに切り分ける関数を作り,きちんと動くのを確認してメインのパーザーを作る.メインのパーザーでは数値のトークンかそうじゃないのかを判定し,数値じゃなければ数値と演算子だけのトークンになるまで再帰.最後まで潜ったらあとは数値に変換して計算し,計算に使ったトークンを消して結果を挿入.一応完成したけど,なんていうかstring型のvectorで管理してたのでいちいちキャストするのがちょっと手間取って面倒くさかった.やっぱアルゴリズムの勉強をしたいのにこういう関係ないところではまったりするのは面白みが欠けてしまう・・・.なのでこのへんは型無しというか動的な型付けのスクリプト言語がよさそうです.