code: def visitEbnfSuffix(self, ctx: jsgParser.EbnfSuffixContext):
          
          self._ebnftext = ctx.getText()
          if ctx.INT():
              self.min = int(ctx.INT(0).getText())
              if ctx.COMMA():
                  if len(ctx.INT()) > 1:
                      self.max = int(ctx.INT(1).getText())
                  else:
                      self.max = None
              else:
                  self.max = self.min
          elif ctx.QMARK():
              self.min = 0
              self.max = 1
          elif ctx.STAR():
              self.min = 0
              self.max = None
          elif ctx.PLUS():
              self.min = 1
              self.max = None
          else:
              raise NotImplementedError("Unknown ebnf construct: {}".format(self._ebnftext))
docs: ebnfSuffix: QMARK | STAR | PLUS | OBRACE INT (COMMA (INT|STAR)?)? CBRACE