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 ;
s and ,
s for the developer.
SEL APIs are available in:
- Common Lisp documented in the SEL manual, and
-
Python available in the
asts
package at pypi.org/asts
This material is based upon work supported by the U.S. Air Force, DARPA, the U.S. Navy and the U.S. 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.