In the programming language Lisp, the '''reader''' or '''<code>read</code> function''' is the parser which converts the textual form of Lisp objects to the corresponding internal object structure.
In the original Lisp, S-expressions consisted only of symbols, integers, and the list constructors <code>( ''x<sub>i</sub>...'' )</code> and <code>(''x'' . ''y'')</code>. Later Lisps, culminating in Common Lisp, added literals for floating-point, complex, and rational numbers, strings, and constructors for vectors.
The reader is responsible for parsing list structure, interning symbols, converting numbers to internal form, and calling read macros.
==Read table==
The reader is controlled by the <code>readtable</code>, which defines the meaning of each character.
==Read macros{{anchor|Read macros}}==
Unlike most programming languages, Lisp supports parse-time execution of programs, called "read macros" or "reader macros". These are used to extend the syntax either in universal or program-specific ways. For example, the quoted form <code>(quote ''x'')</code> operator can be abbreviated as <code>{{'}}''x''</code>. The <code>'</code> operator can be defined as a read macro which reads the following list and wraps it with <code>quote</code>. Similarly, the backquote operator (` ) can be defined as a read macro.
==References== {{Reflist}}
==Bibliography== * John McCarthy ''et al.'', ''LISP 1.5 Programmer's Manual'', MIT Press, 1962. * David A. Moon, ''MACLISP Reference Manual'', 1974. * Guy Steele, ''Common LISP: The Language'', Second Edition, 1990.
Category:Lisp (programming language) Category:Parsing