示例#1
0
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)
示例#3
0
文件: axio.py 项目: gatesphere/axio
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)
示例#4
0
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)
示例#5
0
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)
示例#6
0
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)
示例#7
0
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)