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","."]
docstr: Like fail_unknown_tag but for end of template situations.
code: def fail_eof(
      self,
      end_tokens: t.Optional[t.Tuple[str, ...]] = None,
      lineno: t.Optional[int] = None,
  ) -> "te.NoReturn":
      """Like fail_unknown_tag but for end of template situations."""
      stack = list(self._end_token_stack)
      if end_tokens is not None:
          stack.append(end_tokens)
      self._fail_ut_eof(None, stack, lineno)
  
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 5 for calling the Parser obj's underlying member method code with example usage: obj.fail_eof(end_tokens, lineno) without return types