Warning: this is an htmlized version!
The original is here, and
the conversion rules are here.
# This file:
#   http://angg.twu.net/luatree/luatree.py.html
#   http://angg.twu.net/luatree/luatree.py
#           (find-angg "luatree/luatree.py")
# 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"))
# (defun p  () (interactive) (find-angg "luatree/luatree.py"))
#
# (find-es "python" "luatree")

import pathlib
import subprocess
luatree_dir    = pathlib.Path(__file__).parent
luatree_script = luatree_dir / "luatree.lua"

from sympy import Function, Symbol, AtomicExpr

def luatree_lua(str):
    p = subprocess.run(luatree_script, input=str, stdout=subprocess.PIPE, text=True)
    return p.stdout

def luatree1d(o):
    if isatom(o):
        return luatree1(o)
    else:
        return luatreeopargs(o)

isatom_py       = lambda o: isinstance(o, int) or isinstance(o, str)
isatom_sympy    = lambda o: isinstance(o, AtomicExpr)
isatom          = lambda o: isatom_py(o) or isatom_sympy(o)
luatreefunc     = lambda o: o.func.__name__
luatree1        = lambda o:     '"' + str(o) + '"'
luatreeop       = lambda s: '[0]="' + s + '"'
luatreearg      = lambda s: ', ' + s
luatreeargs     = lambda L: ''.join(list(map(luatreearg, L)))
luatreeopargs2  = lambda s,L: '{' + luatreeop(s) + luatreeargs(L) + '}'
luatreeopargs   = lambda o: luatreeopargs2(luatreefunc(o), list(map(luatree1d, o.args)))
luatree         = lambda o: print(luatree_lua(luatree1d(o)))

"""
* (eepitch-isympy)
* (eepitch-kill)
* (eepitch-isympy)
import sys
sys.path[1:1] = ["/home/edrx/luatree"]
from luatree import *

from sympy import Function, Symbol, dsolve
f   = Function('f')
x   = Symbol('x')
od  = f(x).diff(x, x) + f(x)
foo = x ** x + 42
od, foo

luatree(foo)
luatree(od)

luatreeopargs2("Pow", list(map(str, [x, x])))
luatreeopargs2("Pow", list(map(luatree1, [x, x])))
luatreeopargs(x ** x)
luatree1d(x)
luatree1d(x ** x)
luatree1d(x + x ** x)
luatree  (x + x ** x)
luatree  (x + x ** 42)
luatree  (f(x))
luatree  (od)

"""




# Local Variables:
# coding:  utf-8-unix
# End: