MCPcopy Create free account
hub / github.com/nodejs/node / Parser

Class Parser

deps/v8/third_party/jinja2/parser.py:46–1032  ·  view source on GitHub ↗

This is the central parsing class Jinja uses. It's passed to extensions and can be used to parse expressions or statements.

Source from the content-addressed store, hash-verified

44
45
46class Parser:
47 """This is the central parsing class Jinja uses. It's passed to
48 extensions and can be used to parse expressions or statements.
49 """
50
51 def __init__(
52 self,
53 environment: "Environment",
54 source: str,
55 name: t.Optional[str] = None,
56 filename: t.Optional[str] = None,
57 state: t.Optional[str] = None,
58 ) -> None:
59 self.environment = environment
60 self.stream = environment._tokenize(source, name, filename, state)
61 self.name = name
62 self.filename = filename
63 self.closed = False
64 self.extensions: t.Dict[
65 str, t.Callable[["Parser"], t.Union[nodes.Node, t.List[nodes.Node]]]
66 ] = {}
67 for extension in environment.iter_extensions():
68 for tag in extension.tags:
69 self.extensions[tag] = extension.parse
70 self._last_identifier = 0
71 self._tag_stack: t.List[str] = []
72 self._end_token_stack: t.List[t.Tuple[str, ...]] = []
73
74 def fail(
75 self,
76 msg: str,
77 lineno: t.Optional[int] = None,
78 exc: t.Type[TemplateSyntaxError] = TemplateSyntaxError,
79 ) -> "te.NoReturn":
80 """Convenience method that raises `exc` with the message, passed
81 line number or last line number as well as the current name and
82 filename.
83 """
84 if lineno is None:
85 lineno = self.stream.current.lineno
86 raise exc(msg, lineno, self.name, self.filename)
87
88 def _fail_ut_eof(
89 self,
90 name: t.Optional[str],
91 end_token_stack: t.List[t.Tuple[str, ...]],
92 lineno: t.Optional[int],
93 ) -> "te.NoReturn":
94 expected: t.Set[str] = set()
95 for exprs in end_token_stack:
96 expected.update(map(describe_token_expr, exprs))
97 if end_token_stack:
98 currently_looking: t.Optional[str] = " or ".join(
99 map(repr, map(describe_token_expr, end_token_stack[-1]))
100 )
101 else:
102 currently_looking = None
103

Callers 2

_parseMethod · 0.70
compile_expressionMethod · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected