本文整理匯總了Python中ast.FloorDiv方法的典型用法代碼示例。如果您正苦於以下問題:Python ast.FloorDiv方法的具體用法?Python ast.FloorDiv怎麽用?Python ast.FloorDiv使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類ast
的用法示例。
在下文中一共展示了ast.FloorDiv方法的14個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: visit_AugAssign
# 需要導入模塊: import ast [as 別名]
# 或者: from ast import FloorDiv [as 別名]
def visit_AugAssign(self, node):
# XXX apparently no signed context required for augmented assigns
left, op, right = node.target, node.op, node.value
isFunc = False
pre, suf = "", ""
if isinstance(op, (ast.Add, ast.Sub, ast.Mult, ast.Mod, ast.FloorDiv)):
pre, suf = self.inferBinaryOpCast(node, left, right, op)
elif isinstance(op, (ast.LShift, ast.RShift)):
isFunc = True
pre, suf = self.inferShiftOpCast(node, left, right, op)
self.visit(left)
self.write(" := ")
self.write(pre)
if isFunc:
self.write("%s(" % opmap[type(op)])
self.visit(left)
if isFunc:
self.write(", ")
else:
self.write(" %s " % opmap[type(op)])
self.visit(right)
if isFunc:
self.write(")")
self.write(suf)
self.write(";")
示例2: term_rewrite
# 需要導入模塊: import ast [as 別名]
# 或者: from ast import FloorDiv [as 別名]
def term_rewrite(head, tail):
if tail:
for op, each in tail:
head = ast.BinOp(
head,
{
'*': ast.Mult,
'@': ast.MatMult,
'%': ast.Mod,
'//': ast.FloorDiv,
'/': ast.Div
}[op.value](),
each,
**loc @ op,
)
return head
示例3: augassign_rewrite
# 需要導入模塊: import ast [as 別名]
# 或者: from ast import FloorDiv [as 別名]
def augassign_rewrite(it: Tokenizer):
return {
'+=': ast.Add,
'-=': ast.Sub,
'*=': ast.Mult,
'/=': ast.Div,
'//=': ast.FloorDiv,
'@=': ast.MatMult,
'%=': ast.Mod,
'&=': ast.BitAnd,
'|=': ast.BitOr,
'^=': ast.BitXor,
'<<=': ast.LShift,
'>>=': ast.RShift,
'**=': ast.Pow,
}[it.value]
示例4: visit_FloorDiv
# 需要導入模塊: import ast [as 別名]
# 或者: from ast import FloorDiv [as 別名]
def visit_FloorDiv(self, node):
assert False, 'should never reach FloorDiv'
示例5: visit_BinOp
# 需要導入模塊: import ast [as 別名]
# 或者: from ast import FloorDiv [as 別名]
def visit_BinOp(self, node):
left, op, right = node.left, node.op, node.right
if isinstance(op, ast.Pow):
return 'Math.pow({}, {})'.format(
self.visit(left), self.visit(right)
)
elif isinstance(op, ast.FloorDiv):
return 'Math.floor({} / {})'.format(
self.visit(left), self.visit(right)
)
return '({} {} {})'.format(
self.visit(left), self.visit(op), self.visit(right)
)
示例6: stringify_operation
# 需要導入模塊: import ast [as 別名]
# 或者: from ast import FloorDiv [as 別名]
def stringify_operation(op: Any) -> str:
if isinstance(op, ast.Add):
return '+'
if isinstance(op, ast.Sub):
return '-'
if isinstance(op, ast.Mult):
return '*'
if isinstance(op, ast.Div) or isinstance(op, ast.FloorDiv):
return '/'
return str(op)
示例7: visit_BinOp
# 需要導入模塊: import ast [as 別名]
# 或者: from ast import FloorDiv [as 別名]
def visit_BinOp(self, node: ast.BinOp) -> Any:
"""Recursively visit the left and right operand, respectively, and apply the operation on the results."""
# pylint: disable=too-many-branches
left = self.visit(node=node.left)
right = self.visit(node=node.right)
if isinstance(node.op, ast.Add):
result = left + right
elif isinstance(node.op, ast.Sub):
result = left - right
elif isinstance(node.op, ast.Mult):
result = left * right
elif isinstance(node.op, ast.Div):
result = left / right
elif isinstance(node.op, ast.FloorDiv):
result = left // right
elif isinstance(node.op, ast.Mod):
result = left % right
elif isinstance(node.op, ast.Pow):
result = left**right
elif isinstance(node.op, ast.LShift):
result = left << right
elif isinstance(node.op, ast.RShift):
result = left >> right
elif isinstance(node.op, ast.BitOr):
result = left | right
elif isinstance(node.op, ast.BitXor):
result = left ^ right
elif isinstance(node.op, ast.BitAnd):
result = left & right
elif isinstance(node.op, ast.MatMult):
result = left @ right
else:
raise NotImplementedError("Unhandled op of {}: {}".format(node, node.op))
self.recomputed_values[node] = result
return result
示例8: binop
# 需要導入模塊: import ast [as 別名]
# 或者: from ast import FloorDiv [as 別名]
def binop(self, block, node, var=None):
if var is None:
var = self.add_variable(None)
left = self.expression(block, node.left)
right = self.expression(block, node.right)
if isinstance(node.op, ast.Add):
op = Operator.add
elif isinstance(node.op, ast.Sub):
op = Operator.subtract
elif isinstance(node.op, ast.Mult):
op = Operator.multiply
elif isinstance(node.op, ast.Div):
op = Operator.divide
elif isinstance(node.op, ast.FloorDiv):
op = Operator.divide_int
elif isinstance(node.op, ast.Mod):
op = Operator.mod
elif isinstance(node.op, ast.Pow):
op = Operator.pow
elif isinstance(node.op, ast.BitAnd):
op = Operator.bit_and
elif isinstance(node.op, ast.BitOr):
op = Operator.bit_or
elif isinstance(node.op, ast.BitXor):
op = Operator.bit_xor
elif isinstance(node.op, ast.LShift):
op = Operator.shift_left
elif isinstance(node.op, ast.RShift):
op = Operator.shift_right
else:
raise Exception('Unexpected BinOp (%s)'%(node.op.__class__))
operation = BinaryOperation(left, op, right)
assignment = Assignment(var, operation)
block.add(assignment)
return var
#Parses a unary uperation (AST UnaryOp)
示例9: p_augassign_12
# 需要導入模塊: import ast [as 別名]
# 或者: from ast import FloorDiv [as 別名]
def p_augassign_12(p):
'''augassign : DOUBLESLASHEQUAL'''
# 1
p[0] = ast.FloorDiv(rule=inspect.currentframe().f_code.co_name, **p[1][1])
# print_stmt: 'print' ( [ test (',' test)* [','] ] |
# '>>' test [ (',' test)+ [','] ] )
示例10: p_term_star_4
# 需要導入模塊: import ast [as 別名]
# 或者: from ast import FloorDiv [as 別名]
def p_term_star_4(p):
'''term_star : DOUBLESLASH factor'''
# 1 2
p[0] = [ast.FloorDiv(rule=inspect.currentframe().f_code.co_name, **p[1][1]), p[2]]
示例11: p_term_star_8
# 需要導入模塊: import ast [as 別名]
# 或者: from ast import FloorDiv [as 別名]
def p_term_star_8(p):
'''term_star : term_star DOUBLESLASH factor'''
# 1 2 3
p[0] = p[1] + [ast.FloorDiv(rule=inspect.currentframe().f_code.co_name, **p[2][1]), p[3]]
# factor: ('+'|'-'|'~') factor | power
示例12: inferBinaryOpCast
# 需要導入模塊: import ast [as 別名]
# 或者: from ast import FloorDiv [as 別名]
def inferBinaryOpCast(self, node, left, right, op):
ns, os = node.vhd.size, node.vhdOri.size
ds = ns - os
if ds > 0:
if isinstance(left.vhd, vhd_vector) and isinstance(right.vhd, vhd_vector):
if isinstance(op, (ast.Add, ast.Sub)):
left.vhd.size = ns
# in general, resize right also
# for a simple name, resizing is not necessary
if not isinstance(right, ast.Name):
right.vhd.size = ns
node.vhdOri.size = ns
elif isinstance(op, ast.Mod):
right.vhd.size = ns
node.vhdOri.size = ns
elif isinstance(op, ast.FloorDiv):
left.vhd.size = ns
node.vhdOri.size = ns
elif isinstance(op, ast.Mult):
left.vhd.size += ds
node.vhdOri.size = ns
else:
raise AssertionError("unexpected op %s" % op)
elif isinstance(left.vhd, vhd_vector) and isinstance(right.vhd, vhd_int):
if isinstance(op, (ast.Add, ast.Sub, ast.Mod, ast.FloorDiv)):
left.vhd.size = ns
node.vhdOri.size = ns
elif isinstance(op, ast.Mult):
left.vhd.size += ds
node.vhdOri.size = 2 * left.vhd.size
else:
raise AssertionError("unexpected op %s" % op)
elif isinstance(left.vhd, vhd_int) and isinstance(right.vhd, vhd_vector):
if isinstance(op, (ast.Add, ast.Sub, ast.Mod, ast.FloorDiv)):
right.vhd.size = ns
node.vhdOri.size = ns
elif isinstance(op, ast.Mult):
node.vhdOri.size = 2 * right.vhd.size
else:
raise AssertionError("unexpected op %s" % op)
pre, suf = self.inferCast(node.vhd, node.vhdOri)
if pre == "":
pre, suf = "(", ")"
return pre, suf
示例13: inferBinOpType
# 需要導入模塊: import ast [as 別名]
# 或者: from ast import FloorDiv [as 別名]
def inferBinOpType(self, node):
left, op, right = node.left, node.op, node.right
if isinstance(left.vhd, (vhd_boolean, vhd_std_logic)):
left.vhd = vhd_unsigned(1)
if isinstance(right.vhd, (vhd_boolean, vhd_std_logic)):
right.vhd = vhd_unsigned(1)
if isinstance(right.vhd, vhd_unsigned):
if maybeNegative(left.vhd) or \
(isinstance(op, ast.Sub) and not hasattr(node, 'isRhs')):
right.vhd = vhd_signed(right.vhd.size + 1)
if isinstance(left.vhd, vhd_unsigned):
if maybeNegative(right.vhd) or \
(isinstance(op, ast.Sub) and not hasattr(node, 'isRhs')):
left.vhd = vhd_signed(left.vhd.size + 1)
l, r = left.vhd, right.vhd
ls, rs = l.size, r.size
if isinstance(r, vhd_vector) and isinstance(l, vhd_vector):
if isinstance(op, (ast.Add, ast.Sub)):
s = max(ls, rs)
elif isinstance(op, ast.Mod):
s = rs
elif isinstance(op, ast.FloorDiv):
s = ls
elif isinstance(op, ast.Mult):
s = ls + rs
else:
raise AssertionError("unexpected op %s" % op)
elif isinstance(l, vhd_vector) and isinstance(r, vhd_int):
if isinstance(op, (ast.Add, ast.Sub, ast.Mod, ast.FloorDiv)):
s = ls
elif isinstance(op, ast.Mult):
s = 2 * ls
else:
raise AssertionError("unexpected op %s" % op)
elif isinstance(l, vhd_int) and isinstance(r, vhd_vector):
if isinstance(op, (ast.Add, ast.Sub, ast.Mod, ast.FloorDiv)):
s = rs
elif isinstance(op, ast.Mult):
s = 2 * rs
else:
raise AssertionError("unexpected op %s" % op)
if isinstance(l, vhd_int) and isinstance(r, vhd_int):
node.vhd = vhd_int()
elif isinstance(l, (vhd_signed, vhd_int)) and isinstance(r, (vhd_signed, vhd_int)):
node.vhd = vhd_signed(s)
elif isinstance(l, (vhd_unsigned, vhd_int)) and isinstance(r, (vhd_unsigned, vhd_int)):
node.vhd = vhd_unsigned(s)
else:
node.vhd = vhd_int()
node.vhdOri = copy(node.vhd)
示例14: visit_BinOp
# 需要導入模塊: import ast [as 別名]
# 或者: from ast import FloorDiv [as 別名]
def visit_BinOp (self, node):
if type (node.op) == ast.FloorDiv:
if self.allowOperatorOverloading:
self.emit ('__floordiv__ (')
self.visitSubExpr (node, node.left)
self.emit (', ')
self.visitSubExpr (node, node.right)
self.emit (')')
else:
self.emit ('Math.floor (')
self.visitSubExpr (node, node.left)
self.emit (' / ')
self.visitSubExpr (node, node.right)
self.emit (')')
elif (
type (node.op) in (ast.Pow, ast.MatMult) or
(type (node.op) == ast.Mod and (self.allowOperatorOverloading or not self.allowJavaScriptMod)) or
(type (node.op) in (
ast.Mult, ast.Div, ast.Add, ast.Sub,
ast.LShift, ast.RShift, ast.BitOr, ast.BitXor, ast.BitAnd
) and self.allowOperatorOverloading)
):
self.emit ('{} ('.format (self.filterId (
# Non-overloaded
('__floordiv__' if self.allowOperatorOverloading else 'Math.floor') if type (node.op) == ast.FloorDiv else
('__pow__' if self.allowOperatorOverloading else 'Math.pow') if type (node.op) == ast.Pow else
'__matmul__' if type (node.op) == ast.MatMult else
('__jsmod__' if self.allowJavaScriptMod else '__mod__') if type (node.op) == ast.Mod else
# Overloaded arithmetic
'__mul__' if type (node.op) == ast.Mult else
'__truediv__' if type (node.op) == ast.Div else
'__add__' if type (node.op) == ast.Add else
'__sub__' if type (node.op) == ast.Sub else
# Overloaded bitwise
'__lshift__' if type (node.op) == ast.LShift else
'__rshift__' if type (node.op) == ast.RShift else
'__or__' if type (node.op) == ast.BitOr else
'__xor__' if type (node.op) == ast.BitXor else
'__and__' if type (node.op) == ast.BitAnd else
'Never here'
)))
self.visit (node.left)
self.emit (', ')
self.visit (node.right)
self.emit (')')
else:
self.visitSubExpr (node, node.left)
self.emit (' {} '.format (self.operators [type (node.op)][0]))
self.visitSubExpr (node, node.right)