IF/Prologでは、オペレ−タは不可欠なものではないということに注意して下さい。オペレ−タは、構文をわかりやすくするために使われます。以下の2つの等価な項のうち、最初の方が簡単でわかりやすくなっています。...
移動
次へ 前へ
上へ 最上
参考
バージョン3から4への移行
イントロダクション
abolish
abort
# append
arg
計算式(arithmetic)
アリティ(arity)
ASCII文字
assert
asserta_term, asserto_term, assertz_term
atom, atomic_length
\(バックスラッシュ)
#bagof, #setof
block, exit_block, cut_block
break
bye
call, execute
文字セット, char_code
#clause, #clause_term
clear_eol, clear_eos, clear_screen
close
コメント
compare
項の比較
値の比較
compiles
concat
連言(conjunction)
consult
コントロールスタック(control stack)
データの型変換(conversion)
copy_term
correct
cpu時間
#current_predicate, #current_atom, current_language
!(カット)
データベース(database)
debug, nodebug, debug_goal
debug_mode
decompcons
指令(directives)
選言(disjunction)
display
編集(edit)
終了(end)
end_of_file文字
equiv_char, image_length, byte_length
例外処理(exceptions)
error_protect, exception, exception_handler
exists
exit
expand_term, phrase(+ゴール,?リスト)
?- export, ?- common, ?- import, ?-hidden
事実(fact)
fail
filepos, files, flush, reset_streams
findall
float_format
# for
functor
gc
get, get0, get_until
getchar
getenv, get_home, get_last, move_cursor
get_global, # global_variable
ゴール(goal)
文法規則(grammar rules)
リストの先頭(head of list)
節のヘッド(head of clause)
help
ifprolog
ifsem
include
index
入力ストリーム(input stream)
インタプリタレベル(interpreter level)
is
length, #reverse
list_mode, listing
リスト(lists)
load, loaded
localtime
ループ(loops)
lower_upper, national_letters
make_atom, make_number
match, # match
# member
modify_mode
?- module, ?- module_body
name
nl
:- nonotify, nonotify
not
number
once
オペレータ(operator)
op, # current_op
outpos, outtab
出力ストリーム(output stream)
program_parameters, system_parameters, user_parameters
parse_atom
parse_position
predicate, predicate_mode
predicate_type
print
手続き(procedure)
program
# prolog_flag
prolog_library
prolog_system, prolog_version, proroot
put
put_byte, get_byte
raise_error
read, read_term
read_error, report_read_error
reconsult(+ファイル名)
# repeat
#retract
retractop
save_system, save_module
see, seeing, seen
set_global
set_home, setoutpos, setupterm
signal, signal_handler, alarm
skip
sort, keysort
spy
dbsize, ssize, gused, dbused, tused, lused
statistics
open, close, stream_control, #current_stream, link_stream
文字列(strings)
複合項(structures)
subatomic
sum, inc
symbol
計算式の構文(syntax of arithmetic expression)
構文チェッカー(syntax checker)
syntax_error
項の構文 (Syntax of terms)
system
system_date, system_time
system_predicate
tab
tell, telling, told
項(term)
X is time
trace, notrace, trace_mode, trace_goal
trace, tracing, traced
トレイル(trail)
true
tty_size
type_of, atom, nonvar, atomic, numeric, digit, realn, integer, struct, letter, var
未定義の述語(undefined_predicate)
?項1 = ?項2, +項1 \= +項2
?複合項 =.. -Univリスト, -複合項 =.. ?Univリスト
unload
unset_global
user
変数(variables)
write
イフコンピュータ > IF/Prolog > マニュアル > IF/Prolog V4.1 マニュアル > IF/Prolog V4.1 レファレンスマニュアル > オペレータ(operator)

オペレータ(operator)

MINERVA superseeded IF/Prolog. Please see http://www.ifcomputer.co.jp/MINERVA for details.

We discontinued to sell IF/Prolog Dec 31. 2003. For current customers, we continue to provide professional support for IF/Prolog until Dec 31, 2008.

IF/Prologでは、オペレ−タは不可欠なものではないということに注意して下さい。オペレ−タは、構文をわかりやすくするために使われます。以下の2つの等価な項のうち、最初の方が簡単でわかりやすくなっています。

