Spec-Zone.ru › Elisp

Концепции таблицы синтаксиса

Таблица синтаксиса — это структура данных, которая может использоваться для поиска класса синтаксиса и других синтаксических свойств каждого символа. Таблицы синтаксиса используются программами Lisp для сканирования и перемещения по тексту.

Внутренне, таблица синтаксиса является char-таблицей (см. Таблицы символов). Элемент с индексом c описывает символ с кодом c; его значение — ячейка cons, которая определяет синтаксис данного символа. Подробности см. в Внутреннее устройство таблицы синтаксиса. Однако вместо использования aset и aref для изменения и проверки содержимого таблицы синтаксиса, вы обычно должны использовать функции более высокого уровня char-syntax и modify-syntax-entry, описание которых представлено в Функции таблицы синтаксиса.

Функция: syntax-table-p объект

Эта функция возвращает t, если объект является таблицей синтаксиса.

Каждый буфер имеет свой собственный основной режим, и каждый основной режим имеет своё представление о классе синтаксиса различных символов. Например, в режиме Lisp символ ‘;’ начинает комментарий, а в режиме C — завершает оператор. Для поддержки таких вариаций таблица синтаксиса является локальной для каждого буфера. Как правило, каждый основной режим имеет свою собственную таблицу синтаксиса, которую он устанавливает во всех буферах, использующих этот режим. Например, переменная emacs-lisp-mode-syntax-table содержит таблицу синтаксиса, используемую режимом Emacs Lisp, а c-mode-syntax-table — таблицу синтаксиса, используемую режимом C. Изменение таблицы синтаксиса основного режима изменяет синтаксис во всех буферах этого режима, а также в любых буферах, которые впоследствии будут переведены в этот режим. Иногда несколько похожих режимов используют одну таблицу синтаксиса. См. Примеры основных режимов для примера настройки таблицы синтаксиса.

Таблица синтаксиса может наследовать от другой таблицы синтаксиса, которая называется её родительской таблицей синтаксиса. Таблица синтаксиса может оставить класс синтаксиса некоторых символов неопределённым, присвоив им класс «наследовать»; такой символ затем приобретает класс синтаксиса, указанный родительской таблицей синтаксиса (см. Таблица классов синтаксиса). Emacs определяет стандартную таблицу синтаксиса, которая является таблицей синтаксиса по умолчанию и также является таблицей синтаксиса, используемой в режиме Fundamental.

Функция: standard-syntax-table

Эта функция возвращает стандартную таблицу синтаксиса, которая используется в режиме Fundamental.

Таблицы синтаксиса не используются читателем Emacs Lisp, который имеет свои встроенные синтаксические правила, которые нельзя изменить. (Некоторые системы Lisp предоставляют способы переопределения синтаксиса чтения, но мы решили исключить эту функцию из Emacs Lisp для простоты.)

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

Spec-Zone.ru

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