Top level parsing function.

        An expression is <keyword> <OR> <expr>
        or               <keyword> <SEP> <expr>
        or               <keyword>

def expr(self, token_stream, token):
        """Top level parsing function.

        An expression is <keyword> <OR> <expr>
        or               <keyword> <SEP> <expr>
        or               <keyword>

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