code: def expr(self, token_stream, token):
          
          lval = self.keyword(token_stream, token, {})
          token = next(token_stream)
          if token[0] == 'OR':
              op = or_
              token = next(token_stream)
          elif token[0] == 'TEXT' or token[0] == 'COLOR':
              op = lambda l, r: list(flatten([l, r]))
          elif token[0] == 'SEPARATOR':
              op = lambda l, r: list(flatten([l, r]))
              token = next(token_stream)
          else:
              return [lval]
          rval = self.expr(token_stream, token)
          return op(lval, rval)
docs: Top level parsing function.
  
          An expression is <keyword> <OR> <expr>
          or               <keyword> <SEP> <expr>
          or               <keyword>