code: def p_expression_subsetlist(self, p):
          ''' expression    :   expression SUBSET lexp 
          '''
          _LOGGER.debug("expresion -> expresion SUBSET lexp")
      
          if p[1].type != TypedClass.LIST: raise TypeError("lists expected for SUBSET operator")
          if p[3].type != TypedClass.LIST: raise TypeError("lists expected for SUBSET operator")
          
          retval = True
          for vl in p[1].value:
              found = False
              for vr in p[3].value:
                  if vl == vr:
                      found = True
                      break
              if not found:
                  retval = False
                  break
          
          p[0] = TypedClass(retval, TypedClass.BOOLEANf p_expression_subsetlist(self, p):
          ''' expression    :   expression SUBSET lexp 
          '''
          _LOGGER.debug("expresion -> expresion SUBSET lexp")
      
          if p[1].type != TypedClass.LIST: raise TypeError("lists expected for SUBSET operator")
          if p[3].type != TypedClass.LIST: raise TypeError("lists expected for SUBSET operator")
          
          retval = True
          for vl in p[1].value:
              found = False
              for vr in p[3].value:
                  if vl == vr:
                      found = True
                      break
              if not found:
                  retval = False
                  break
          
          p[0] = TypedClass(retval, TypedClass.BOOLEAN)
docs: expression    :   expression SUBSET lexp