code: def keyword(self, token_stream, token, operators):
          
          if token[0] == 'TEXT' or token[0] == 'COLOR':
              return SearchKeyword(token[1], **operators)
          elif token[0] == 'COMPARISON':
              operators['comparison'] = token[1]
          elif token[0] == 'NOT':
              operators['boolean'] = 'not'
          else:
              if token[1] == None:
                  problem = 'end of input.'
              else:
                  problem = 'token {0} in input'.format(token[1])
              raise SyntaxError('Unexpected {0}'.format(problem))
          token = next(token_stream)
          return self.keyword(token_stream, token, operators)
docs: Lowest level parsing function.
  
          A keyword consists of zero or more prefix operators (NOT, or
          COMPARISON) followed by a TEXT, COLOR, or NUMBER block.