'This method is intended to be overridden for logics that
use different operators or expressions'

def handle(self, tok, context):

    if (tok in DrtTokens.NOT_LIST):
        return self.handle_negation(tok, context)
    elif (tok in DrtTokens.LAMBDA_LIST):
        return self.handle_lambda(tok, context)
    elif (tok == DrtTokens.OPEN):
        if (self.inRange(0) and (self.token(0) == DrtTokens.OPEN_BRACKET)):
            return self.handle_DRS(tok, context)
        else:
            return self.handle_open(tok, context)
    elif (tok.upper() == DrtTokens.DRS):
        self.assertNextToken(DrtTokens.OPEN)
        return self.handle_DRS(tok, context)
    elif self.isvariable(tok):
        if (self.inRange(0) and (self.token(0) == DrtTokens.COLON)):
            return self.handle_prop(tok, context)
        else:
            return self.handle_variable(tok, context)
