本文整理汇总了Python中ast.MatMult方法的典型用法代码示例。如果您正苦于以下问题:Python ast.MatMult方法的具体用法?Python ast.MatMult怎么用?Python ast.MatMult使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ast
的用法示例。
在下文中一共展示了ast.MatMult方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: term_rewrite
# 需要导入模块: import ast [as 别名]
# 或者: from ast import MatMult [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
示例2: augassign_rewrite
# 需要导入模块: import ast [as 别名]
# 或者: from ast import MatMult [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]
示例3: visit_AugAssign
# 需要导入模块: import ast [as 别名]
# 或者: from ast import MatMult [as 别名]
def visit_AugAssign( s, node ):
"""Return the behavioral RTLIR of a non-blocking assignment
If the given AugAssign is not @= or <<=, throw PyMTLSyntaxError
"""
if isinstance( node.op, (ast.LShift, ast.MatMult) ):
value = s.visit( node.value )
targets = [ s.visit( node.target ) ]
blocking = False if isinstance(node.op, ast.LShift) else True
ret = bir.Assign( targets, value, blocking )
ret.ast = node
return ret
raise PyMTLSyntaxError( s.blk, node,
'invalid operation: augmented assignment is not @= or <<= assignment!' )
示例4: visit_BinOp
# 需要导入模块: import ast [as 别名]
# 或者: from ast import MatMult [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
示例5: visit_BinOp
# 需要导入模块: import ast [as 别名]
# 或者: from ast import MatMult [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)