parameters: (self)
return_statement: return rv
docstring: Production: test ( '&&' and_cond ) ?
docstring_summary: Production: test ( '&&' and_cond ) ?
docstring_tokens: Production : test ( && and_cond ) ?
function: def __get_logical_and(self):
          """
          Production: test ( '&&' and_cond ) ?
          """
          if not len(self.content):
              return None
          rv = Expression.__AST("logical_op")
          # test
          rv.append(self.__get_equality())
          self.__ignore_whitespace()
          if self.content[:2] != '&&':
              # no logical op needed, short cut to our prime element
              return rv[0]
          # append operator
          rv.append(Expression.__ASTLeaf('op', self.content[:2]))
          self.__strip(2)
          self.__ignore_whitespace()
          rv.append(self.__get_logical_and())
          self.__ignore_whitespace()
          return rv
function_tokens: def __get_logical_and ( self ) : if not len ( self . content ) : return None rv = Expression . __AST ( "logical_op" ) # test rv . append ( self . __get_equality ( ) ) self . __ignore_whitespace ( ) if self . content [ : 2 ] != '&&' : # no logical op needed, short cut to our prime element return rv [ 0 ] # append operator rv . append ( Expression . __ASTLeaf ( 'op' , self . content [ : 2 ] ) ) self . __strip ( 2 ) self . __ignore_whitespace ( ) rv . append ( self . __get_logical_and ( ) ) self . __ignore_whitespace ( ) return rv