Шаг 64.
Функции ввода. Макросимволы

    На этом шаге мы рассмотрим макросимволы, используемые при организации ввода.

    Макросимволы вызывают свою функцию макроопределения по мере их прочтения функцией READ. Они способны не только сократить часто используемые сегменты кодов, но и изменять используемые в LISP файлы для более удобного использования их вручную.

    Макросимволы подразделяются на:

    Ограничивающие и неограничивающие макросимволы включают объекты во входной поток. Макросимволы комментариев не включают обьектов во входной поток.

    Ограничивающие макросимволы и комментарии ограничивают знаки, считанные функцией READ. Неограничивающие макросимволы не ограничивают знаки, считанные функцией READ, и, следовательно, могут быть распознаны как макросимволы с помощью пробелов.

    Вначале отметим функции, позволяющие работать с ограничивающими макросимволами.

    1. Если FLAG - NIL или отсутствует, то функция

    (SET-MACRO-CHAR CHARACTER DEFINITION FLAG)
компилирует DEFINITION на D-коде и создает CHARACTER в форме ограничивающего макросимвола.

    Если FLAG есть символ COMMENT, то функция SET-MACRO-CHAR создает CHARACTER в форме макросимвола комментария. В противном случае функция создает CHARACTER в форме неограничивающего макросимвола.

    2. Если FLAG - NIL или отсутствует, то функция

    (GET-MACRO-CHAR CHARACTER FLAG)
декомпилирует и возвращает определение макросимвола, связанного с CHARACTER.

    Если FLAG - не NIL, то функция GET-MACRO-CHAR возвращает LAMBDA, если CHARACTER является макросимволом. В любом случае функция возвращает NIL, если CHARACTER не является макросимволом.

    Теперь опишем ограничивающие макросимволы:

    На следующем шаге мы рассмотрим функции вывода.




Предыдущий шаг Содержание Следующий шаг