No description, website, or topics provided.
Switch branches/tags
Nothing to show
Clone or download
robert-strandh Merge pull request #13 from scymtym/separate-mumble-body-no-listify
SEPARATE-{ORDINARY,FUNCTION}-BODY do not listify the returned body
Latest commit 8d8c5ab Jun 4, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Destructuring Signal {NULL,CONS}-STRUCTURE-MISMATCH-ERROR when CST destructuring fails Jun 3, 2018
Documentation Remove class NULL-CST from documentation. Aug 5, 2017
Lambda-list Remove unnecessary package qualification in Lambda-list/scanner-actio… Jun 2, 2018
Source-info Change the convention of the HEIGHT slot. Apr 12, 2017
Test Remove class NULL-CST. Aug 5, 2017
.gitignore Provide file indicating to Git what files to ignore. Apr 20, 2017
LICENSE.text New file containing license. May 26, 2018
README Provide REAME information for this library. Apr 20, 2017
bindings.lisp Remove class NULL-CST. Aug 5, 2017
body.lisp SEPARATE-{ORDINARY,FUNCTION}-BODY do not listify the returned body Jun 4, 2018
concrete-syntax-tree-base.asd Initial acclimation condition reporter Jun 3, 2018
concrete-syntax-tree.asd Make :LICENSE keyword argument more machine friendly. May 26, 2018
condition-reporters-english.lisp New condition type NULL-CST-REQUIRED Jun 3, 2018
conditions.lisp New condition type NULL-CST-REQUIRED Jun 3, 2018
cons-cst.lisp Provide explicit DEEFGENERIC forms for function SECOND ... TENTH. Oct 26, 2017
cst-from-expression.lisp Handle self-referencing expressions. Dec 25, 2017
cst.lisp Shuffle definitions to avoid style warnings from redefining generic f… May 29, 2018
cstify.lisp Use the lexical variable rather than calling CSTify again. Jan 29, 2018
declarations.lisp Define CANONICALIZE-DECLARATIONS in terms of CSTs. Jul 20, 2017
generic-functions.lisp SEPARATE-{ORDINARY,FUNCTION}-BODY do not listify the returned body Jun 4, 2018
list-structure.lisp Fix a small typo. Jun 3, 2018
listify.lisp Remove class NULL-CST. Aug 5, 2017
packages.lisp Signal {NULL,CONS}-STRUCTURE-MISMATCH-ERROR when CST destructuring fails Jun 3, 2018
reconstruct.lisp Cosmetic changes in reconstruct.lisp, Destructuring/required-paramete… Jun 2, 2018

README

This library is intended to solve the problem of source tracking for
Common Lisp code.

By "source tracking", we mean that code elements that have a known
origin in the form of a position in a file or in an editor buffer are
associated with some kind of information about this origin.

Since the exact nature of such origin information depends on the
Common Lisp implementation and the purpose of wanting to track that
origin, we do not impose a particular structure of this information.
Instead, we provide utilities for manipulating source code in the form
of what we call concrete syntax trees (CSTs for short) that preserve
this information about the origin.

For example, we provide code utilities for canonicalizing
declarations, parsing lambda lists, separating declarations and
documentation strings and code bodies, checking whether a form is a
proper list, etc.  All these utilities manipulate the code in the form
of a CST, and provide CSTs as a result of the manipulation that
propagates the origin information as much as possible.

In particular, we provide an "intelligent macroexpander".  This
function takes an original CST and the result of macroexpanding the
RAW code version of that CST, and returns a new CST representing the
expanded code in such a way that as much as possible of the origin
information is preserved.