code: def getSequence(self, level=0):
          '''Get a sequence of nodes.'''
          seq = []
          op = ''
          left_operand = None
          right_operand = None
          sequence_closed = False
          while True:
              c = self.next()
              if not c:
                  break
              if c and c not in self.meta_chars:
                  seq.append(self.getLiteral())
              elif c and c == u'$' and self.lookahead() == u'{':
                  seq.append(self.getSource())
              elif c == u'[' and not self.last() == u'\\':
                  seq.append(self.getCharacterSet())
              elif c == u'(' and not self.last() == u'\\':
                  seq.append(self.getSequence(level + 1))
              elif c == u')' and not self.last() == u'\\':
                  if level == 0:
                      raise StringGenerator.SyntaxError(u"Extra closing parenthesis")
                  sequence_closed = True
                  break
              elif c == u'|' and not self.last() == u'\\':
                  op = c
              elif c == u'&' and not self.last() == u'\\':
                  op = c
              else:
                  if c in self.meta_chars and not self.last() == u"\\":
                      raise StringGenerator.SyntaxError(u"Un-escaped special character: %s" % c)
              if op and not left_operand:
                  if not seq or len(seq) < 1:
                      raise StringGenerator.SyntaxError(u"Operator: %s with no left operand" % op)
                  left_operand = seq.pop()
              elif op and len(seq) >= 1 and left_operand:
                  right_operand = seq.pop()
                  if op == u'|':
                      seq.append(StringGenerator.SequenceOR([left_operand, right_operand]))
                  elif op == u'&':
                      seq.append(StringGenerator.SequenceAND([left_operand, right_operand]))
                  op = u''
                  left_operand = None
                  right_operand = None
          if op:
              raise StringGenerator.SyntaxError(u"Operator: %s with no right operand" % op)
          if level > 0 and not sequence_closed:
              raise StringGenerator.SyntaxError(u"Missing closing parenthesis")
          return StringGenerator.Sequence(seq)