code: def application(self, func):
          start = self.tokens.matched.start
          if self.tokens.accept(common_grammar.rparen):
              return ast.Apply(func, start=start, end=self.tokens.matched.end,
                               source=self.original)
          arguments = [self.expression()]
          while self.tokens.accept(common_grammar.comma):
              arguments.append(self.expression())
          self.tokens.expect(common_grammar.rparen)
          return ast.Apply(func, *arguments, start=start,
                           end=self.tokens.matched.end, source=self.original)