Here is an introduction blog[1] and the related mode[2]
[1] https://emacsredux.com/blog/2013/06/13/using-emacs-as-a-data...
[2] https://github.com/emacs-mirror/emacs/blob/master/lisp/progm...