Static analysis of expl3 programs (11½): Chunks, edges, flow graphs, confidence, and reaching definitions
Over the past two months, I released three new updates of expltools, the bundle that provides the explcheck static analyzer for the expl3 programming language.
These updates include major improvements but did not yet advance the final stage of the pipeline, flow analysis, which I teased in the previous post. That’s because our work on flow analysis so far has been groundwork: figuring out how to adapt static-analysis techniques to expl3 before moving on to implementation.
In this post, I outline the flow graph structure currently used to represent expl3 code and describe our adaptation of the reaching definitions algorithm for dynamically scoped languages like expl3.