ポーランド記法
ウィキペディアから
ポーランド記法(ポーランドきほう、Polish Notation)とは、数式やプログラムを記述する方法(記法)の一種。演算子(オペレータ)を被演算子(オペランド)の前(左)に記述することから、前置記法(ぜんちきほう、prefix notation)とも言う[1]。
![]() |
その他の記法として、演算子を被演算子の中間に記述する中置記法、後(右)に記述する後置記法(逆ポーランド記法)がある。
名称の由来は、ポーランド人の論理学者ヤン・ウカシェヴィチ(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言語のmain
関数やJavaのmain
メソッドが取る引数の数は不定だが、足し算の+
演算子が取る項は常に2つである。そこで、関数電卓などでは後置記法である「逆ポーランド記法」が用いられることが多い。プログラミング言語FORTHがその代表である。
関連項目
脚注・参照
外部リンク
Wikiwand - on
Seamless Wikipedia browsing. On steroids.