docs: def p_statement_notexpr(self, p):
          ''' expression  : NOT expression
                          | '!' expression
          '''
          _LOGGER.debug("expresion -> ! expression")
          if p[2].type == TypedClass.BOOLEAN: 
              p[0] = TypedClass(not p[2].value, TypedClass.BOOLEAN)
          else:
              raise TypeError("operator invalid for this type")