expression  : NOT expression
                        | '!' expression

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")