| MINERVAのエラーメッセージ例です。
- compiler errors:
コンパイラは未定義述語などのエラーを報告しています。
- compiler warnings:
コンパイラは、ソースの書き間違いやプログラムレイアウトルールの違反
などの可能性を示唆しています。
- run time MINERVA exceptions:
ランタイムシステムはエラーを、捕捉可能な例外に変換しています。
プログラムは明示的にこの例外を処理することができます。
実行時例外は、catch/3で処理されます。
捕捉できなかった例外は、上位のレベルへ順次伝達されます。
MINERVAで作られたエラーメッセージに加えて、そのベースにあるJava
からのエラーメッセージも出されます。Javaエラーは、
ファイル名が誤っている場合・ファイアーウォールを越えてアクセス
された場合・ブラウザーあるいはJava処理系のインストールが不適切な場合・
Java処理系の様々なバグがある場合に出されます。
以下にいくつかの、「厳しい」エラーおよび発見的警告を含むminervacの診断
例を示します。
% MINERVA (c) IF Computer 1996,97
% http://www.ifcomputer.com/MINERVA mailto:support@ifcomputer.com
% 存在しないパッケージを指示した場合には、コンパイラーからのメッセージ
% が出ます。
% :- package(nonexisting).
% ** minerva compiler: error(existence_error(source_sink,'nonexisting.mpk'),
% [goal = open('nonexisting.mpk',read,_291,[file,buffered,text])])
main(Args) :-
a(missing),
b(Lone),
c.
% 情報を伝達するためには変数が使用されます。
% 変数名の書き間違いの疑いがあります。
b(Variable) :- c(Var).
% この変数は'_'でマークされています。
b(_Variable) :- c.
% 慣習により、同じ述語は一箇所にまとめて記述されます。
% 述語名の書き間違いの疑いがあります。
c(whatever).
b(one_more).
% 慣習により、述語は第1カラムから書き始めます。
% ','が'.'の誤りである疑いがあります。
d :-
d1,
d2.
d3.
d1.
d2.
d3.
% いくつかの「実際的な」シンタックス違反。
err1 :- .
err2 :- err3(.
err4 :- err3).
err5 :- write([a,b,c,d).
err6 :- write((a,b,c,d])).
A is 5 is 7.
対応するminervacエラー出力:
minervac manyerrors
MINERVA 1.0 Development Server http://www.ifcomputer.com/MINERVA
(c) IF Computer 1996,1997 Licenced to ifcomputer.com
compile: manyerrors.min -> manyerrors.ass
*** syntax warning: singlevariable(Args)
>>> file = manyerrors.min, line = 11, column = 6
*** syntax warning: singlevariable(Lone)
>>> file = manyerrors.min, line = 13, column = 4
*** syntax warning: singlevariable(Variable)
>>> file = manyerrors.min, line = 18, column = 3
*** syntax warning: singlevariable(Var)
>>> file = manyerrors.min, line = 18, column = 18
*** compiler warning: discontiguous predicate: b / 1
*** syntax warning: term does not start at 1st column
>>> file = manyerrors.min, line = 36
*** compiler warning: discontiguous predicate: d3 / 0
*** syntax error: term expected, fullstop
>>> file = manyerrors.min, line = 44, column = 9
*** syntax error: term expected, fullstop
>>> file = manyerrors.min, line = 45, column = 14
*** syntax error: not in bracket-context, ')'
>>> file = manyerrors.min, line = 46, column = 13
*** syntax error: not in bracket-context, ')'
>>> file = manyerrors.min, line = 47, column = 23
*** syntax error: not in list-context, ']'
>>> file = manyerrors.min, line = 48, column = 23
*** syntax error: precedence error, is
>>> file = manyerrors.min, line = 50, column = 3
*** compiler error: undefined predicate: a / 1
*** compiler error: undefined predicate: c / 0
|