Spec-Zone.ru › Elisp

Отладка некорректного синтаксиса Lisp

Читатель Lisp сообщает о некорректном синтаксисе, но не может указать, где именно находится проблема. Например, ошибка «End of file during parsing» при вычислении выражения указывает на избыток открывающих круглых (или квадратных) скобок. Читатель обнаруживает этот дисбаланс в конце файла, но не может определить, где должна была стоять закрывающая скобка. Аналогично, «Invalid read syntax: ")"» указывает на избыток закрывающей скобки или отсутствие открывающей, но не сообщает, где должна находиться пропущенная скобка. Как же определить, что нужно изменить?

Если проблема заключается не просто в дисбалансе скобок, полезно попробовать нажать C-M-e (end-of-defun, см. раздел Перемещение по defun в Руководстве GNU Emacs) в начале каждого defun и посмотреть, переместит ли команда курсор в место, где, судя по всему, заканчивается этот defun. Если нет, значит, в этом defun есть проблема.

Однако несбалансированные скобки — самая распространённая синтаксическая ошибка в Lisp, и для таких случаев мы можем дать дополнительные рекомендации. (Кроме того, несоответствие можно обнаружить, просто перемещая точку по коду при включённом режиме Show Paren.)

  • Избыток открывающих скобок
  • Избыток закрывающих скобок

Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Syntax-Errors.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API