class_docstr: This is the central parsing class Jinja uses.  It's passed to
  extensions and can be used to parse expressions or statements.
class_docstr_tok: ["This","is","the","central","parsing","class","Jinja","uses",".","It","'s","passed","to","extensions","and","can","be","used","to","parse","expressions","or","statements","."]
code: def parse_with(self) -> nodes.With:
      node = nodes.With(lineno=next(self.stream).lineno)
      targets: t.List[nodes.Expr] = []
      values: t.List[nodes.Expr] = []
      while self.stream.current.type != "block_end":
          if targets:
              self.stream.expect("comma")
          target = self.parse_assign_target()
          target.set_ctx("param")
          targets.append(target)
          self.stream.expect("assign")
          values.append(self.parse_expression())
      node.targets = targets
      node.values = values
      node.body = self.parse_statements(
          ("name:endwith",), drop_needle=True
      )
      return node
  
imports: import typing
  import typing
  from .None import nodes
  from .exceptions import TemplateAssertionError
  from .exceptions import TemplateSyntaxError
  from .lexer import describe_token
  from .lexer import describe_token_expr
label_desc: Use image node_id 13 for calling the Parser obj's underlying member method code with example usage: obj.parse_with() and returns: node