ポーランド記法の構文木を作って計算できるビジュアルツールを作りました

ポーランド記法の構文木を作って計算できるビジュアルツールを作りました

情報処理の試験でしか目にすることがない(逆)ポーランド記法の木構造をビジュアルに編集・計算するツールを作りました。 ポーランド記法はシンプルながら奥が深く、人に言いたくなる仕組みです。

作ったもの

images

GitHubに使い方の説明があります。 枝の部分実行ができたり、作った構文木のセーブ/ロードができます。

ポーランド記法とは

逆ポーランド記法の方が説明が充実しているのでこちらを引用します。

逆ポーランド記法を使えば、式の計算をする(評価)には、先頭からひとつずつ順番に記号を読み込み、その記号が演算子以外であればスタックに値を積み、演算子であればスタックから値を取り出して演算し結果をスタックに積む、という簡単な操作の繰り返しだけでよい。

ソースコードを実行する、数式を計算する、といった場合、コンピュータへの指示はどのような手順をたどるのでしょうか? まず入力(ソースコードや数式)を実行可能な状態にパースします。 この時に作られる後は実行するだけのデータ構造を構文木といいます。

構文木は根から順に実行されます。 (逆)ポーランド記法は構文木の直列表現といえるものであり、前から順に処理すれば計算できます。 ポーランド記法だと再帰的に木をたどり、逆ポーランド記法だとスタックを使って木をたどる違いがありますが、考え方は同じです。

言葉だと説明が長くなるので、デモを試していただくと視覚的に理解しやすいと思います。

何の役に立つの?

計算ができます…ではなくて、アルゴリズムやデータ構造はエンジニアの基礎体力です。 算数の公式と同じく、あなたが使いたいと思うところであれば、どこででも使うことができます。

必要な時に思い出せること。 応用箇所に気づくこと。 まさに基礎体力、抽象的な引き出しですね。

テクノロジーを自分の目的に応用するための発想は、この目に見えない抽象的な道具を理解してこそ生まれてくるものです。