В языке программирования Lisp считыватель или read
функция — это синтаксический анализатор , который преобразует текстовую форму объектов Lisp в соответствующую внутреннюю структуру объекта.
В оригинальном Lisp S-выражения состояли только из символов , целых чисел и конструкторов списков и . Более поздние Lisp, достигшие кульминации в Common Lisp , добавили литералы для чисел с плавающей точкой, комплексных и рациональных чисел, строк и конструкторов для векторов.( xi... )
(x . y)
Читатель отвечает за анализ структуры списка, интернирование символов, преобразование чисел во внутреннюю форму и вызов макросов чтения.
Читатель управляется readtable
, который определяет значение каждого символа .
В отличие от большинства языков программирования, Lisp поддерживает выполнение программ во время синтаксического анализа, называемых «макросами чтения» или «макросами чтения». Они используются для расширения синтаксиса либо универсальными, либо специфическими для программы способами. Например, оператор формы кавычек может быть сокращен как . Оператор может быть определен как макрос чтения, который считывает следующий список и оборачивает его в . Аналогично, оператор обратной кавычки (` ) может быть определен как макрос чтения.(quote x)
'x
'
quote