@node Introduction
@chapter Introduction

@cindex source tracking
@cindex parse result
@cindex concrete syntax tree

@sysname{} is a portable, implementation-independent version of the
@commonlisp{} function @speclink{f,read}, a corresponding readtable and
a quasiquotation facility.  As opposed to existing
implementation-specific versions of @speclink{f,read}, @sysname{} uses
generic functions to allow clients to customize the exact behavior, such
as the interpretation of tokens.

Another unusual feature of @sysname{} is its ability to, at the discretion
of the client, recover from many syntax errors, continue reading and
return a result that somewhat resembles what would have been returned in
case the syntax had been valid.

Furthermore, @sysname{} can be used as a @emph{source tracking}
reader, which is accomplished through a mode of operation that
produces @emph{parse results} which wrap the @commonlisp{} expressions
in objects that can also contain information about the positions in
the source code of those expressions.  One example of such parse
results are @emph{concrete syntax trees}
@footnote{See: @url{https://github.com/s-expressionists/Concrete-Syntax-Tree}}.
