Функции ввода
В этом разделе описаны функции и переменные Lisp, относящиеся к чтению.
В приведённых ниже функциях stream обозначает входной поток (см. предыдущий раздел). Если stream равен nil или не указан, используется значение standard-input.
При обнаружении незавершённого списка, вектора или строки во время чтения сигнализируется ошибка end-of-file.
- Функция: read &optional stream
Эта функция считывает из stream одно текстовое выражение Lisp и возвращает его в виде объекта Lisp. Это основная функция ввода Lisp.
- Функция: read-from-string string &optional start end
-
Эта функция считывает первое текстовое выражение Lisp из текста в string. Она возвращает ячейку-конс, у которой CAR — это выражение, а CDR — целое число, указывающее позицию следующего оставшегося символа в строке (то есть первого несчитанного символа).
Если задан start, чтение начинается с индекса start в строке (первый символ имеет индекс 0). Если задан end, чтение принудительно прекращается непосредственно перед этим индексом, как если бы остальной части строки не существовало.
Например:
(read-from-string "(setq x 55) (setq y 5)") ⇒ ((setq x 55) . 11)(read-from-string "\"A short string\"") ⇒ ("A short string" . 16);; Read starting at the first character. (read-from-string "(list 112)" 0) ⇒ ((list 112) . 10);; Read starting at the second character. (read-from-string "(list 112)" 1) ⇒ (list . 5);; Read starting at the seventh character, ;; and stopping at the ninth. (read-from-string "(list 112)" 6 8) ⇒ (11 . 8)
- Функция: read-positioning-symbols &optional stream
Эта функция считывает из stream одно текстовое выражение, как это делает
read, но дополнительно устанавливает для считанных символов позиции в stream, в которых они встретились. Позиция не устанавливается только для символаnil— в целях повышения эффективности. См. Символы с позицией. Эта функция используется байт-компилятором.
- Переменная: standard-input
Эта переменная содержит входной поток по умолчанию — поток, который использует
read, если аргумент stream равенnil. По умолчанию используетсяt, то есть минибуфер.
- Переменная: read-circle
Если значение этой переменной не равно
nil, она разрешает чтение циклических и совместно используемых структур. См. Синтаксис чтения циклических объектов. По умолчанию её значение —t.
При чтении из стандартных потоков ввода-вывода процесса Emacs или записи в них в пакетном режиме иногда необходимо обеспечить чтение и запись произвольных двоичных данных без изменений и/или отключить преобразование символов новой строки в пары CR-LF и обратно. Эта проблема возникает только в MS-Windows и MS-DOS, но не на POSIX-хостах. Следующая функция позволяет управлять режимом ввода-вывода любого стандартного потока процесса Emacs.
- Функция: set-binary-mode stream mode
Переключает stream в двоичный режим ввода-вывода или текстовый режим. Если значение mode не равно
nil, включается двоичный режим, в противном случае — текстовый. Значением stream может бытьstdin,stdoutилиstderr. В качестве побочного эффекта эта функция сбрасывает все ожидающие вывода данные stream и возвращает предыдущее значение режима ввода-вывода для stream. На POSIX-хостах она всегда возвращает значение, отличное отnil, и ничего не делает, кроме сброса ожидающих вывода данных.
- Функция: readablep object
-
Этот предикат сообщает, имеет ли object читаемый синтаксис, то есть можно ли вывести его, а затем прочитать обратно с помощью считывателя Emacs Lisp. Если это невозможно, функция возвращает
nil; если возможно, функция возвращает печатное представление (с помощьюprin1, см. Функции вывода) объекта object.
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/Input-Functions.html