Z is 4 + 5 * 3. is(Z, '+'(4, '*'(5,3))).

オペレ−タは、位置、優先順位、結合性の3つの属性を持ちます。

(優先順位)

優先順位は、違う優先順位のオペレ−タを持つ項の解釈のうち、どれを 優先するかを決定するために整数0-1200が使われます。

例えば "a+b*c" は、 a+(b*c) あるいは (a+b)*c と解釈できます。

優先順位の低い項が最も強く結合されます。括弧で囲まれた、あるいは 複合項でない項の優先順位は0です。上記のa+(b*c)という解釈は、"+" が"*"より高い優先順位の場合に選ばれます。(a+b)*cという解釈は"*"が"+"より高い優先順位の場合に選ばれます。

(位置)

位置は、引数に対してオペレ−タをどこに置くかを定義します。以下の 3つの位置をとることができます。

PREFIX(前置) op 項 オペレ−タが単一の引数の「前」に現れる INFIX(中置) 項 op 項 オペレ−タが2つの引数の「間」に現れる POSTFIX(後置) 項 op オペレ−タが単一の引数の「後ろ」に現れる

(結合性)

結合性は、同じ優先順位のオペレ−タを持つ項の解釈のうち、どれを選択するかを決定するために使われます。

例えば"a+b-c"は、a+(b-c)あるいは(a+b)-cと解釈できます。

位置と結合性を表わす属性演算子の分類は、以下のように表記されます。"f"はオペレ−タを表し、"x"と"y" は引数を表します。"x"は、オペレ−タより優先順位の低い引数を表し、"y"はオペレ−タに等しいか、あるいは優先順位の低い引数を表します。

yfx 中置 左から結合 xfy 中置 右から結合 xfx 中置 結合しない fx,fy 前置 xf,yf 後置

式の評価の順序は、式の結合性とオペレ−タの優先順位の両方に依存します。優先順位の低い項が最初に結合されます。複合項でない項や、括弧で囲まれた項の優先順位は0です。

左から結合するオペレ−タ(例えば+,-)では、右側に優先順位の低い引数がきます。式"a+b-c"は、"+"と"-"が左から結合するように定義されているので、"(a+b)-c"と解釈できます(yfx)。

右から結合するオペレ−タでは、左側の引数の主関数子が低い優先順位でなければなりません。"+"と"-"が右から結合する場合(xfy)には、"a+b-c"は、"a+(b-c)"と解釈されます。

xfxは、オペレ−タを結合できないように定義します。つまり、2つの引数中の両方のオペレ−タが、先頭のオペレ−タより低い優先順位にならなければなりません。項"a+b-c"は、"+"がxfxと定義されている場合には違法になります。つまり解釈できないということです。このような使い方は、構文エラ−になります。

括弧は、定義された優先順位を無視するために使われます。"+"は、"*"より高い優先順位ですが、括弧が"+"のオペレ−タを隠すため優先順位が0になり、項"(a+b)*c"は正しく解釈されます。

前置オペレ−タや後置オペレ−タも、同様です。

定義済みの演算子優先順位表

1200 xfx :- , --> 1200 fx ?- , :- 1100 xfy ; 1000 xfy , 900 fy not 700 xfx is , =.. , @>= , @=< , @> , @< 700 xfx \= , \== , = , >= , =< , > , < , =\= , == , =:= 500 yfx - , + , /\ , \/ 500 fx - , + , \ 400 yfx // , / , * , div , << , >> 300 xfx mod 200 xfy ^

続く..
IF/Prolog by Siemens
言語
English
Japanese
German
サーバー
USA
Japan
サイトマップ
索引
目次
全体目次
全体索引
印刷向き
imode
PDA
探索
document: http://www.ifcomputer.co.jp/IFProlog/Manuals/v4.1/reference/operator/home_jp.html
published 2008/8/25 update 1995/11/6 (c) 1996-2006 IF Computer Japan
IF Computer 〒113-0022 Tel 03-5814-3352 start (AT) ifcomputer.com
Customer Support 東京都文京区千駄木5-28-2   http://www.ifcomputer.co.jp
冒頭へ managed with ubiCMS