Warning: this is an htmlized version! The original is here, and the conversion rules are here.
```/* This file:
*   http://angg.twu.net/luatree/lua-tree.mac.html
*   http://angg.twu.net/luatree/lua-tree.mac
*           (find-angg "luatree/lua-tree.mac")
*   https://github.com/edrx/luatree
*   https://github.com/edrx/luatree/#introduction
*   http://angg.twu.net/eev-maxima.html#luatree
*   http://angg.twu.net/e/maxima.e.html#luatree
*   http://angg.twu.net/e/maxima.e.html#luatree-explanation
*               (find-es "maxima" "luatree")
*               (find-es "maxima" "luatree-explanation")
* Author: Eduardo Ochs <eduardoochs@gmail.com>
*
* (defun m  () (interactive) (find-angg "luatree/luatree.mac"))
* (defun li () (interactive) (find-angg "luatree/luatree.lisp"))
* (defun lu () (interactive) (find-angg "luatree/luatree.lua"))
*/

luatree1      : lambda([o], concat(    "\"", o, "\""));
luatreeop     : lambda([o], concat("[0]=\"", o, "\""));
luatreearg    : lambda([o], concat(", ", luatree1d(o)));
luatreeargs   : lambda([L], apply('concat, map(luatreearg, L)));
luatreeopargs : lambda([o], concat("{", luatreeop(op(o)), luatreeargs(args(o)), "}"));
luatree1d     : lambda([o], if atom(o) then luatree1(o) else luatreeopargs(o));
luatree       : lambda([o], print(luatree_lua(luatree1d(o))), "");   /* calls lua */

/*
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
rm -Rfv /tmp/luatree/
mkdir   /tmp/luatree/
cd      /tmp/luatree/
git clone https://github.com/edrx/luatree .

* (eepitch-maxima)
* (eepitch-kill)
* (eepitch-maxima)
luatreedir;
MV2 : 'integrate(fp(g(x))*gp(x), x, a, b) = 'integrate(fp(u), u, g(a), g(b));
luatree  (MV2);
luatree1d(luatree1d);
luatree  (luatree1d);
luatree  (luatree);

*/

/* A variant by Robert Dodier (slightly uglified). See:
* https://sourceforge.net/p/maxima/mailman/message/37690570/
* https://sourceforge.net/p/maxima/mailman/message/37690821/
* (find-maximamsg "37690570 202208 06" "RDodier: lua_table_from(e) :=")
* (find-maximamsg "37690821 202208 07" "RDodier: public domain")
*/
luatree_rd_0(__e__) :=
if atom(__e__)
then string(__e__)
else funmake(lua_table, cons([0]=op(__e__), map(luatree_rd_0, args(__e__))));
luatree_rd_1(__e__) :=
block([simp:false], string(subst(lua_table=set, luatree_rd_0(__e__()))));
luatree_rd(__e__) := (print(luatree_lua(luatree_rd_1(__e__))), "");

/*
* (eepitch-maxima)
* (eepitch-kill)
* (eepitch-maxima)
luatree_rd_0 (lambda([], 2*3 + 4/5 + 6));
luatree_rd_1 (lambda([], 2*3 + 4/5 + 6));
luatree_rd   (lambda([], 2*3 + 4/5 + 6));

*/

/*
* Local Variables:
* mode:  c
* modes: (c-mode maxima-mode)
* End:
*/
```