I haven't been working on it as of late, mostly because i'm a bit deflated from software in general, but I started working on a programming language I called Grasp.
If lisp is a list processing language, grasp is a graph programming language.
The idea was that most other data structures can be represented with a graph ( adjacency matrices are matrices, a tree is a type of directed acyclic graph, a list is a graph where each node connects to at most two nodes, etc) and so if you designed a programming language where the language is itself a graph, much like how lisp is itself a list, you could get other esoteric programming languages like APL, forth, lisp, and so on as DSLs of Grasp. Also any program you write would be its own CFG.
I started it but honestly its mostly a hot mess of vibe-coded garbage. But I may get back on it and try to clean it up.
A number of mainstream Lisp dialects including Scheme and Common Lisp support a notation for encoding graph structure, with shared substructure and cycles. It's not always well-defined to use that in writing code (e.g. a program with cycles in its source code might work as intended with interpreted, but then a compiler chokes on it), but in literals it's always okay.