Warning: this is an htmlized version!
The original is here, and
the conversion rules are here.
/* This file:
 *   http://angg.twu.net/luatree/luatree.mac.html
 *   http://angg.twu.net/luatree/luatree.mac
 *           (find-angg "luatree/luatree.mac")
 * See also:
 *   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>
 * License: Public Domain.
 *
 * (defun m  () (interactive) (find-angg "luatree/luatree.mac"))
 * (defun li () (interactive) (find-angg "luatree/luatree.lisp"))
 * (defun lu () (interactive) (find-angg "luatree/luatree.lua"))
*/

luatreedir    : pathname_directory(load_pathname);
load            (concat(luatreedir, "luatree.lisp"));
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)
load ("/tmp/luatree/luatree.mac");
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)
load ("~/luatree/luatree.mac");
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:
*/