parameters: (self, ast)
return_statement: return Attribute(attr_type, '{0}.output'.format(operator_node_name))
docstring: Generate Maya data for binary operation AST node
  
          Args:
              ast (Binary): AST binary node to process
  
          Returns:
              Attribute: Returns resulting output attribute for node graph generated for this operation
docstring_summary: Generate Maya data for binary operation AST node
docstring_tokens: Generate Maya data for binary operation AST node
function: def generate_binary(self, ast):
          """Generate Maya data for binary operation AST node
  
          Args:
              ast (Binary): AST binary node to process
  
          Returns:
              Attribute: Returns resulting output attribute for node graph generated for this operation
          """
          # recursively generate the left and right operands
          left = self.generate(ast.left)
          right = self.generate(ast.right)
  
          left_type, right_type = self.resolve_operand_types(ast.value, left, right)
  
          operator_node_base_type = FUNCTIONS[ast.value]['name']
          operator_node_name = self._namer.get_name(operator_node_base_type)
          operator_node_type = operator_node_base_type.format(TYPE_SUFFIX_PER_TYPE[left_type])
          if left_type != right_type:
              operator_node_type += 'By{0}'.format(TYPE_SUFFIX_PER_TYPE[right_type])
  
          operator_node_type = self.validate_node_type(operator_node_type, '"{0} {1} {2}"'.format(left_type, ast.value, right_type))
          self._nodes.append((operator_node_type, operator_node_name))
  
          self.set_node_values('{0}.input1'.format(operator_node_name), left)
          self.set_node_values('{0}.input2'.format(operator_node_name), right)
  
          attr_type = self.get_attribute_type('output', operator_node_type)
          return Attribute(attr_type, '{0}.output'.format(operator_node_name))
function_tokens: def generate_binary ( self , ast ) : # recursively generate the left and right operands left = self . generate ( ast . left ) right = self . generate ( ast . right ) left_type , right_type = self . resolve_operand_types ( ast . value , left , right ) operator_node_base_type = FUNCTIONS [ ast . value ] [ 'name' ] operator_node_name = self . _namer . get_name ( operator_node_base_type ) operator_node_type = operator_node_base_type . format ( TYPE_SUFFIX_PER_TYPE [ left_type ] ) if left_type != right_type : operator_node_type += 'By{0}' . format ( TYPE_SUFFIX_PER_TYPE [ right_type ] ) operator_node_type = self . validate_node_type ( operator_node_type , '"{0} {1} {2}"' . format ( left_type , ast . value , right_type ) ) self . _nodes . append ( ( operator_node_type , operator_node_name ) ) self . set_node_values ( '{0}.input1' . format ( operator_node_name ) , left ) self . set_node_values ( '{0}.input2' . format ( operator_node_name ) , right ) attr_type = self . get_attribute_type ( 'output' , operator_node_type ) return Attribute ( attr_type , '{0}.output' . format ( operator_node_name ) )