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

Class V8GNTransformer

deps/v8/tools/cppgc/gen_cmake.py:91–210  ·  view source on GitHub ↗

Traverse GN parse-tree and build resulting object.

Source from the content-addressed store, hash-verified

89
90
91class V8GNTransformer(object):
92 """
93 Traverse GN parse-tree and build resulting object.
94 """
95 def __init__(self, builder, filtered_targets):
96 self.builder = builder
97 self.filtered_targets = filtered_targets
98 self.current_target = None
99
100 def Traverse(self, tree):
101 self.builder.BuildPrologue()
102 self.TraverseTargets(tree)
103 self.builder.BuildEpilogue()
104
105 def TraverseTargets(self, tree):
106 'Traverse top level GN targets and call the builder functions'
107 for stmt in tree.children:
108 if stmt.data != 'call':
109 continue
110 target_type = stmt.children[0]
111 if target_type not in V8_TARGET_TYPES:
112 continue
113 target = stmt.children[1].children[0].strip('\"')
114 if target not in self.filtered_targets:
115 continue
116 self.current_target = target
117 self._Target(target_type, target, stmt.children[2].children)
118
119 def _Target(self, target_type, target, stmts):
120 stmts = self._StatementList(stmts)
121 return self.builder.BuildTarget(target_type, target, stmts)
122
123 def _StatementList(self, stmts):
124 built_stmts = []
125 for stmt in stmts:
126 built_stmts.append(self._Statement(stmt))
127 return [stmt for stmt in built_stmts if stmt]
128
129 def _Statement(self, stmt):
130 # Handle only interesting gn statements.
131 with suppress(KeyError):
132 return self.STATEMENTS[stmt.data](self, *stmt.children)
133
134 def _Assignment(self, left, op, right):
135 return self.ASSIGN_TYPES[op.data](self, left, right)
136
137 def _AssignEq(self, left, right):
138 if left == 'sources':
139 return self.builder.BuildSourcesList(
140 self.current_target, [str(token) for token in right.children])
141
142 def _AssignAdd(self, left, right):
143 if left == 'sources':
144 return self.builder.BuildAppendSources(
145 self.current_target, [str(token) for token in right.children])
146
147 def _AssignSub(self, left, right):
148 if left == 'sources':

Callers 2

_CompileMethod · 0.90
GenCMakeFunction · 0.85

Calls

no outgoing calls

Tested by 1

_CompileMethod · 0.72