みなさんは,PHP で電卓を作ろうとしたとき,どのような実装を思い浮かべるでしょうか。正規表現で式を分解したり,そのまま eval に突っ込んだり…と,様々な方法があるかなと思います。電卓を作るからには「4 × √ ((5! + 2^8) - (4! + 2^8))」のような複雑な式を計算したいと考えるはずです。
そこで,本トークでは,数式をトークンごとに分割し,トークンそれぞれに意味を持たせるために抽象構文木と呼ばれる形に変換して,実際に計算をさせるまでお話します。また,時間があればデモも行います。