code: def generate_random(grammar=E_, s='S'):
      
      import random
  
      def rewrite(tokens, into):
          for token in tokens:
              if token in grammar.rules:
                  rewrite(random.choice(grammar.rules[token]), into)
              elif token in grammar.lexicon:
                  into.append(random.choice(grammar.lexicon[token]))
              else:
                  into.append(token)
          return into
  
      return ' '.join(rewrite(s.split(), []))
docs: Replace each token in s by a random entry in grammar (recursively).
      This is useful for testing a grammar, e.g. generate_random(E_)