ポーランド記法
ポーランド記法(ポーランドきほう、Polish Notation)とは、数式やプログラムを記述する方法(記法)の一種。演算子(オペレータ)を被演算子(オペランド)の前(左)に記述することから、前置記法(ぜんちきほう、prefix notation)とも言う。
ポーランド記法 |
中置記法 |
逆ポーランド記法 |
その他の記法として、演算子を被演算子の中間に記述する中置記法、後(右)に記述する後置記法(逆ポーランド記法)がある。
名称の由来は、ポーランド人の論理学者ヤン・ウカシェヴィチ (Jan Łukasiewicz) が考案したことによる。
概要
編集例えば、「1 と 2 を加算する」という演算を、一般的に数式の表記に用いられる中置記法で記述すると、以下のようになる。
1 + 2
一方、ポーランド記法では、加算を表す演算子 + を、被演算子である 1 と 2 の前(左)に置いて、以下のように記述する。
+ 1 2
ポーランド記法は、演算子と被演算子を分離して記述することで、式の解釈を明確にするために考えだされたものであり、二項演算であれば、括弧を使うことなく演算を一意に表記することができる。
例えば、中置記法による以下の式を考える。
(1 + 5) * (2 + 3)
これをポーランド記法で記述すると以下の通りとなり、括弧が不要である。
* + 1 5 + 2 3
一方、ポーランド記法では、被演算子同士を区切る記号(区切り文字)が必要である(中置記法では演算子が区切り文字として働くため不要)。一般には空白が用いられることが多く、上の例では1と5の間、2と3の間にある空白がそれに当たる。
コンピュータへの応用
編集ポーランド記法では、演算子があたかも関数適用のような形態をとる。これを直接利用したのがLISPで、LISPでは、たとえば +
も cons
などと同じ、関数の名前に過ぎず、関数と全く同じに実引数リストの前に置く。これは、たとえばC++の、演算子(その多くが中置記法)のオーバーロードのために、operator+
というような特別な構文を使ったりしているのなどとは対照的である。
とはいえLISPでは引数の数が不定である場合も多く(プログラミング言語の C や Java の main() 函数も同じである)、演算子の多くは引数の数は固定であることが多い(「(+ 1 2 3 4)」というのは、了解可能ではあるが、やたらに括弧が多くなる)ため、関数電卓などでは後置記法である「逆ポーランド記法」が用いられることが多い。プログラミン言語FORTHがその代表である。
関連項目
編集脚注・参照
編集