An abstract syntax of C for use by tools.
See syntax-for-tools for background.
We define abstract syntax trees (ASTs), and operations on them.
We have also started defining a syntax abstraction mapping from the concrete syntax to this abstract syntax. This is work in progress.
We define code ensembles as consisting of top-level ASTs and implementation environments, which are the entities manipulated by some of our tools.
We also provide make-self functions (via fty::defmake-self) for code ensembles and contained ASTs.