# エラーメッセージ

English version

## 目次

- コンパイル時のエラー
- コンパイル時のワーニング
- 実行時のエラー
- 実行時のワーニング

## コンパイル時のエラー

parse error
  構文が間違っています．単なるタイプミスが多いですが， 型や述語の定義の最後のピリオドを忘れたりすると， 次の行でエラーとなったりするので，注意が必要です． また，型や素性の名前として使えないようなものを， そのまま書いてしまった時に出ることがあります． その様な時は，'でくくって下さい．
Trace function called to non-predicate type [type]
  組み込み述語'`trace/1`'を， 述語でないものに適用しようとしています．つづりを間違えた時も， 型未定義のワーニングとともに， 出る可能性があります．
Type '[type1]' and '[type2]' makes a loop in the type hierarchy
  型階層がループを作っています．まだ定義されていない型`a`で， `a <- a.`という型定義をしたりすると， このメッセージが出ます．
Type '[type1]' and '[type2]' have two MGSATs, '[type3]' and '[type4]'
  単一化の結果が一意に定まらないような型階層を作ろうとしています． 詳しくは， 型の単一化の説明を見て下さい．
Feature '[feature]' is defined twice
  同じ名前の素性を，2度以上定義しようとしています．素性名は， プログラム全体で重ならないように定義しなければなりません．
Type '[type]' is defined twice
  同じ名前の型を，2度以上定義しようとしています．型名は， プログラム全体で重ならないように定義しなければなりません．
Cannot generate a feature structure
  エラーなどにより，素性構造が定義できなかった時に出るメッセージです． 他のエラーメッセージとともに出ることが多く， そちらのエラーを修正すると，これも消えます．
Unknown feature name: '[feature]'
  定義されていない素性を使おうとしています．定義のしわすれか， つづりの間違いが多いです．
Feature '[feature]' is restricted to '[type1]', and cannot take '[type2]'
  素性'[feature]'の先には型'[type1]'がくると定義したのに， その制約を破る型'[type2]'が指定されています． 素性'[feature]'の先には，型'[type1]'か，そのsubtypeを指定して下さい．
Predicate '[type]' cannot take [num]-arity
  述語'[type]'は，[num]個の引数をとることができません． 述語の引数の数が間違っている時に出るエラーです．
Cannot unify these two TFSs
Cannot unify: [type1] & [type2]
  コンパイル段階で，単一化できないことがわかる時に出るエラーです． タイプミスや勘違いで起きることが多いですが，そうでない時は， 必ず失敗するので，記述する意味がありません．
Argument list length over [MAXNUM]
  引数の数が多過ぎます．引数の数の最大値[MAXNUM]は， LiLFeSのコンパイル時に決まってしまうので， 述語をいくつかに分けるなどして， 問題となっている述語の引数を減らして下さい．
Tail of a list is restricted to 'list', and cannot take '[type]'
  素性'`tl\`'に'`list`'型(または'`cons`', '`nil`')以外の型を指定しようとしています． Lispと違って， `'tl\'`には`'list'`型(または`'cons', 'nil'`)以外は指定できません．
Type [type] is not a subtype of 'pred' but used as a predicate
  述語として定義されていない型を，述語として使おうとしています． タイプミスや，プログラムの書き方のミスから来ることが多いですが， 実際に述語として使いたい時は，型'`pred`' のsubtypeとして定義して下さい．
Built-in procedure '[type]' cannot be redefined
  組み込み述語と同じ名前の述語を定義しようとしています． クエリーの頭の'?-'を付け忘れると， それは述語の定義だとみなされるため， このエラーが起きることが多いです． 本当にその名前の述語を定義しようとした時は， 述語の名前を他のものに変更して下さい．
Built-in procedure '[type]' cannot be traced
  組み込み述語をtraceしようとしています． '`=/2`'以外の組み込み述語は，トレースできません． あきらめて下さい．
Input is neither type declaration nor clause definition
  parse errorではありませんが，文法的に間違っています． 型定義または述語定義になっているか，確かめて下さい．

## コンパイル時のワーニング

Feature definition form 'FEAT(pr):type' is obsolete; use new form 'FEAT:type(pr)'
  素性の定義が古い記法になっています． 今後サポートされる保証はないので，新しい記法に修正して下さい．
Type '[type]' is undefined; treated as a subtype of 'bot'
  型'[type]'が定義されていません．型は使われる前に定義して下さい．
Type '[feature]' is undefined; treated as a subtype of 'feature'
  素性'[feature]'の定義がされていません． 素性は使われる前に定義して下さい．
Type '[pred]' is undefined; treated as a subtype of 'pred'
  述語'[pred]'の型定義がされていません． 述語は使われるまたは定義される前に型定義して下さい．
Singleton Variable '[variable]'
  一つの述語定義の中で，変数[variable]が1回しか現れていません． タイプミスの場合が多いですが， 本当に[variable]が1回しか現れる必要がない場合は， そこはどんな型でもいいということなので， 変数の代わりに`_`または'`bot`'を指定すれば， このワーニングは消えます．

## 実行時のエラー

include/1 requires a file name
  組み込み述語'`include/1`'の引数が， '`string`'になっていません． ファイル名を表す'`string`'にして下さい．
Cannot open include file: '[filename]'
  組み込み述語'`include/1`' で指定されたファイル名のファイルから読み込むことができません． 読み込み可能なファイルの名前を指定して下さい．
