expr : expr LPAREN expr_list RPAREN
            | expr LPAREN RPAREN

def p_funcall_expr(p):
    """expr : expr LPAREN expr_list RPAREN
            | expr LPAREN RPAREN
    """
    if (len(p) == 5 and len(p[3]) == 1 and p[3][0].__class__ is node.expr and
            p[3][0].op == ":" and not p[3][0].args):
        # foo(:) => ravel(foo)
        p[0] = node.funcall(
            func_expr=node.ident("ravel"), args=node.expr_list([p[1]]))
    else:
        args = node.expr_list() if len(p) == 4 else p[3]
        assert isinstance(args, node.expr_list)
        p[0] = node.funcall(func_expr=p[1], args=args)