SEL uses GitHub's tree-sitter generated parsers to parse dozens of
programming languages into parse trees. These parse trees are built
using GrammaTech's functional-trees applicative data structure
providing cheap copy and undo operations, efficient storage of large
populations of program variants, and fast updates. Common Lisp's
object system CLOS and generic functions power a generic
programming model providing ergonomic traversal, analysis, and
rewriting of program source code. SEL's program rewriting produces
developer-quality diffs which only change the mutated portion of the
program text, and handle indentation and the minutiae of
for the developer.
SEL APIs are available in:
astspackage at pypi.org/asts
This material is based upon work supported by the Air Force, DARPA, the Navy and the Office of Naval Research under Contract(s) No. FA8750-16-C-0007, D16PC00103, D17PC00096, FA8750-15-2-0270, N68335-17-C-0700, HR001120C0159 and FA8750-20-C-0208. Any opinions, findings and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the Air Force, DARPA, the Navy or the Office of Naval Research.