Next: , Previous: , Up: Debugging   [Contents][Index]


17.3 無効なLisp構文のデバッグ

Lispリーダーは無効な構文(invalid syntax)について報告はしますが、実際の問題箇所は報告しません。たとえば、ある式を評価中のエラー“End of file during parsing(パース中にファイル終端に達した)”は、開カッコまたは開角カッコ(open parenthese or open square bracket)が多いことを示しています。Lispリーダーはこの不一致をファイル終端で検出しましたが、本来閉カッコがあるべき箇所を解決することはできません。同様に、“Invalid read syntax: ")"(無効なread構文:)")"”は開カッコの欠落を示していますが、欠落しているカッコが属すべき場所は告げません。ならば、どうやって変更すべき箇所を探せばよいのでしょうか?

問題が単なるカッコの不一致でない場合の便利なテクニックは、各defunの先頭でC-M-eとタイプして、そのdefunの最後と思われる箇所に移動するか確認する方法です。もし移動しなければ、問題はそのdefunの内部にあります。

マッチしないカッコがLispにおいてもっとも一般的な構文エラーなので、これらのケースにたいしてさらにアドバイスすることができます(Show Parenモードを有効にしてコードにポイントを移動するだけでカッコの不一致を探しやすくなるだろう)。