unroller.py 文件源码

python
阅读 34 收藏 0 点赞 0 评论 0

项目:TerpreT 作者: 51alg 项目源码 文件源码
def subscript_to_tuple(subscript):
    '''Convert a subscripted name of the form Name[(i1, ..., in)] to a
    tuple ('Name', i1, ..., in).

    '''
    def err():
        raise ValueError('Unexpected kind of slice: {}'.format(astunparse.unparse(subscript)))

    # Get subscript name.
    if isinstance(subscript.value, ast.Name):
        name = subscript.value.id
    else:
        err()

    # Get indices.
    if isinstance(subscript.slice, ast.Index):
        if isinstance(subscript.slice.value, ast.Num):
            indices = [subscript.slice.value]
        elif isinstance(subscript.slice.value, ast.Tuple):
            indices = subscript.slice.value.elts
        else:
            err()
    else:
        err()

    # Convert indices to python numbers.
    int_indices = []
    for i in indices:
        if isinstance(i, ast.Num):
            int_indices.append(i.n)
        else:
            err()

    return tuple([name] + int_indices)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号