'Consumes a ( or { character.
Returns the number of charactes consumed. (Does not update
self.offset)'

def parse_opener(self):

    assert (self.formula[self.offset] in ('(', '{'))
    if (self.formula[self.offset] == '{'):
        self.assert_empty_token()
        token = Token.make_subexp('{')
    elif self.token:
        token_value = (''.join(self.token) + '(')
        del self.token[:]
        token = Token.make_subexp(token_value)
    else:
        token = Token.make_subexp('(')
    self.items.append(token)
    self.token_stack.append(token)
    return 1
