def grammar(self, text):
    """grammar = {comment} , rule , {comment | rule} ;"""
    self._attempting(text)
    return concatenation([
      zero_or_more(
        self.comment,
        ignore_whitespace=True
      ),
      self.rule,
      zero_or_more(
        alternation([
          self.comment,
          self.rule,
        ]),
        ignore_whitespace=True
      ),
    ], ignore_whitespace=True)(text).retyped(TokenType.grammar)