#?description=Show how to navigate and dump Java AST trees
#?shortcut=
from com.pnfsoftware.jeb.client.api import IScript
from com.pnfsoftware.jeb.core.units.code.java import IJavaSourceUnit, IJavaClass
"""
Sample script for JEB Decompiler.
"""
class JavaASTDemo(IScript):
def run(self, ctx):
prj = ctx.getMainProject()
assert prj, 'Need a project'
for unit in prj.findUnits(IJavaSourceUnit):
elt = unit.getASTElement()
if isinstance(elt, IJavaClass):
for m in elt.getMethods():
self.displayTree(m)
def displayTree(self, e, level=0):
print('%s%s @ 0x%X' % (level*' ', e.getElementType(), e.getPhysicalOffset()))
if e:
elts = e.getSubElements()
for e in elts:
self.displayTree(e, level+1)