def ptree(t): def kids(x): if isinstance(x, Branch): return x.args else: return [] def show(x): if isinstance(x, Branch): return x.type else: return repr(x) return pretty_tree(t, kids, show)
def pretty_parse_tree(x): """object -> str""" Pair = namedtuple('Pair', 'first second') p = lambda x, y: Pair(x, y) def kids(x): """object -> list(object)""" # if isinstance(x, (Graph, SubGraph)): if isinstance(x, (Graph, Lane)): return [p('stmts', x.stmts)] elif isinstance(x, (Graph, Pool)): return [p('stmts', x.stmts)] elif isinstance(x, (Node, DefAttrs)): return [p('attrs', x.attrs)] elif isinstance(x, Edge): return [p('nodes', x.nodes), p('attrs', x.attrs)] elif isinstance(x, Pair): return x.second else: return [] def show(x): """object -> str""" if isinstance(x, Pair): return x.first elif isinstance(x, Graph): return 'Graph [id=%s, type=%s]' % ( x.id, x.type) # elif isinstance(x, SubGraph): # return 'SubGraph [id=%s]' % (x.id,) elif isinstance(x, Lane): return 'Lane [id=%s]' % (x.id,) elif isinstance(x, Pool): return 'Pool [id=%s]' % (x.id,) elif isinstance(x, Edge): return 'Edge' elif isinstance(x, Attr): return 'Attr [name=%s, value=%s]' % (x.name, x.value) elif isinstance(x, DefAttrs): return 'DefAttrs [object=%s]' % (x.object,) elif isinstance(x, Node): return 'Node [id=%s]' % (x.id,) else: return x return pretty_tree(x, kids, show)
def pprint(tree): def kids(x): if isinstance(x, Grouping): return x.kids else: return [] def show(x): if isinstance(x, Lambda): return '{Lambda}' elif isinstance(x, Form): return '{Form}' elif isinstance(x, Expression): return '{Expression}' elif isinstance(x, Program): return '{Program}' else: return tokval(x) return pretty_tree(tree, kids, show)
def ptree(tree): def kids(x): if isinstance(x, Grouping): return x.kids else: return [] def show(x): #print "show(%r)" % x if isinstance(x, Program): return '{Program}' elif isinstance(x, Environment): return '{Environment}' elif isinstance(x, Membrane): return '{Membrane}' elif isinstance(x, Statement): return '{Statement}' else: return repr(x) return pretty_tree(tree, kids, show)
def ptree(tree): def kids(x): if isinstance(x, Grouping): return x.kids else: return [] def show(x): # print "show(%r)" % x if isinstance(x, Program): return "{Program}" elif isinstance(x, Environment): return "{Environment}" elif isinstance(x, Membrane): return "{Membrane}" elif isinstance(x, Statement): return "{Statement}" else: return repr(x) return pretty_tree(tree, kids, show)
def pretty_parse_tree(x): """object -> str""" Pair = namedtuple('Pair', 'first second') p = lambda x, y: Pair(x, y) def kids(x): """object -> list(object)""" if isinstance(x, (Graph, SubGraph)): return [p('stmts', x.stmts)] elif isinstance(x, (Node, DefAttrs)): return [p('attrs', x.attrs)] elif isinstance(x, Edge): return [p('nodes', x.nodes), p('attrs', x.attrs)] elif isinstance(x, Pair): return x.second else: return [] def show(x): """object -> str""" if isinstance(x, Pair): return x.first elif isinstance(x, Graph): return 'Graph [id=%s, strict=%r, type=%s]' % ( x.id, x.strict is not None, x.type) elif isinstance(x, SubGraph): return 'SubGraph [id=%s]' % (x.id,) elif isinstance(x, Edge): return 'Edge' elif isinstance(x, Attr): return 'Attr [name=%s, value=%s]' % (x.name, x.value) elif isinstance(x, DefAttrs): return 'DefAttrs [object=%s]' % (x.object,) elif isinstance(x, Node): return 'Node [id=%s]' % (x.id,) else: return str(x) return pretty_tree(x, kids, show)
def pretty_parse_tree(x): """object -> str""" Pair = namedtuple(u'Pair', u'first second') p = lambda x, y: Pair(x, y) def kids(x): """object -> list(object)""" if isinstance(x, (Graph, SubGraph)): return [p(u'stmts', x.stmts)] elif isinstance(x, (Node, DefAttrs)): return [p(u'attrs', x.attrs)] elif isinstance(x, Edge): return [p(u'nodes', x.nodes), p(u'attrs', x.attrs)] elif isinstance(x, Pair): return x.second else: return [] def show(x): """object -> str""" if isinstance(x, Pair): return x.first elif isinstance(x, Graph): return u'Graph [id=%s, strict=%r, type=%s]' % (x.id, x.strict is not None, x.type) elif isinstance(x, SubGraph): return u'SubGraph [id=%s]' % (x.id, ) elif isinstance(x, Edge): return u'Edge' elif isinstance(x, Attr): return u'Attr [name=%s, value=%s]' % (x.name, x.value) elif isinstance(x, DefAttrs): return u'DefAttrs [object=%s]' % (x.object, ) elif isinstance(x, Node): return u'Node [id=%s]' % (x.id, ) else: return unicode(x) return pretty_tree(x, kids, show)