def precedence(ast): nodes = [] for e in ast: if isinstance(e, list) and e: expr = precedence(e) if isinstance(expr, list): expr = pratt_parse(expr) nodes.append(expr) else: nodes.append(e) return nodes
def precedence(node, depth): """ Parses operator precedence """ if not isinstance(node, Expr): return node return pratt_parse(node)
def __init__(self, cond, body): self.cond = pratt_parse(cond) self.body = Block(pratt_parse(body), catch_ret=False)