What is ast.BinOp(op, values) in Python?

Abstract Syntax Tree

ast.BinOp(left, op, right) is a class defined in the ast module that is used to express binary operations in Python in the form of an Abstract Syntax Treetree representation of source code.

When the parse() method of ast is called on a Python source code that contains binary operators such as addition or division, the ast.BinOp(left, op, right) class is invoked to convert the binary operation to an ast tree data structure.

The op parameter in the class definition refers to the binary operators such as + or - in the expression, and left and right refer to the values involved in the respective sides of the operator. op can contain the following binary operators:

  • Add
  • Sub
  • Mult
  • MatMult
  • Div
  • Mod
  • Pow
  • LShift
  • RShift
  • BitOr
  • BitXor
  • BitAnd
  • FloorDiv

Example

import ast
from pprint import pprint
class BinOpVisitor(ast.NodeVisitor):
def visit_BinOp(self, node):
print('Node type: BinOp\nFields: ', node._fields)
self.generic_visit(node)
def visit_Name(self,node):
print('Node type: Name\nFields: ', node._fields)
ast.NodeVisitor.generic_visit(self, node)
visitor = BinOpVisitor()
tree = ast.parse('a / b', mode='eval')
pprint(ast.dump(tree))
visitor.visit(tree)

Explanation

  • We define a BinOpVisitor class that extends from the parent class ast.NodeVisitor. We override the predefined visit_BinOp and visit_Name methods in the parent class, which receive the BinOp and Name nodes, respectively. In the method, we print the type and the fields inside the node and call the generic_visit() method, which invokes the propagation of visit on the children nodes of the input node.
  • We initialize a visitor object of the class BinOpVisitor.
  • We define a Python expression a and b and send it to the ast.parse() method with mode='eval', which returns the result of the expression after evaluation and stores it in tree.
  • The ast.dump() method returns a formatted string of the tree structure in tree.
  • The visit method available to the visitor objects visits all the nodes in the tree structure.
Copyright ©2024 Educative, Inc. All rights reserved