read_lilfes/3 requires a file name
  組み込み述語'`read_lilfes/3`'の第1引数が， '`string`'になっていません． ファイル名を表す'`string`'にして下さい．
Cannot open read file: '[filename]'
  ファイルを読み込む組み込み述語で， 指定されたファイルから読み込むことができません． 読み込み可能なファイルの名前を指定して下さい．
read_lilfes_with_prefix/3 requires a file name
  組み込み述語'`read_lilfes_with_prefix/3`'の第一引数が， '`string`'になっていません． ファイル名を表す'`string`'を指定して下さい．
switch_output_to_file/1 requires a file name
  組み込み述語'`switch_output_to_file/1`'の第1引数が， '`string`'になっていません． ファイル名を表す'`string`'を指定して下さい．
switch_output_to_file/1 cannot open file '[filename]'
  組み込み述語'`switch_output_to_file/1`' で指定されたファイルに書き込むことができません． 書き込み可能なファイルの名前を指定して下さい．
switch_output_to_file_append/1 requires a file name
  組み込み述語'`switch_output_to_file_append/1`' の引数が'`string`'になっていません． ファイル名を表す'`string`'を指定して下さい．
switch_output_to_file_append/1 cannot open file '[filename]'
  組み込み述語'`switch_output_to_file_append/1`' で指定されたファイルに追加書き込みができません． 追加書き込みが可能なファイルの名前を指定して下さい．
assert/1 cannot take a query
  クエリーを'`assert`'しようとしています． クエリーは'`assert`'できません．
asserta/1 cannot take a query
  クエリーを'`asserta`'しようとしています． クエリーは'`asserta`'できません．
value_intval requires an integer in setting an array
  配列の要素を'`value_intval`'と指定した配列で， '`integer`'型以外の値をセットしようとしています． 配列の要素は'`integer`'にして下さい．
value_string requires a string in seting an array
  配列の要素を'`value_string`'と指定した配列で， '`string`'型以外の値をセットしようとしています． 配列の要素は'`string`'にして下さい．
Error: both ARRAY_BASE and ARRAY_SIZE must be specified for key_integer
  配列の添字を'`key_integer`'で指定した配列で， '`ARRAY_BASE`'と'`ARRAY_SIZE`' の指定がされていません．添字が'`key_integer`'の配列では， 両方指定して下さい．
Error: ARRAY_SIZE must be integer
  '`ARRAY_SIZE`'を'`integer`'以外で指定しています． '`integer`'で指定して下さい．
Error:: predicate set_array/1 can be used to only declare_array'ed predicate
  組み込み述語'`set_array/1`'の引数に， 配列の宣言がされていない素性構造を指定しています． あらかじめ'`declare_array`' で宣言されている配列を指定して下さい．
Error: Predicate follow/3 requires feature in the 2nd argument
  組み込み述語'`follow/3`'の第2引数が素性名になっていません． 素性名であることを表す"`\`"が抜けていることが多いです．

## 実行時のワーニング

Non-integer cannot use as a key of an integer array
  添字に'`key_integer`'を指定した配列で， '`integer`'以外の添字を使っています． 添字は'`integer`'にして下さい．
Integer out of array-range
  配列の添字が，初めに定義した範囲を越えています． このままでは正常に動作しないので，範囲を大きくするか， 範囲を越えた添字を使わないようにして下さい．
Non-string cannot use as a key of a string hash
  添字に'`key_string`'を指定した配列で， '`string`'以外の添字を使っています． 添字は'`string`'にして下さい．
Non-integer cannot use as a key of an integer hash
  添字に'`key_int_hash`'を指定した配列で， '`integer`'以外の添字を使っています． 添字は'`integer`'にして下さい．
Warning: Predicate follow/3 requires feature in the 2nd argument
  組み込み述語'`follow/3`'の第2引数が， 素性名になっていません．素性ではない素性構造を指定しているか， 素性名であることを示す"`\`"が抜けているかしているので， 正しく指定して下さい．
Warning: Predicate restriction/2 requires feature in the 2nd argument
  組み込み述語'`restriction/2`'の第2引数が， 素性名になっていません．素性ではない素性構造を指定しているか， 素性名であることを示す"`\`"が抜けているかしているので， 正しく指定して下さい．
strtotype/2 requires a string Warning: strtotype/2 requires a string
  組み込み述語'`strtotype/2`'の第1引数が， '`string`'になっていません． 型名を表す'`string`'にして下さい．
Warning: listtostr requires a list
  組み込み述語'`listtostr/2`'の第1引数が， '`list`'になっていません．第1引数は， 必ず'`integer`'の'`list`'にして下さい．
Warning: listtostr requires a list of integer
  組み込み述語'`listtostr`'の第1引数のリストの中に， '`integer`'でない要素が含まれています．第1引数は， 要素は全て'`integer`'の'`list`'にして下さい．
Warning: strprint/1 requires a string
  組み込み述語'`strprint/1`'の引数が， '`string`'になっていません． 引数は'`string`'にして下さい．
Warning: strprintln/1 requires a string
  組み込み述語'`strprintln/1`'の引数が， '`string`'になっていません． 引数は'`string`'にして下さい．

4章 文法 6章 Programming Tips

目次 LiLFeSドキュメント LiLFeSホームページ 辻井研究室