예제 #1
0
 def build_ExtSlice(ctx, base, extslice):
     sub_exprs = []
     for expr in extslice.dims:
         sub_type = type(expr)
         if sub_type is ast.Index:
             sub_exprs.append(build_Index(ctx, base, expr))
         elif sub_type is ast.Slice:
             sub_exprs.append(build_SliceExpr(ctx, base, expr))
         elif sub_type is ast.Ellipsis:
             sub_exprs.append(Dots(base.range()))
         else:
             raise NotSupportedError(
                 base.range(), "slicing multiple dimensions with "
                 "{} not supported".format(sub_type))
     return sub_exprs
예제 #2
0
 def build_Name(ctx, expr):
     r = ctx.make_range(expr.lineno, expr.col_offset,
                        expr.col_offset + len(expr.id))
     if expr.id.startswith(_reserved_prefix):
         raise NotSupportedError(
             r, "names of variables used in JIT-ed functions "
             "can't start with " + _reserved_prefix)
     if expr.id == "True":
         return TrueLiteral(r)
     elif expr.id == "False":
         return FalseLiteral(r)
     elif expr.id == "None":
         return NoneLiteral(r)
     elif expr.id == "Ellipsis":
         return Dots(r)
     return Var(Ident(r, expr.id))
예제 #3
0
 def build_Ellipsis(ctx, expr):
     r = ctx.make_range(expr.lineno, expr.col_offset,
                        expr.col_offset + 3)  # len("...") == 3
     return Dots(r)