kprolog K-Prolog Compiler Version 6.0

演算子機能

複合項 の解説で触れたように、前置演算子、中置演算子、 後置演算子を使用することができます。
演算子は、1-2000 の範囲の整数値をとる優先順位を持ちます。 優先順位は、1つの複合項の中に複数の演算子が出現するときに、 "("と")"によって構造が指示されないときに効果を持ちます。
たとえば、算術式の中にあらわれる中置演算子"*"と"+"は "*"の方が優先順位が高いので、
      X+Y*Z と X+(Y*Z)
は共に、'+'(X,'*'(Y,Z)) をあらわします。(X+Y)*Z は異なった項となります。

2つの演算子が同じ優先順位を持つときに、あいまいさを解決するために、 演算子指示子を使います。演算子指示子は演算子の結合性に対応するものです。
演算子指示子は、

前置演算子については、fx,fy
中置演算子については、xfx,xfy,yfx
後置演算子については、xf,yf
で指定します。ここで、それぞれの指示子は、演算子を中心に引数の優先順位 として可能な範囲を意味し、xは、fを中心に対応する位置の引数の優先順位 の値が演算子の優先順位より小さくなければならないことを、yは、同様 に演算子の優先順位以下でなければならないことを意味します。
[例]

   "+"、"-"の演算子指示子は yfxなので、
   X+Y-Z は、'-'('+'(X,Y),Z)

   ":-"の演算子指示子は、fxなので、
   f:-g:-h は、不正
ユーザが新しく演算子を定義するには、op 組込み述語を使います。
    op(優先順位,演算子指示子,関数子名) 
同じ関数子名に対しては、前置、中置、後置のそれぞれについて、1つの演算子指示子 を指定できますが、優先順位は異なっていてはならず、常に最後に実行された op 述語で指定された値をとります。

現在の演算子を知るためには、 current_op(優先順位,演算子指示子,関数子名) という組込み述語を使うことができます。

K-Prologを起動したときには、次ページの表の演算子が定義されています。
演算子指示子優先順位
:-xfx1200
:-fx1200
?-fx1200
modulefy1150
modefx1150
publicfx1150
;xfy1100
;fy1100
->xfy1050
|xfx1010
,xfy1000
notfy900
\+fy900
=xfx700
/=xfx700
\=xfx700
isxfx700
=..xfx700
==xfx700
=/=xfx700
=\=xfx700
=:=xfx700
/==xfx700
\==xfx700
>xfx700
<xfx700
=<xfx700
>=xfx700
@>xfx700
@<xfx700
@=<xfx700
@>=xfx700
spyfy500
nospyfy500
editfy500
editpfy500
listingfy500
listpfy500
listhfy500
where_isfy500
helpfy500
morefx500
cdfy500
+yfx500
+fx500
-yfx500
-fx500
andyfx500
/\yfx500
oryfx500
\/yfx500
../fy500
./fy500
~/fy500
*yfx400
*fx400
/yfx400
/fy400
<<yfx400
>>yfx400
modxfx300
**xfy250
~fx200
^xfy200
.yfx200


一つ上に戻る 目次に戻る